Part 1 – Streaming video to AWS Elemental MediaConnect using Zixi SDK
This is the first in a 3-part blog series that explores ways to bring on-premises video contribution to the AWS Cloud using AWS Elemental MediaConnect with the Zixi protocol for secure, reliable, and scalable streaming. Using Zixi SDK for AWS Elemental MediaConnect (we refer to this as Zixi-MediaConnect), we can broadcast by encapsulating a traditional protocol, such as UDP, in the Zixi protocol. Zixi-MediaConnect also allows us to receive the Zixi protocol and encapsulate it in a UDP transmission protocol. The capabilities of having the signals in the cloud allow you to distribute these signals globally and to other AWS accounts without the need for a dedicated infrastructure or specialized devices.
In this document, we demonstrate how to:
- Install and configure OBS Studio and Zixi-MediaConnect on a local system,
- Create an encrypted MediaConnect flow, and
- Stream a local VOD asset to Zixi Player on end user mobile devices.
Zixi protocol is content and network-aware, and it dynamically adjusts to varying network conditions and employs error correction techniques for error-free video streaming over IP. Zixi protocol is suitable for most applications, especially where longer distances and challenging network conditions exist. MediaConnect combines Zixi’s reliable video transport with its highly secure stream sharing and real-time network traffic and video monitoring so you can focus on content, not transport infrastructure. To enable Zixi protocol protection across the entire delivery path, you need to use Zixi protocol as part of both the contribution and distribution segments to and from MediaConnect.
Zixi is integrated in a wide variety of devices for both encoding and decoding video content. If your encoder cannot output a Zixi-protected stream, you can use the Zixi-MediaConnect Feeder software. And on the distribution end, if your Integrated Receiver/Decoder (IRD) does not include Zixi, you can use the Zixi-MediaConnect Receiver. Both Zixi-MediaConnect Feeder and Zixi-MediaConnect Receiver can be installed on-premises and in the cloud.
Zixi-MediaConnect Feeder supported protocols
Zixi-MediaConnect Feeder resides at the point of acquisition. The following protocols are supported:
- File (1 file in loop)
- RTMP (Push/Pull)
- Push – the stream is pushed to MediaConnect using the Zixi protocol
Latency is the delay for a video stream to reach its end-point. This delay is a buffer used for additional processing to improve the quality of the video stream. However, if the video requires interaction (for example, a reporter in the field talking with an anchor in the studio), the latency should be minimized as much as possible. Latency can vary from tens of milliseconds to several seconds. Zixi protocol can provide a delay of a single frame, which increases the latency to provide more robustness for the error recovery. For use cases such as streaming video via the internet, higher latency is perfectly acceptable. The increased processing time may result in better picture quality through prevention of packet loss.
To allow sufficient error recovery, it is recommended to set the latency at least 3 times larger than the Round-Trip Time (RTT) (for example, latency >= 3* RTT).
Latency can be set to any value, but we recommend two common modes:
- Interactive mode – 500 ms (for sports, gambling, or near real-time streaming)
- Non-interactive mode – 4000 ms (for pre-recorded content)
With low latency (below 1500 ms), the error recovery is based on a hybrid approach of Forward Error Correction (FEC) and Automatic Repeat Request (ARQ). Enabling FEC will add overhead of up to 30% (adaptive–without congesting the network).
- Ubuntu Linux system (this post was tested with Ubuntu Focal Fossa).
- AWS account with Administrator access.
- Android or iOS mobile device (for viewing VOD content).
- Ensure UDP traffic coming to and from the Zixi-MediaConnect Feeder is not blocked.
- An external firewall that allows communication on UDP port 2088 (inbound and outbound).
- Ubuntu system must be able to communicate via UDP using port 53 to your DNS server.
- Verify that the MPEG-TS coming from your source device (Encoder/Mux/Integrated Receiver/Decoder (IRD)/Playout, etc.) is compatible with the destination device (IRD/Playout/etc.).
Cost of provisioning resources used in this post
- There is no charge for FFmpeg, OBS, Zixi-MediaConnect Feeder/Receiver, or the Zixi Player app.
- MediaConnect is billed at an hourly rate for each running flow, plus either a per-gigabyte charge for data transferred using the flow or, with reserved outbound bandwidth pricing, a per-hour charge based on bandwidth for video sent to the internet. A flow that is in standby mode is not an active resource and does not incur cost, even if it has outputs or entitlements configured. See https://aws.amazon.com/mediaconnect/pricing/ for more information.
- AWS Secrets Manager comes with a 30-day free trial. After the trial is over, Secrets Manager is billed $0.40 per secret per month. For secrets that are stored for less than a month, the price is prorated (based on the number of hours). See https://aws.amazon.com/secrets-manager/pricing/ for more information.
- To keep charges to a minimum, be sure to cleanup resources once you are finished testing by following the tasks in Step 8 of this post.
- Each installation of Zixi-MediaConnect Feeder/Receiver can only have one license
- Zixi-MediaConnect Feeder/Receiver allows registration of up to 25 installations
- MediaConnect supports up to 50 outputs per flow
This is the first in a 3-part blog series
Part 1 (this post) – Streaming video to AWS Elemental MediaConnect using Zixi SDK
Part 2 – Streaming video to AWS Elemental MediaConnect using Zixi SDK
Part 3 – Streaming video to AWS Elemental MediaConnect using Zixi SDK
If you have questions, feedback, or would like to get involved in discussions with other community members, visit the AWS Developer Forums: Media Services.