Understanding protocols and formats supported by Wowza Streaming Engine

Wowza Streaming Engine™ media server software delivers adaptive bitrate live and video-on-demand (VOD) streams to a variety of desktop browsers, mobile devices, players, set-top boxes, and smart TVs by using the streaming protocols and formats described in this article.

Supported streaming protocols 


HDS

Wowza Streaming Engine uses HTTP Dynamic Streaming (HDS) to deliver adaptive bitrate live and VOD streams to Adobe Flash Player 10.1 or later. HDS is a segment-based protocol that uses HTTP for delivery. Wowza Streaming Engine performs all of the segmenting and packaging necessary to deliver HDS streams by packetizing the content into segments that it calls chunks. HDS streaming is called "San Jose" streaming in Wowza Streaming Engine.

When streaming VOD content using HDS, Wowza Streaming Engine supports MP4 files (QuickTime container) and MP3 files. FLV files aren't supported.

Wowza Streaming Engine supports the following codecs for HDS:

Video Audio
  • H.264
  • (Live only) On2 VP6, Screen video, Screen video 2, and Sorenson Spark
  • AAC, AAC-LC, HE-AAC (AAC+ or aacPlus), and HE-AACv2 (enhanced AAC+, aacPlus v2)
  • MP3
  • (Live only) Speex

HDS streams are accessed at a playlist URL, which points to the XML manifest file that contains stream metadata and lists the segments that are available for streaming. An HDS playlist URL for a Wowza Streaming Engine stream has the format:

http://[wowza-ip-address]/[application]/[application-instance]/[stream-name]/manifest.f4m

Where:

  • [wowza-ip-address] is the IP address or domain and port of Wowza Streaming Engine (default port 1935)
  • [application] is the application name
  • [application-instance] is the name of the application instance (if omitted, defaults to _definst_)
  • [stream-name] is the stream name, with proper prefix and extension for VOD files (see Supported media file formats for VOD streaming, below)

For example, the HDS playlist URL for the VOD file mycoolvideo.mov from Wowza Streaming Engine at the address mycompany.com using the application myapplication is:

http://mycompany.com:1935/myapplication/mp4:mycoolvideo.mov/manifest.f4m

HDS playback requires a Flash-based player that's built using the Open Source Media Framework (OSMF). Wowza Streaming Engine installs two OSMF-based players that you can use to test HDS live and VOD streams. You can find them at:

  • [install-dir]/examples/LiveVideoStreaming/FlashHTTPPlayer/player.html
  • [install-dir]/examples/VideoOnDemandStreaming/FlashHTTPPlayer/player.html

HLS

Wowza Streaming Engine uses HTTP Live Streaming (HLS) to deliver adaptive bitrate live and VOD streams to iOS devices (iOS 3.0 or later); Wowza Player and QuickTime Player (version 10 or later); Safari (4.0 or later); Roku and Amino set-top boxes; and some smart TVs. HLS is a segment-based protocol that uses HTTP for delivery.

Wowza Streaming Engine can delivery three types of HLS streams: "Cupertino" HLS, CMAF HLS, and Low-Latency HLS.

"Cupertino" HLS

First, using the "Cupertino" packetizer (cupertinostreamingpacketizer), the original HLS packetizer in Wowza Streaming Engine, the server software packages the content into keyframe-aligned segments that it calls chunks. These segments use the MPEG-TS container format. Cupertino streaming, as it's called, can be used for both live and VOD streaming. Cupertino streaming uses HTTP/1.1 and supports the following codecs:

Video Audio
  • H.264
  • AAC, AAC-LC, and HE-AAC (AAC+ or aacPlus)
  • Dolby® Digital 5.1 Surround Sound (AC-3) and Dolby Digital Plus (Enhanced AC-3 or E-AC-3)
  • MP3

CMAF HLS

Alternatively, with Wowza Streaming Engine 4.7.8 and later you can use the CMAF packetizer (cmafstreamingpacketizer) to package HLS live streams that contain keyframe-aligned media segments wrapped in the fMP4 container format instead of the MEPG-TS container format. Like Cupertino streams, CMAF-packaged HLS streams are delivered to players over HTTP/1.1. However, in addition to using a different container format, CMAF-packaged HLS streams support slightly different codecs:

