Skip to content

WebRTC player for Wowza live video streaming platform

License

Notifications You must be signed in to change notification settings

koala-interactive/wowza-webrtc-player

Repository files navigation

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();


Access/Update mediaStream

const stream = player.getMediaStream();

player.attachStream(newStream);

Extends/Replace SDP Mungle

player.setConfigurations({
  sdpHandler(sdp, originalHandler, type) {
    if (type === 'play') {
      // update sdp
      return originalHandler(sdp);
    } else if (type === 'publish') {
      // update sdp
      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

Key Type
applicationName string Your wowza app name ("live" or "webrtc" in Wowza documentation).
streamName string Your Wowza stream name ("myStream" in Wowza documentation)
sdpUrl string Your Wowza websocket secured url (should looks like "wss://zeezzrezrezr.streamlock.net/webrtc-session.json")
constraints MediaStreamConstraints { video: true, audio: true }
iceServers RTCIceServer List of your ICE server to connect to
videoConfigs Object { bitRate:360, codec:'VP8', frameRate: 29.97 }
audioConfigs Object { bitRate:64, codec:'opus' }
secureToken Object / null {"hash":"YOURHASHEDSECRET","starttime":0,"endtime":0}
userData Object / null Can be used to send data to Wowza