@dolbyio/webrtc-stats v0.4.0
Dolby.io WebRTC Statistics
This project is a library to use to parse WebRTC statistics.
Install this project
Run the npm command to install the package @dolbyio/webrtc-stats
into your project:
npm install @dolbyio/webrtc-stats --save
Use the library
Collection
A WebRTCStats
object needs to be created to start a WebRTC statistics collection. It requires some settings to configure how you want the collection to work.
interface WebRTCStatsOptions {
/**
* Function that will be called to retrieve the WebRTC statistics.
* @returns a {@link RTCStatsReport} object through a {@link Promise}.
*/
getStats: () => Promise<RTCStatsReport>;
/**
* Interval, in milliseconds, at which to collect the WebRTC statistics.
* Default is 1,000 ms (1 second).
*/
getStatsInterval?: number;
/**
* Include the raw statistics in the `stats` event.
* Default is `false`.
*/
includeRawStats?: boolean;
}
Create the collection object.
const collection = new WebRTCStats({
getStats: () => {
// Get the raw WebRTC statistics from the web browser
},
getStatsInterval: 1000,
includeRawStats: true,
});
Start the collection with the start()
function.
collection.start();
Stop the collection with the stop()
function.
collection.stop();
Events
After starting the collection, the stats
event is triggered when the WebRTC statistics have been collected and parsed. The event
object is of type OnStats.
collection.on('stats', (event) => {
console.log(event);
});
The error
event is triggered when an error happens during the collection or the parsing of the WebRTC statistics.
collection.on('error', (error) => {
console.error(error);
});
Examples
Dolby.io Real-time Streaming APIs
Example on how to start a statistics collection from the Dolby.io Real-time Streaming APIs.
import WebRTCStats from '@dolbyio/webrtc-stats';
import { Director, Publish } from '@millicast/sdk';
const PUBLISHER_TOKEN = '';
const STREAM_NAME = '';
const tokenGenerator = () =>
Director.getPublisher({
token: PUBLISHER_TOKEN,
streamName: STREAM_NAME,
});
const publisher = new Publish(STREAM_NAME, tokenGenerator);
// Publish the stream
const collection = new WebRTCStats({
getStatsInterval: 1000,
getStats: () => {
return publisher.webRTCPeer.getRTCPeer().getStats();
},
});
// The stats event is triggered after each interval has elapsed
collection.on('stats', (event) => {
// Triggered when the statistics have been parsed
console.log(event);
});
// Start the statistics collection
collection.start();
Dolby.io Communications APIs
Example on how to start a statistics collection from the Dolby.io Communications APIs.
import WebRTCStats from '@dolbyio/webrtc-stats';
import VoxeetSdk from '@voxeet/voxeet-web-sdk';
const collection = new WebRTCStats({
getStatsInterval: 1000,
getStats: async () => {
// See: https://docs.dolby.io/communications-apis/docs/js-client-sdk-conferenceservice#localstats
const webRTCStats = await VoxeetSDK.conference.localStats();
// Convert the WebRTCStats object to RTCStatsReport
const values = Array.from(webRTCStats.values())[0];
const map = new Map();
for (let i = 0; i < values.length; i++) {
const element = values[i];
map.set(element.id, element);
}
return map;
},
});
// The stats event is triggered after each interval has elapsed
collection.on('stats', (event) => {
// Triggered when the statistics have been parsed
console.log(event);
});
// Start the statistics collection
collection.start();
How to
Run tests:
npm run test
Create distribution package:
npm run build