0.0.8 • Published 3 years ago

patrick-wowza-webrtc-player v0.0.8

Weekly downloads
3
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


🚀 Installation

Install with yarn:

$ yarn add wowza-webrtc-player

Or install using npm:

$ npm i 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)