rtc-detect
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-detect
How to use
import RTCDetect from 'rtc-detect';
const detect = new RTCDetect();
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
camera
object obtained from the getDevicesAsync()
method has a new maxFrameRate
parameter 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.