@dolbyio/webrtc-stats
Version:
Dolby OptiView WebRTC Statistics
148 lines (103 loc) • 3.87 kB
Markdown
[](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/build-package.yml)
[](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/build-documentation.yml)
[](https://github.com/DolbyIO/web-webrtc-stats/actions/workflows/publish-package.yml)
[](https://www.npmjs.com/package/@dolbyio/webrtc-stats)
[](LICENSE)
This project is a library to use to parse WebRTC statistics.
Run the following npm command to install the package `@dolbyio/webrtc-stats` into your project:
```bash
npm install @dolbyio/webrtc-stats
```
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();
```
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 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();
```
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,
});
```
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
```
- [Millicast SDK](https://github.com/millicast/millicast-sdk)
- [js-logger](https://github.com/jonnyreeves/js-logger)
- [TypeDoc](https://typedoc.org)
- [Jest](https://jestjs.io/)