Broadcast

Guide to Encoding Content for Broadcasting Streams

Broadcasting content requires access to the public internet and encoding, which can be accomplished in a browser, software, hardware, or with the Dolby.io Client-side broadcaster SDKs.

The Dolby.io CDN can ingest streams encoded in a few main formats:

WebRTC, an internet transfer protocol that supports video codecs H.264, H.265, VP8, VP9, AV1, and the Opus audio codec. Broad support is made possible through implementations of WebRTC HTTP Ingest Protocol (WHIP).

SRT, a video transfer protocol that can be transmuxed to WebRTC via the Dolby.io CDN and supports H.264 video and AAC audio.

RTMP and RTMPS, internet transfer protocols that can be transmuxed to WebRTC via the Dolby.io CDN that supports only the H.264 video codec.

SRT and RTMP will automatically have AAC audio converted to Opus via the CDN

Start building

Encoding

With different broadcast protocols across the industry comes the need for encoders to create seamless video transmission. By employing encoders, video content can be efficiently compressed, reduce in file size, and conserve bandwidth during streaming. It also ensures compatibility across various devices and platforms, enabling playback and accessibility for viewers. Codecs play a crucial role since it is what encoders utilize to build the compression.

Codecs

A few terms to remember are:

H.264 (AVC), Advanced Video Coding, is a widely used video codec that efficiently compresses video data while maintaining video quality. It is widely supported, making it a highly versatile codec for various applications, as the de facto standard for many.

H.265 (HEVC), or High-Efficiency Video Coding, is an advanced video codec that offers even higher compression efficiency compared to H.264. It achieves a significant reduction in file size and bit rate while maintaining or improving video quality. This makes H.265 suitable for applications with limited bandwidth or storage capacity.

VP9 is an advanced video codec designed to provide higher compression efficiency and improved video quality compared to its predecessor, VP8. VP9 offers significant bitrate savings, allowing higher-quality video streaming at lower bitrates.

AV1 is designed to deliver high-quality compression while achieving significant bitrate reduction utilizing compression techniques like improved motion prediction, advanced entropy coding, and intra-frame coding. Best suited for applications with limited bandwidth.

AAC, Advanced Audio Coding, is an audio codec known for its high audio quality while maintaining a low bitrate, resulting in smaller file sizes and efficient transmission. It is widely supported across devices and platforms, making it a versatile choice for various audio applications.

Encoders

A hardware encoder can help transform capture devices used in professional broadcast setups into a real-time streaming solution. The typical hardware encoder will have drivers that support interfaces like SDI, HDMI, etc., while optimizing for fast encoding to standards like WHIP or RTMP for streaming broadcast workflows. There are also software encoders that can help with encoding by using compute resources.

Here is a breakdown of some distinct encoders with their corresponding codec and protocol compatibility.

EncoderProtocolsCodecs
Osprey TalonRTMP, RTMPS, RTSP, HLS, RTP, SRT, WebRTC, WHIPH.264 (AVC), H.265 (HEVC), AAC
Teradek WaveRTMP, RTMPS, RTSP, SRT, HLS, NDIH.264 (AVC), H.265 (HEVC), AAC
Videon EdgeCasterRTMP, RTMPs, SRT, HLSH.264 (AVC), H.265 (HEVC), VP9, AAC
Haivision KB EncoderRTMP, RTMPS, RTSP, HLS, SRTH.264 (AVC), H.265 (HEVC), AAC
FlowCasterRTMP, RTMPs, WHIP, NDI, HLS, SRT, WebRTCH.264 (AVC), H.265 (HEVC)
FFmpegRTMP, RTMPs, RTSP, HLSH.264 (AVC), H.265 (HEVC), VP9, AV1, AAC
GStreamerRTMP, RTMPs, RTSP, SRT, HLS, WHIPH.264 (AVC), H.265 (HEVC), VP9, AV1, AAC
OBSWebRTC, RTMP, RTMPs, NDI, HLS, SRT, RTSPH.264 (AVC), H.265 (HEVC), VP9, AAC
LiveURTMP, RTMPs, HLS, RTSP, NDIH.264 (AVC), H.265 (HEVC), VP9, AAC
vMixRTMP, RTMPs, RTSP, NDI, SRT, WebRTCH.264 (AVC), H.265 (HEVC), ProRes, DNxHD/DNxHR, AAC

Broadcast protocols

The line between how a video feed is captured and how it is encoded can be a subtle distinction. In order to prepare for distribution, you need to ensure you have the right encoding to optimize delivery and meet your broadcast requirements.

Encoding with WHIP

The WebRTC-HTTP Ingestion Protocol (WHIP) is an IETF standard developed to leverage the capabilities of WebRTC to ingest content into a streaming platform over HTTP. WHIP addresses problems with Real-time Streaming by removing translation layers during encoding.

WHIP acts like a signaler, handling the creation and deletion of endpoints needed during transport while maintaining the benefits of WebRTC, such as end-to-end encryption and ultra-low latency.

How-to use GStreamer with WHIP
GStreamer is a popular pipeline-based media framework that links together multiple nodes into a media processing workflow. Using WHIP, you can encode an output node to broadcast streaming content through Dolby.io.

How-to use FlowCaster with WHIP
FlowCaster software provides a secure connection to provide IP streaming for editors and remote collaboration.

