Giter VIP home page Giter VIP logo

rtc-diagnostics's Introduction

Voice Diagnostics SDK

The Voice Diagnostics SDK provides functions to test input and output audio devices, and the functionality to test network bandwidth requirements towards Twilio’s servers.

This SDK requires the use of Twilio NTS to perform the network tests. Using NTS will incur charges as per NTS pricing.

Features

  • Input audio device tests include volume calculation
  • Output audio device tests are done by playing a sound file to the selected device
  • Bandwidth requirements tests

Prerequisites

  • A Twilio account. Sign up for free here
  • Node.js v10+
  • NPM v6+ (comes installed with newer Node versions)

Installation

Building the project locally

# Clone repository
git clone [email protected]:twilio/rtc-diagnostics.git
cd rtc-diagnostics

# Install dependencies
npm install

# Build the artifacts under dist folder
npm run build

NPM

You can install directly from npm.

npm install @twilio/rtc-diagnostics --save

Or install from a local directory.

npm install /local-path-to-repo/rtc-diagnostics

Using this method, you can import rtc-diagnostics like so:

import { testBitrate } from '@twilio/rtc-diagnostics';

Script tag

You can also include rtc-diagnostics.js directly in your web app using a <script> tag.

<script src="https://my-server-path/rtc-diagnostics.js"></script>

Using this method, rtc-diagnostics.js will set a browser global:

const { testBitrate } = Twilio.Diagnostics;

Usage

The following are examples for running tests. For more information, please refer to the API Docs

BitrateTest Example

import { testBitrate } from '@twilio/rtc-diagnostics';

const bitrateTest = testBitrate({
 iceServers: [{
   credential: 'bar',
   username: 'foo',
   urls: 'turn:global.turn.twilio.com:3478?transport=udp',
 }],
});

bitrateTest.on('bitrate', (bitrate) => {
 console.log(bitrate);
});

bitrateTest.on('error', (error) => {
 console.log(error);
});

bitrateTest.on('end', (report) => {
 console.log(report);
});

setTimeout(() => {
 bitrateTest.stop();
}, 10000);

See BitrateTest.Options for more information for how to obtain the urls values

InputTest Example

import { testInputDevice, InputTest } from '@twilio/rtc-diagnostics';

const outputDeviceTest = testInputDevice({
  deviceId: ...,
});

inputDeviceTest.on(InputTest.Events.Volume, (volume) => {
  console.log(volume);
});

inputDeviceTest.on(InputTest.Events.Error, (error) => {
  console.error(error);
});

inputDeviceTest.on(InputTest.Events.End, (report) => {
  console.log(report);
});

setTimeout(() => {
  inputDeviceTest.stop();
}, 10000);

OutputTest Example

import { testOutputDevice, OutputTest } from '@twilio/rtc-diagnostics';

const outputDeviceTest = testOutputDevice({
  deviceId: ...,
});

outputDeviceTest.on(InputTest.Events.Volume, (volume) => {
  console.log(volume);
});

outputDeviceTest.on(InputTest.Events.Error, (error) => {
  console.error(error);
});

outputDeviceTest.on(InputTest.Events.End, (report) => {
  console.log(report);
});

setTimeout(() => {
  outputDeviceTest.stop();
}, 10000);

Related

License

See LICENSE.md

rtc-diagnostics's People

Contributors

mhuynh5757 avatar charliesantos avatar ryan-rowland avatar twilio-ci avatar aymenn avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.