Video Audio
  • H.264, H.265 (preview)
  • AAC, AAC-LC, HE-AAC (AAC+ or aacPlus), HE-AACv2 (enhanced AAC+, aacPlus v2)
  • Dolby Digital 5.1 Surround Sound (AC-3) and Dolby Digital Plus (Enhanced AC-3 or E-AC-3)

Low-Latency HLS

Finally, the CMAF packetizer in Wowza Streaming Engine 4.7.8 and later can also produce Low-Latency HLS (LL-HLS) live streams, which can be played in native apps on devices running iOS 13. In addition to generating CMAF segments, the CMAF packetizer also generates smaller units of streaming media called chunks in the code base. These CMAF-compliant chunks also serve as partial segments for LL-HLS streaming. As a result, you can use the CMAF packetizer to generate LL-HLS streams whose segments (and partial segments) are wrapped in the fMP4 format and delivered to players over HTTP/2.

All HLS streams use a master playlist wrapper that includes stream metadata and references to the available segments. An HLS master playlist URL for a Wowza Streaming Engine stream has the format:

http://[wowza-ip-address]/[application]/[application-instance]/[stream-name]/playlist.m3u8

Where:

  • [wowza-ip-address] is the IP address or domain and port for Wowza Streaming Engine (default port 1935)
  • [application] is the application name
  • [application-instance] is the name of the application instance (if omitted, defaults to _definst_)
  • [stream-name] is the stream name, with proper prefix and extension for VOD files (see Supported media file formats for VOD streaming, below)

For example, the HLS playlist URL for the VOD file mycoolvideo.mov from Wowza Streaming Engine at the address mycompany.com using the application myapplication is:

http://mycompany.com:1935/myapplication/mp4:mycoolvideo.mov/playlist.m3u8

The playlist URL for an HLS live stream myStream from Wowza Streaming Engine at the address mycompany.com using the live application is:

http://mycompany.com:1935/live/myStream/playlist.m3u8

Wowza Streaming Engine installs two players that you can use to test Cupertino-packetized HLS live and VOD streams. You can find them at:

  • [install-dir]/examples/LiveVideoStreaming/IOSMacOSX/player.html
  • [install-dir]/examples/VideoOnDemandStreaming/IOSMacOSX/player.html

To test standard live CMAF-packetized HLS streams generated by Wowza Streaming Engine, use the Akamai HLS test player.

For more information about playing LL-HLS streams, see Deliver Low-Latency HLS live streams using Wowza Streaming Engine.

For more information about playing CMAF streams, see Manage CMAF playback from Wowza Streaming Engine.

Smooth Streaming

Wowza Streaming Engine uses Smooth Streaming to deliver adaptive bitrate live and VOD streams to Microsoft Silverlight players and Windows Phone devices. Smooth Streaming is a segment-based protocol from Microsoft that uses HTTP for delivery. Wowza Streaming Engine performs all of the segmenting and packaging necessary to deliver Smooth Streaming streams; a Microsoft IIS server isn't required.

Wowza Streaming Engine supports the following codecs for Smooth Streaming:

Video Audio
  • H.264
  • AAC, AAC-LC, HE-AAC (AAC+ or aacPlus), and HE-AACv2 (enhanced AAC+, aacPlus v2)
  • MP3

Smooth Streaming uses a manifest to describe the segments that are available for streaming. A Smooth Streaming manifest URL for playing a Wowza Streaming Engine stream has the format:

http://[wowza-ip-address]/[application]/[application-instance]/[stream-name]/Manifest

Where:

  • [wowza-ip-address] is the IP address or domain and port of Wowza Streaming Engine (default port 1935)
  • [application] is the application name
  • [application-instance] is the name of the application instance (if omitted, defaults to _definst_)
  • [stream-name] is the stream name, with proper prefix and extension for VOD files (see Supported media file formats for VOD streaming, below)

For example, the Smooth Streaming manifest URL for the VOD file mycoolvideo.mov from Wowza Streaming Engine at the address mycompany.com using the application myapplication is:

http://mycompany.com:1935/myapplication/mp4:mycoolvideo.mov/Manifest

