rtc-detect v1.0.3
rtc-detect is used to detect whether the current environment is working smoothly in WebRTC application built by TRTC SDK.
English | 简体中文
Introduction
rtc-detect is used to detect whether the current environment is working smoothly in WebRTC application built by TRTC SDK.
Install
npm install rtc-detectHow to use
import RTCDetect from 'rtc-detect';
// init
const detect = new RTCDetect();
// get detect result
const result = await detect.getReportAsync();
console.log('result is: ' + result);API
(async) isTRTCSupported()
This API is used to check whether the current environment supports TRTC.
const detect = new RTCDetect();
const data = await detect.isTRTCSupported();
if (data.result) {
console.log('current browser supports TRTC.')
} else {
console.log(`current browser does not support TRTC, reason: ${data.reason}.`)
}getSystem()
This API is used to get the current system environment parameters.
| Item | Type | Description |
|---|---|---|
| UA | string | user agent |
| OS | string | system |
| browser | object | browser infomation: { name, version } |
| displayResolution | object | resulution: { width, height } |
| getHardwareConcurrency | number | current device CPU core count |
const detect = new RTCDetect();
const result = detect.getSystem();getAPISupported()
This API is used to get the API support of the current environment.
| Item | Type | Description |
|---|---|---|
| isUserMediaSupported | boolean | whether to support getting user media from media device |
| isWebRTCSupported | boolean | whether to support WebRTC |
| isWebSocketSupported | boolean | whether to support WebSocket |
| isWebAudioSupported | boolean | whether to support WebAudio |
| isScreenCaptureAPISupported | boolean | whether to support getting media steam from screen |
| isCanvasCapturingSupported | boolean | whether to support getting media stream from canvas element |
| isVideoCapturingSupported | boolean | whether to support getting media stream from video element |
| isRTPSenderReplaceTracksSupported | boolean | whether to support not renegotiating with peerConnection when replacing track |
| isApplyConstraintsSupported | boolean | whether to support changing the resolution of the camera without re-calling getUserMedia |
const detect = new RTCDetect();
const result = detect.getAPISupported();(async) getDevicesAsync()
This API is used to get the available devices in the current environment.
| Item | Type | Description |
|---|---|---|
| hasWebCamPermissions | boolean | Whether the user camera data can be obtained |
| hasMicrophonePermission | boolean | Whether the user mic data can be obtained |
| cameras | array | A list of the user's camera devices, including information on the resolution of supported video streams, maximum aspect and maximum frame rate (maximum frame rate is not supported by some browsers) |
| microphones | array | A list of user mics |
| speakers | array | A list of user speakers |
CameraItem
| Item | Type | Description |
|---|---|---|
| deviceId | string | Device ID, which is usually unique and can be used to capture identifying devices |
| groupId | string | Group identifier, two devices have the same group identifier if they belong to the same physical device |
| kind | string | Camera device type: 'videoinput' |
| label | string | Label describing this device |
| resolution | object | Information about the camera's supported resolutions, maximum width and height, and maximum frame rate, eg: {maxWidth: 1280, maxHeight: 720, maxFrameRate: 30} |
DeviceItem
| Item | Type | Description |
|---|---|---|
| deviceId | string | Device ID, which is usually unique and can be used to capture identifying devices |
| groupId | string | Group identifier, two devices have the same group identifier if they belong to the same physical device |
| kind | string | Physical device type, eg: 'audioinput', 'audiooutput' |
| label | string | Label describing this device |
const detect = new RTCDetect();
const result = await detect.getDevicesAsync();(async) getCodecAsync()
This API is used to get the codec support of the current environment.
| Item | Type | Description |
|---|---|---|
| isH264EncodeSupported | boolean | whether to support h264 uplink |
| isH264DecodeSupported | boolean | whether to support h264 downlink |
| isVp8EncodeSupported | boolean | whether to support vp8 uplink |
| isVp8DecodeSupported | boolean | whether to support vp8 downlink |
const detect = new RTCDetect();
const result = await detect.getCodecAsync();(async) getReportAsync()
This API is used to get the detection report of the current environment.
| Item | Type | Description |
|---|---|---|
| system | object | same as getSystem() result |
| APISupported | object | same as getAPISupported() result |
| codecsSupported | object | same as getCodecAsync() result |
| devices | object | same as getDevicesAsync() result |
const detect = new RTCDetect();
const result = await detect.getReportAsync();(async) isHardWareAccelerationEnabled()
This API is used to check whether hardware acceleration is enabled on the Chrome browser.
Note: the implementation of this API depends on the native WebRTC API. We recommend you call this API for check after calling isTRTCSupported. The check can take up to 30 seconds as tested below:
- If hardware acceleration is enabled, this API will take about 2 seconds on Windows and 10 seconds on macOS.
- If hardware acceleration is disabled, this API will take about 30 seconds on both Windows and macOS.
const detect = new RTCDetect();
const data = await detect.isTRTCSupported();
if (data.result) {
const result = await detect.isHardWareAccelerationEnabled();
console.log(`is hardware acceleration enabled: ${result}`);
} else {
console.log(`hardware acceleration is disabled`)
}Changelog
Version 1.0.3 @2023.12.28
Improvement
Avoid the problem that navigator.mediaDevices has no method in some browsers.
Version 1.0.2 @2023.04.24
Improvement
Optimising the performance of certain Android devices.
Version 1.0.1 @2023.04.17
Improvement
- Optimising performance on Windows.
Version 1.0.0 @2023.03.17
Bug Fixed
- Fixed resource usage on Safari.
Version 0.0.5 @2022.02.11
Feature
- The
cameraobject obtained from thegetDevicesAsync()method has a newmaxFrameRateparameter indicating the maximum frame rate supported by the camera.
Version 0.0.4 @2021.09.06
Improvement
- Add reasons for detecting when WebRTC is not supported.
Version 0.0.3 @2021.08.09
Feature
- Added
isHardWareAccelerationEnable()method to detect if Chrome has hardware acceleration enabled.
Version 0.0.2 @2021.07.24
Improvement
- Optimize the naming of some parameters.
Version 0.0.1 @2021.07.13
- publish rtc-detect@0.0.1.