# test-open-blah

> ![Nx Meta Logo](https://meta.nxvms.com/static/images/logo.png)

Latest version **0.1.4** (published 2023-03-25) · MPL-2.0 license · 0 weekly downloads

## Install

```sh
npm install test-open-blah
pnpm add test-open-blah
yarn add test-open-blah
bun add test-open-blah
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.4 |
| Published | 2023-03-25 |
| First published | 2023-03-24 |
| Weekly downloads | 0 |
| License | MPL-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 42.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | chrisczach |

## Links

- npm: https://www.npmjs.com/package/test-open-blah
- npm.io page: https://npm.io/package/test-open-blah

## Recent versions

- 0.1.4 (latest) — 2023-03-25
- 0.1.3 — 2023-03-24
- 0.1.2 — 2023-03-24
- 0.1.1 — 2023-03-24
- 0.1.0 — 2023-03-24

## README

![Nx Meta Logo](https://meta.nxvms.com/static/images/logo.png)

# WebRTC Stream Manager ![License: MPL--2.0"](https://img.shields.io/badge/License-MPL--2.0-yellow.svg)

## What is `webrtc-stream-manager`?

This package simplifies playing back videos via `WebRTC` from `Nx Meta VMS` mediaservers versions 5.1 or later.

## What can it do?

The exported `WebRTCStreamManager` class handles establishing a WebRTC connection with the mediaserver. When initializing the connection, a video element could optionally be passed as an argument which would bind that element to the stream. The stream it itself is also exposed on the return `Observable` to allow flexibility.

The `WebRTCStreamManager` defaults to showing live but also allows for updating the playback position to play streams from archive. The playback position could also be updated; when the position is updated all `WebRTCStreamManager` instances playback positions are synced to the new time stamp.

## Usage

The `WebRTCStreamManager` class exposes a `connect` static method which is used to initialize a connection. Optionally it accepts a reference to a video element to automatically close the connection one the player is no longer on the DOM.

### Example webRtcUrlFactory function:

The `WebRTCStreamManager.connect` method takes as a first argument a function that returns the webrtc-tracker endpoint with auth.

The camera_id and auth query parameters are required, pos is optional.

```ts
// Could be a direct connection '{serverIp}:{port}` or a cloud relayed connection '{serverId}.{cloudSystemId}.{relayUrl}'
const serverUrl = 'Server url';
const cameraId = 'Camera id';
const auth = 'Auth key';
const position = 0; // Initial position

const webRtcUrlFactory = () =>
  `wss://${serverUrl}/webrtc-tracker?camera_id=${cameraId}&pos=${position}&auth=${auth}`;
```

### Example usage

The `connect` static method returns an observable emits streams and errors.

To update a video element to use that stream we set the `srcObject` to the stream if it exist.

To start autoplaying you can also set `muted` and `autoplay` to true.


#### Target element

```html
<video id="someTargetId" autoplay muted></video>
```

```ts
const videoElement = document.querySelector('video#someTargetId')
```

#### Initializing connection and setting video source

```ts
WebRTCStreamManager.connect(webRtcUrlFactory, videoElement).subscribe(([stream, error]) => {
  if (stream) {
    targetVideoElement.srcObject = stream;
    targetVideoElement.muted = true;
    targetVideoElement.autoplay = true;
  }

  if (error) {
    handleError(error)
  }
});
```

---
_Source: https://npm.io/package/test-open-blah · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