How-to use LiveU Studio with WHIP
LiveU Studio is a cloud-based SaaS solution for live video production. By supporting WHIP, media streams ingested from LiveU Studio and can be broadcast by Dolby.io.

How-to Setup an Osprey Talon for WHIP
The Osprey Talon provides exceptional quality with 4k resolution and a plug-and-play interface. There are some recommended settings to enable broadcasting to the Dolby.io platform by using this encoder in the pipeline.

To learn how to create a stream from OBS using WebRTC, see the following video:

Encoding with SRT

The Secure Reliable Transport (SRT) is an open-source protocol that uses an intelligent packet retransmission mechanism on otp of a UDP data flow along with AES-128 and 256-bit encryption. Dolby is part of the SRT Alliance, an organization to promote the technology for optimizing streaming performance.

How-to setup a Dolby.io SRT Stream
The Dolby.io dashboard is used to configure the publish path and stream id for an incoming SRT media stream.

How-to use OBS with SRT
Open Broadcaster Software (OBS) is free and open source software is popular for cross-platform streaming. You will need to download a recent version of OBS that has been extended to provide SRT support.

To learn how to create a stream from OBS using SRT, see the following video:

RTMP Ingest

Real-time Messaging Protocol (RTMP) is well-established in many hardware and software applications. With many years of use, RTMP is a good option for compatibility while sacrificing some latency in order to handle transmuxing the incoming stream to WebRTC.

How-to setup a Dolby.io RTMP Stream
The Dolby.io dashboard is used to configure the publish path and stream id for an incoming RTMP or RTMPs media stream.

How-to use FFmpeg with RTMP
FFmpeg is a free and open-source software project that is commonly used in legacy media workflows. It is a command-line tool that is capable of outputing streaming content via RTMP, RTMPS, and RTSP.

How-to use vMix with RTMP
vMix is a software vision mixer available for Windows. It is useful for certain live video production workflows and supports RTMP output that can be broadcast by Dolby.io.

How-to Setup a Haivision KB encoder for RTMP
The Haivision KB series of media encoders deliver high-quality video streaming with 4k resolution and a plug-and-play interface with a small rack-mountable form factor. There are some recommended encoding sessions to optimize this encoder in the broadcast pipeline.

How-to Setup a Teradek VidiU Go for RTMP
The Teradek VidiU Go is a hardware encoder is capable of broadcast quality video that can be sent over RTMP for compatibility with Dolby.io broadcast workflows.

Begin broadcasting

Web and mobile browsers are widely available and have wide encoding support, whether broadcasting from Chrome, Safari, Firefox, or Edge. To start broadcasting, see the Getting Started with Broadcasting guide.

You can also start broadcasting directly from the Dolby.io dashboard. For more information, see the following video:

Publish parameters

Publish parameters allow modifying broadcasting preferences to customize streaming experience. Using publish parameters is simple, you can just add them at the end of your URL using ampersand (&) before each parameter. For example, if your publish URL is {StreamName}?token={Token}, after adding sourceId and priority the URL may look like this: {StreamName}?token={Token}&sourceId=1&priority=1. Publish parameters are supported when using any protocol (SRT, RTMP, WebRTC, and WHIP) with some exceptions that are mentioned in the following table.

The Dolby.io Streaming APIs platform provides the following parameters:

Parameter nameTypeDescription
audioOnlyBooleanIndicates whether the platform should broadcast only audio.
intraOnlyForwardingBooleanIndicates whether the platform should forward only intra frames while transmitting video.
priorityNumberA priority of redundant streams that indicates the order in which backup streams should be broadcasted in the case of any problems with the primary stream.
recordBooleanIndicates whether the platform should record a stream.
simulcastIdStringAn identifier that assigns feeds produced by a single camera as Simulcast layers. All feeds that have the same simulcastId are published together as different quality layers. You can identify each layer using a different sourceId.
sourceIdStringA unique identifier for a specific feed. Two feeds can have the same sourceId only when they are the same and used as backup feeds in Redundant Ingest .
streamNameStringA name of the stream that differentiates broadcasts and restricts a broadcaster to use a specific name only. To broadcast using unspecified names, you can set it as a Wildcard ( .* ).
tStringA publish token in the base64url format that is supported only when using SRT or RTMP. We recommend using this parameter to reduce the length of the query parameter string for encoders with low limits. It is not possible to use the t and token parameters at the same time.
tokenStringA publish token in the hexadecimal format that is supported only when using SRT or RTMP. It is not possible to use the t and token parameters at the same time.
videoOnlyBooleanIndicates whether the platform should broadcast only video.
videoTargetBitrateNumberThe target bitrate of the streamed video content, in kbps. The parameter helps the service determine what layer to send to viewers while using multi-bitrate RTMP or SRT to deliver simulcast, or multiple-quality viewer experience. This parameter is supported only when using SRT or RTMP.

The way of passing a publish URL with publish parameters depends on the protocol:

  • RTMP: The server passes the provided string as an RTMP publish path. The way of accepting the path depends on the software; it can be accepted separately, as the last part of the string, or with the URL.
  • SRT: The provided string requires encoding and then the server passes it as an SRT stream ID.
  • WHIP: The server passes the provided string as the last part of a WHIP endpoint URL.

Learn more

You can find examples of using Avid Media Composer, Larix Broadcaster, and more on the developer blog.