0.0.13 • Published 3 years ago

@towerism/wowza-webrtc-player v0.0.13

Weekly downloads
18
License
MIT
Repository
github
Last release
3 years ago

Wowza WebRTC Player

Easy to use WebRTC Player library to connect to Wowza Media Server.

license: MIT lint

Forked from koala-interactive/wowza-webrtc-player

Why was this forked? Will it be merged upstream

For the purposes of the organization I work for, we forked the upstream repo because it did not support our version of typescript. Additionally, the upstream repo did not support other browsers besides chrome that well for our purposes. Anyone is free at anytime to take patches from this repo and use them to create patches for upstream. However, at the moment we have no intention of merging anything upstream.


🚀 Installation

Install with yarn:

$ yarn add @towerism/wowza-webrtc-player

Or install using npm:

$ npm i @towerism/wowza-webrtc-player

Base code

To works, we need to create a WowzaWebRTCPlayer instance bound to a HTML5 video element. The second parameters allows you to set different options. You can change it later using player.setConfigurations(options).

import { WowzaWebRTCPlayer } from 'wowza-webrtc-player';

const videoElement = document.querySelector('video');
const player = new WowzaWebRTCPlayer(videoElement, {
  sdpUrl: 'wss://zeezzrezrezr.streamlock.net/webrtc-session.json',
  applicationName: 'webrtc',
  streamName: 'myStream',
});

As a publisher

1. Play the camera locally.

It will ask for browser permission, and connect your camera to the video element.

await player.playLocal();

2. Publish video to Wowza

await player.publish();

3. Stop publishing the flux (but camera still active)

await player.stop();

4. Stop the camera (and also stop publishing the flux)

await player.stopLocal();

As a Viewer

1. Read the remote flux

await player.playRemote();

2. Stop it

await player.stop();

Extends/Replace SDP Mungle

player.setConfigurations({
  sdpHandler(sdp, originalHandler) {
    return originalHandler(sdp);
  },
});

Get Wowza running streams

It need to be enabled in your Wowza server.

const streams = await player.getAvailableStreams();

streams.forEach((stream) => {
  console.log(
    stream.streamName,
    stream.codecAudio,
    stream.codecVideo,
    stream.readyAudio,
    stream.readyVideo
  );
});

Options

KeyType
applicationNamestringYour wowza app name ("live" or "webrtc" in Wowza documentation).
streamNamestringYour Wowza stream name ("myStream" in Wowza documentation)
sdpUrlstringYour Wowza websocket secured url (should looks like "wss://zeezzrezrezr.streamlock.net/webrtc-session.json")
constrainsMediaStreamConstraints{ video: true, audio: true }
iceServersRTCIceServerList of your ICE server to connect to
videoConfigsObject{ bitRate:360, codec:'VP8', frameRate: 29.97 }
audioConfigsObject{ bitRate:64, codec:'opus' }
userDataObject / nullCan be used to send data to Wowza (to handle authentification or other stuffs)
0.0.13

3 years ago

0.0.11

3 years ago

0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago