rtc-detect
v1.0.3
Published
rtc-detect
Downloads
2,165
Readme
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-detect
How 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
camera
object obtained from thegetDevicesAsync()
method has a newmaxFrameRate
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 [email protected].