rtc-detect

1.0.3 • Public • Published

rtc-detect

rtc-detect is used to detect whether the current environment is working smoothly in WebRTC application built by TRTC SDK.

NPM version NPM downloads trtc.js Documents Stars

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:

  1. If hardware acceleration is enabled, this API will take about 2 seconds on Windows and 10 seconds on macOS.
  2. 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.

Package Sidebar

Install

npm i rtc-detect

Weekly Downloads

235

Version

1.0.3

License

ISC

Unpacked Size

102 kB

Total Files

4

Last publish

Collaborators

  • anderlu
  • iriszhang