Wowza Media WebRTC Publisher

WebRTC Publisher configured for Wowza Media Server.

Advanced
Bitrate
Video Resolution (ideal)
Video Framerate (ideal)
Audio/Video Inputs
Video Input Source
Audio Input Source
Audio Output Source

PlayerCode: async function tokenService() { return new Promise((accept) => { accept("{{ WOWZA_TOKEN }}"); }); }

Clip: { "live": true, "sources": [ { "type": "application/webrtc", "src": "C6Lx6ku6FEXgKtt"} ] }

Advanced
Bitrate
Video Resolution (ideal)
Video Framerate (ideal)
Audio/Video Inputs
Video Input Source
Audio Input Source
Audio Output Source

Note: Not a live demo, server configuration is just for example. For live working example try the Dolby.io Publisher and Subscriber example. Or AWS Kinesis Publisher and Subscriber example.

WebRTC Publisher configuration for Wowza Media Server. Wowza Media Developer and full licence works with WebRTC.

Supplied is a custom example websocket signal server Wowza provider project for one to many and group call features.

Preferred codecs can be configured using the preferredCodecs config. For H264 wowza expects a level of baseline that needs to be filtered with 42e01f.

Configured is a custom publish token that is verified with the custom Wowza webrtc provider module using a configured shared secret.

Configured is a server side recording option for Wowza using a custom rest api http provider module. This is authenticated using the same publish token.

    <div class="flex w-full h-auto my-auto">
          <div id="wowza-publisher" class=""></div>
  </div>
  <script type="text/javascript">
  	var player = jwplayer("wowza-publisher").setup({
    "aspectratio": "16:9",
    "playbackRateControls": true,
    "plugins": {
        "../../js/webrtcpeakmeter.js": {},
        "../../js/webrtcpublisher.js": {
            "applicationName": "webrtc",
            "autoStartDevice": true,
            "debug": true,
            "floatedControls": false,
            "maxDeviceDimensions": false,
            "maxHeight": 720,
            "maxWidth": 1280,
            "publishToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ3ZWJydGMifQ.MjehxjweF5tPPqUJQjHEHdHLz4sjaXkTkJh0dkM8w9_M5PMKoyzUJZPYyYtgT1qn17eDZlUOUeIeyr37z-KhN1u66L2ScVCwvs0dBjf6s2ZSIw0shvKmCdq7u5bd5llWTY0FDbbtFA1l60CkfOsTd0_dQpeyKm3Y94XgIaPyJB_PCCezO8V1xmcyMT1aqPfwr99AmM8s_P_8nuDL6A1HHppImwZL550AnTjuPQaAMRSVSNuzlLrwFXBA1SRaKOa2AVkIzP0tYkqWCYd03Gvn_CpxZ5dhk5s4UYSoYeK2FX4nz4khn_k8loFO-vDu2M-1r7dvFXnt8iNYWGTzDxPNuQ",
            "publisher": true,
            "recording": {
                "codec": "VP9",
                "mimeType": "video/webm",
                "name": "C6Lx6ku6FEXgKtt",
                "server": true
            },
            "server": "wowza",
            "serverURL": "rtc.electroteque.org",
            "toggleScreen": true,
            "tokenService": "tokenService",
            "userData": {
                "param1": "value1"
            }
        }
    },
    "sources": [
        {
            "appName": "webrtc",
            "file": "C6Lx6ku6FEXgKtt",
            "live": true,
            "publisher": true,
            "type": "mp4"
        }
    ],
    "width": "100%"
});

async function tokenService() {
return new Promise((accept) => {
accept("eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ3ZWJydGMifQ.MjehxjweF5tPPqUJQjHEHdHLz4sjaXkTkJh0dkM8w9_M5PMKoyzUJZPYyYtgT1qn17eDZlUOUeIeyr37z-KhN1u66L2ScVCwvs0dBjf6s2ZSIw0shvKmCdq7u5bd5llWTY0FDbbtFA1l60CkfOsTd0_dQpeyKm3Y94XgIaPyJB_PCCezO8V1xmcyMT1aqPfwr99AmM8s_P_8nuDL6A1HHppImwZL550AnTjuPQaAMRSVSNuzlLrwFXBA1SRaKOa2AVkIzP0tYkqWCYd03Gvn_CpxZ5dhk5s4UYSoYeK2FX4nz4khn_k8loFO-vDu2M-1r7dvFXnt8iNYWGTzDxPNuQ");
});
}
  </script>