Wowza Streaming Engine installs two Silverlight players that you can use to test Smooth Streaming live and VOD streams. You can find them at:

  • [install-dir]/examples/LiveVideoStreaming/SilverlightPlayer/player.html
  • [install-dir]/examples/VideoOnDemandStreaming/SilverlightPlayer/player.html

MPEG-DASH

Wowza Streaming Engine can deliver MPEG-DASH (Dynamic Adaptive Streaming over HTTP) adaptive bitrate live and VOD streams to players that support the MPEG-DASH protocol. MPEG-DASH is an ISO standard for streaming segment-based content over HTTP.

Wowza Streaming Engine provides two packetizers that perform all of the segmenting and packaging necessary to deliver MPEG-DASH streams. The first, mpegdashstreamingpacketizer, packetizes the content into keyframe-aligned segments that it calls chunks. These segments use the fMP4 container format. MPEG-DASH streaming can be used for both live and VOD streaming and supports the following codecs:

Video Audio
  • H.264, H.265 (preview)
  • AAC, AAC-LC, HE-AAC (AAC+ or aacPlus), HE-AACv2 (enhanced AAC+, aacPlus v2)
  • Dolby Digital 5.1 Surround Sound (AC-3) and Dolby Digital Plus (Enhanced AC-3 or E-AC-3)
  • (Wowza Streaming Engine 4.7.2.01 or later) MPEG-4 Audio Lossless Coding (ALS)

The cmafstreamingpacketizer packetizer in Wowza Streaming Engine 4.7.8 and later also segments and packages MPEG-DASH streams. CMAF streaming packetizes content into keyframe-aligned segments that use the fMP4 container format. The CMAF packetizer, which can only be used for live streams, supports the following codecs for MPEG-DASH:

Video Audio
  • H.264, H.265 (preview)
  • AAC, AAC-LC, HE-AAC (AAC+ or aacPlus), HE-AACv2 (enhanced AAC+, aacPlus v2)
  • Dolby Digital 5.1 Surround Sound (AC-3) and Dolby Digital Plus (Enhanced AC-3 or E-AC-3)

Note: Only one MPEG-DASH packetizer can be used in a Wowza Streaming Engine application. That means:

  • If  mpegdashstreamingpacketizer and cmafstreamingpacketizer are both defined, Wowza Streaming Engine ignores mpegdashstreamingpacketizer and uses cmafstreamingpacketizer.
  • Similarly, cmafstreamingpacketizer can't be used to deliver CMAF segments at the same time an application is delivering WebM-packaged segments.

Wowza Streaming Engine provides MPEG-DASH players with a list of available media segment URLs in a Media Presentation Description (.mpd) manifest file. An MPEG-DASH manifest (playback) URL for a Wowza Streaming Engine stream has the format:

http://[wowza-ip-address]/[application]/[application-instance]/[stream-name]/manifest.mpd

Where:

  • [wowza-ip-address] is the IP address or domain and port of Wowza Streaming Engine (default port 1935)
  • [application] is the application name
  • [application-instance] is the name of the application instance (if omitted, defaults to _definst_)
  • [stream-name] is the stream name, with proper prefix and extension for VOD files (see Supported media file formats for VOD streaming, below)

For example, the playback URL for the VOD file mycoolvideo.mov from Wowza Streaming Engine at the address mycompany.com using the application myapplication is:

http://mycompany.com:1935/myapplication/mp4:mycoolvideo.mov/manifest.mpd

The playback URL for an MPEG-DASH live stream myStream from Wowza Streaming Engine at the address mycompany.com using the live application is:

http://mycompany.com:1935/live/myStream/manifest.mpd

Wowza Streaming Engine installs two players that you can use to test MPEG-DASH live and VOD streams. You can find them at:

  • [install-dir]/examples/LiveVideoStreaming/MPEGDASHPlayer/player.html
  • [install-dir]/examples/VideoOnDemandStreaming/MPEGDASHPlayer/player.html

For information about optional MPEG-DASH manifest tokens, see MPD URL syntax. For more information about playing CMAF streams, see Manage CMAF playback from Wowza Streaming Engine.

RTMP

Wowza Streaming Engine can deliver adaptive bitrate live and VOD content to Adobe Flash Player using Real Time Messaging Protocol (RTMP).

Wowza Streaming Engine supports all video and audio formats that Flash Player supports:

