README
Wowza WebRTC Player
Easy to use WebRTC Player library to connect to Wowza Media Server.
Why use this fork?
I've added workaround for these errors.
Property 'on' does not exist on type 'PeerConnection'. Property 'emit' does not exist on type 'PeerConnection'.
That's it!
🚀 Installation
Install with yarn:
$ yarn add @nutbutterfly/wowza-webrtc-player
Or install using npm:
$ npm i @nutbutterfly/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
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" ) |
constrains | 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' } |
userData | Object / null |
Can be used to send data to Wowza (to handle authentification or other stuffs) |