WebRTC workflows in Wowza Streaming Engine

Wowza Streaming Engine™ media server software version 4.7.7 and later supports WebRTC streaming. This article describes the supported WebRTC functionality and workflows in Wowza Streaming Engine.

Note: In earlier versions of Wowza Streaming Engine (4.5.0.02 - 4.7.6), limited WebRTC functionality was supported as a preview technology. We recommend that you update to Wowza Streaming Engine 4.8.5 or later to capitalize on expanded functionality and enhanced reliability.

About WebRTC


Web Real-time Communication (WebRTC) is an open source project to enable real-time communication of audio, video, and data in web browsers and native apps. WebRTC is designed for peer-to-peer connections but includes fallbacks in case direct connections fail. Encryption is mandatory for WebRTC streams, so you must configure Wowza Streaming Engine to use secure sockets layer (SSL/TLS). 

With Wowza Streaming Engine, you can ingest and play WebRTC streams with all major desktop and mobile browsers that support WebRTC APIs. Supported browsers include the latest versions of Chrome, Firefox, and Safari, as well as Edge version 79 and later.

Wowza Streaming Engine supports the following codecs for WebRTC:

Video Audio
  • H.264
  • VP8
  • VP9
  • Opus (recommended)
  • Pulse Code Modulation (PCM) types PCMU and PCMA

WebRTC workflows in Wowza Streaming Engine


WebRTC ingest and output

As with any other protocol supported by Wowza Streaming Engine, the simplest workflow is to ingest a WebRTC stream and then deliver it to viewers in the same format. Note that WebRTC outputs can consume a lot of bandwidth.

Wowza Streaming Engine also supports source streams from RTSP, SRT, and RTMP encoders for playback over WebRTC.

One-to-few and few-to-few WebRTC broadcasts

You can ingest one or a few WebRTC streams and deliver them to a few viewers via WebRTC. As the number of connections grows, however, your performance may suffer.

One-to-many WebRTC broadcasts

When ingesting WebRTC streams that you want to deliver to many viewers, we recommend that you use the Transcoder feature in Wowza Streaming Engine to transcode the WebRTC stream (both audio and video) into any standard output format, such as AAC audio with H.264 video, for best results. Then you can deliver the stream over HLS or MPEG-DASH, which enables you to scale your WebRTC solution without the significant bandwidth that would otherwise be required to deliver your streams to viewers with satisfactory quality.

To scale your delivery to viewers, you can also use the Stream Targets feature to send the stream to content delivery networks (CDNs) and services such as Wowza Streaming Cloud. For more information about stream targets, see Distributing live streams. For more information about Wowza Streaming Cloud, see Scaling Wowza Streaming Engine with Wowza CDN.

Notes:
  • Wowza Streaming Engine only supports audio and video streaming via WebRTC. Support for a data channel, commonly used for text-based chat in WebRTC, hasn't been implemented.
  • For Mozilla Firefox, Wowza Streaming Engine only supports WebRTC over UDP. WebRTC sessions over TCP aren't supported.
  • To send a WebRTC stream from Wowza Streaming Engine to a Wowza CDN endpoint, you must transcode it to RTMP or Apple HLS. Which protocol you should use depends on how you configure the Wowza CDN endpoint.
  • If you transcode a WebRTC stream for adaptive bitrate playback over MPEG-TS HLS, you must transcode both the audio and video codecs.

More resources