Video Audio
  • H.264
  • On2 VP6
  • Sorenson Spark
  • Screen video and Screen video 2
  • AAC, AAC-LC, HE-AAC (AAC+ or aacPlus), HE-AACv2 (enhanced AAC+, aacPlus v2)
  • MP3
  • Speex
 

Important: Adobe will stop supporting Flash by the end of 2020, and Flash playback in some browsers requires manual configuration.

Wowza Streaming Engine and Adobe Flash Player communicate using a NetConnection object; content is streamed using a NetStream object. The NetConnection.connect method establishes a connection between Wowza Streaming Engine and Adobe Flash Player. It takes an RTMP playback URL in the format:

[protocol-method]://[wowza-ip-address]/[application]/[application-instance]

Where:

  • [protocol-method] is rtmp, rtmpe (encryption), rtmpt (tunneling), rtmpte (encryption and tunneling), or rtmps (tunneling over SSL)
  • [wowza-ip-address] is the IP address or domain and port of Wowza Streaming Engine (default port 1935)
  • [application] is the application name
  • [application-instance] is the name of the application instance (if omitted, defaults to _definst_)

For example, to connect to Wowza Streaming Engine at the address mycompany.com using the application myapplication, the URL to use in the NetConnection.connect method would be:

rtmp://mycompany.com/myapplication

The NetStream.play method starts streams. It takes a stream name as its first argument. For example, to play the file mycoolvideo.mov, you would use the stream name mp4:mycoolvideo.mov. Some players combine the server connection URL used in the NetConnection.connect method and the stream name used in the NetStream.play method into a single URL. This URL takes the format:

[protocol-method]://[wowza-ip-address]/[application]/[application-instance]/[stream-name]

For example, to connect to Wowza Streaming Engine at mycompany.com using the application myapplication to play mycoolvideo.mov, the URL would be:

rtmp://mycompany.com/myapplication/mp4:mycoolvideo.mov

RTMP streaming requires a Flash-based player that's built using the Open Source Media Framework (OSMF). Wowza Streaming Engine installs two OSMF-based players that you can use to test RTMP streams. You can find them at:

  • [install-dir]/examples/LiveVideoStreaming/FlashRTMPPlayer/player.html
  • [install-dir]/examples/VideoOnDemandStreaming/FlashRTMPPlayer/player.html

RTSP/RTP

Wowza Streaming Engine can deliver live H.264, AAC, and MP3 content to players and devices that support Real Time Streaming Protocol (RTSP), Real-time Transport Protocol (RTP), and MPEG-TS (transport stream). This includes QuickTime Player (version 10 or later), VideoLAN VLC player, set-top boxes, and 3GPP devices. Wowza Streaming Engine can also accept incoming streams from encoding devices over RTSP/RTP. Wowza Streaming Engine supports RTP and MPEG-TS input and output over UDP as well as multicast. In addition, Wowza Streaming Engine supports interleaved RTSP/RTP (RTP over the RTSP TCP connection) and RTSP/RTP tunneling (RTSP/RTP over HTTP), which enables RTSP/RTP to be delivered in network environments that don't allow UDP transmission.

An RTSP/RTP playback URL in Wowza Streaming Engine has the format:

rtsp://[wowza-ip-address]/[application]/[application-instance]/[stream-name]

Where:

  • [wowza-ip-address] is the IP address or domain and port of Wowza Streaming Engine (default port 1935)
  • [application] is the application name
  • [application-instance] is the name of the application instance (if omitted, defaults to _definst_)
  • [stream-name] is the stream name, with proper prefix and extension for VOD files (see Supported media file formats for VOD streaming, below)

For example, to play the live stream myStream from Wowza Streaming Engine at the address mycompany.com using the application live, the URL would be:

rtsp://mycompany.com:1935/live/myStream

SRT

Wowza Streaming Engine 4.7.3 and later supports MPEG-TS-based Secure Reliable Transport (SRT) in Linux and Windows server installations. A MediaCaster type enables live applications to ingest SRT source streams and make them available to all player technologies supported by Wowza Streaming Engine, and the generic SRT stream target enables you to deliver the SRT content directly to SRT destinations.

Wowza Streaming Engine supports the following codecs for SRT:

