npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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.

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