UNPKG

@dolbyio/webrtc-stats

Version:
148 lines (103 loc) 3.87 kB
[![Build Package](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/build-package.yml/badge.svg)](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/build-package.yml) [![Build Documentation](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/build-documentation.yml/badge.svg)](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/build-documentation.yml) [![Publish Package](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/publish-package.yml/badge.svg)](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/publish-package.yml) [![npm](https://img.shields.io/npm/v/@dolbyio/webrtc-stats)](https://www.npmjs.com/package/@dolbyio/webrtc-stats) [![License](https://img.shields.io/github/license/DolbyIO/web-webrtc-stats)](LICENSE) # Dolby OptiView WebRTC Statistics This project is a library to use to parse WebRTC statistics. ## Install this project Run the following npm command to install the package `@dolbyio/webrtc-stats` into your project: ```bash npm install @dolbyio/webrtc-stats ``` ## 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. First, import the `WebRTCStats` definition. ```ts import { WebRTCStats } from '@dolbyio/webrtc-stats'; ``` Create the collection object like this example: ```ts 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. ```ts collection.start(); ``` Stop the collection with the `stop()` function. ```ts collection.stop(); ``` ### Events After starting the collection, the `stats` event is triggered when the WebRTC statistics have been collected and parsed. ```ts import { OnStats } from '@dolbyio/webrtc-stats'; collection.on('stats', (event: OnStats) => { console.log(event); }); ``` The `error` event is triggered when an error happens during the collection or the parsing of the WebRTC statistics. ```ts collection.on('error', (reason: string) => { console.error(reason); }); ``` ### Example Example on how to start a statistics collection from the [Dolby OptiView](https://docs.optiview.dolby.com/millicast/) SDK. ```ts import { WebRTCStats, OnStats } 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(undefined, tokenGenerator); // HERE: Publish a stream to Dolby OptiView 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: OnStats) => { console.log(event); }); // Start the statistics collection collection.start(); ``` ## Logs You can also print the logs in the console and select the log level by using the following code. ```ts import { Logger } from '@dolbyio/webrtc-stats'; Logger.useDefaults({ defaultLevel: Logger.TRACE, }); ``` ## How to Run tests: ```bash npm run test ``` Create distribution package: ```bash npm run build ``` The documentation is built on [TypeDoc](https://typedoc.org), to generate the doc, run the following command. You will find the HTML files in the `docs` folder. ```bash npm run docs ``` ## Related Projects - [Millicast SDK](https://github.com/millicast/millicast-sdk) - [js-logger](https://github.com/jonnyreeves/js-logger) - [TypeDoc](https://typedoc.org) - [Jest](https://jestjs.io/)