Video Audio
  • H.264, H.265 (preview)
  • VP8, VP9
  • AAC, AAC-LC, HE-AAC (AAC+ or aacPlus), HE-AACv2 (enhanced AAC+, aacPlus v2)
  • MP3, AC-3 (Dolby Digital)
  • E-AC-3 (Dolby Digital Plus)
  • ALS (LOAS)
  • Opus
  • Vorbis

An SRT playback URL in Wowza Streaming Engine has the format:

[protocol-method]://[wowza-ip-address]/[application]/[application-instance]/[stream-file-name].stream/[playback-protocol-playlist]

Where:

  • [wowza-ip-address] is the IP address or domain and port of Wowza Streaming Engine (default port 1935)
  • [application] is the application name
  • [application-instance] is the name of the application instance (if omitted, defaults to _definst_)
  • [stream-file-name] is the stream file name
  • [playback-protocol-playlist] is the playlist or manifest required by the playback protocol to be a valid playback URL

For example, to play the live SRT stream file srt.stream using HLS from Wowza Streaming Engine at the address mycompany.com and using the application myapplication, the URL would be:

http://mycompany.com:1935/myapplication/srt.stream/playlist.m3u8

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). 

WebRTC is still gaining adoption, so not all browsers and mobile platforms support it. With Wowza Streaming Engine, you can ingest and play WebRTC streams with Mozilla Firefox and Google Chrome browsers on the desktop. At this time, Wowza Streaming Engine doesn't support ingest or playback of WebRTC streams on mobile platforms or in a live repeater (origin/edge) configuration.

Wowza Streaming Engine supports the following codecs for WebRTC:

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

Note: Not all browsers support all codecs. H.264 is the most widely supported WebRTC codec, but for best performance we recommend using VP8 video with Opus or Vorbis audio.

For more information about playing WebRTC streams, see Play WebRTC streams from Wowza Streaming Engine.

Supported container formats for HLS and MPEG-DASH live streaming


A container format is a wrapper for segments of content that are delivered over HTTP-based streaming protocols. Wowza Streaming Engine supports two container formats for HLS and MPEG-DASH live streaming: fragmented MP4 and MPEG-TS.

Fragmented MP4

The ISO standards MPEG-DASH and CMAF, or Common Media Application Format, use the fragmented MP4 (fMP4) container format. The MPEG-DASH and CMAF packetizers in Wowza Streaming Engine (mpegdashstreamingpacketizer and cmafstreamingpacketizer, respectively) wrap stream segments in the fMP4 container format. HLS master playlists and MPEG-DASH manifests generated by the CMAF packetizer reference these fMP4 files and make them available to players when they request available segments for playback.

MPEG-TS

MPEG Transport Stream (MPEG-TS) is the container format defined in the MPEG-2 ISO standard. The Cupertino packetizer (cupertinostreamingpacketizer) in Wowza Streaming Engine wraps stream segments (what it calls chunks) in the MPEG-TS container format. The HLS master playlist generated by the Cupertino packetizer references these MPEG-TS files and makes them available to players when they request available segments for playback.

Supported media file formats for VOD streaming


Wowza Streaming Engine supports the MP4 (QuickTime container), FLV (Flash Video), MP3, and SMIL (Synchronized Multimedia Integration Language) media file formats. To play VOD content, the proper prefix and extensions must be appended to the file name to create a stream name. For example, to play the MP4 file mycoolvideo.mov, use the stream name mp4:mycoolvideo.mov.

Prefix Extension(s) Example
MP4 mp4: .mp4, .f4v, .mov, .m4a, .m4v, .mp4a, .mp4v, .3gp, .3g2 mp4:mycoolvideo.mov
MP3 mp3: .mp3 mp3:mycoolsong.mp3
SMIL smil: .smil smil:myStream.smil
FLV flv: .flv flv:mycoolvideo.flv
 
Note: MP4 (QuickTime container) is the default media type, so the file name prefix and extension can be omitted.

The media prefix also controls the file container that stores recorded live video. If mp4: or if no prefix is specified, the content is recorded to an MP4 (QuickTime) container. Only H.264, AAC, and MP3 content can be recorded to an MP4 container. If flv: is specified, an FLV (Flash Video) container is used.

More resources