SRT InterOp Plugfest with YouTube Guide: What You Need to Know

Welcome to the SRT InterOp Plugfest! We’ve put together this guide to answer some commonly asked questions and to help you get the most out of your Plugfest experience.

For information on how to test SRT interoperability with YouTube, please download this document.

How to Join

To take part in the SRT InterOp Plugfest, start by signing into the SRT Alliance Slack here: https://slackin-srtalliance.azurewebsites.net/

If you don’t have an account yet, simply create a new account. It’s free.

Once you’ve joined Slack, use the channel browser to search for a channel named #interop and join the channel.

Feel free to introduce yourself and contact people in the chat to perform tests. You can also use Slack to create message-threads or private messages.

If you have questions or need help, simply add @jrogmann or @phesse to your message – we will receive a notification and will be happy to assist.

The goal of Plugfest is to bring participants together so that they can perform SRT stream compatibility tests among each other and engage in direct communication with other members.

Getting Access to Streams

Once you’ve joined the Slack channel #interop, please reach out to @jrogmann to get access to a shared Excel document, which contains the list of available streams and where the test results will be added. Access to this document needs to be granted individually and the link can’t be shared.

Offering Streams

  • If you offer a stream, create a new horizontal row and enter the details of the stream by following the format of existing entries. If you have questions, reach out in the Slack channel #interop.
  • Make sure to enter your contact email, it should be the same as you use in Slack, so people can contact you directly.

  • Typically people offer SRT listener connections, so anybody can connect by looking up the address from the table without your interaction. Make sure you enable the “reconnect” feature, if your application supports it, so that the connection resets after a test and is available as a listener connection for the next one. This might be named different, if even available to change at all. Mostly it’s default behavior.
  • If you offer an SRT caller, just enter all other details and leave an “ask me to push” message in the address field. People can contact you in Slack with the srt-address to stream to. Please perform at least a few “pushes” in caller mode, to make sure you tested both.
  • If your application supports it, please also offer or try “rendezvous mode” as well. However, this needs interaction between both parties to exchange addresses and ports.
  • Some solutions offer an input srt-address and an output address to view the content on a different port, possibly after being transcoded. Just pair those inputs/outputs in rows nearby and select “Output-of-Input-above” in column H “Input/Output”.
  • Give it a unique identifier in column “A”, so people can easily refer to a particular setup.

Testing Streams

Now you can start testing the available sources.

  • For each device to receive a stream, please create a separate vertical column.
  • Please change the 1st row of that column from “Stream Working on Device:” to the name of your product such as “Haivision Makito X4 Decoder”
  • Mark the test result in the selected row if your test is green, meaning it was successful.
  • If SRT worked but codec issues prevented stream playback, mark it yellow.
  • If SRT failed, mark it red.
  • Reach out in the Slack channel if you experience problems. Use the email address from the Excel sheet to find people in Slack to contact them directly.
  • Some devices only support a single connection at a time, so you can try again later. If you experience problems over a longer time, reach out to the owner or reach out publicly in the Slack channel, #interop.

Which Codec Should I use? What are the Best Settings for Audio/Video Encoding?

There is no single answer to this question, as the SRT protocol is content-agnostic and can transport H.264 as well as HEVC/H.265 video, among others.

There is no guarantee that the receiving end will work with the audio and video settings of the encoder sending the stream. This requires a dialogue between the parties to find a common setting. Typically, decoders prefer a fixed bitrate rather than variable bitrate streams.

The following examples are some best practice suggestions for settings:

720p
Video Bitrate: 2500 kbps
Video GOP Size: 120
Output Resolution: 1280x720p
GOP Structure: IP
Video Entropy Coding: CAVLC
Output Resolution: 1280x720p
H.264 Profile: Baseline
H.264 Level: 3.1

1080p
Video Bitrate: 6000 kbps
Video GOP Size: 120
Output Resolution: 1920x1080p
GOP Structure: IBBP
Video Entropy Coding: CABAC
H.264 Profile: High
H.264 Level: 4

Audio Encoding
Audio Bitrate: 128 kbps
Audio Sample rate: 48 kHz
Audio Mode: Stereo
Audio Algorithm: MPEG2-ADTS

What SRT Settings Should I use?

For an SRT connection, one UDP port is needed and it’s no required that the sender or receiver opens a port in their firewall. However, one side should be reachable on a given UDP port. That side would be configured as the SRT listener. The other side will act as the SRT caller and initiate the connection on the given IP/DNS-name and port combination, such as: srt://my-decoder.com:5000

If both sides have firewall restrictions, feel free to contact Justus Rogmann (@jrogmann) on the SRT Alliance Slack channel. Haivision can also provide an SRT Gateway or SRT Hub route, which would serve as two SRT listener ports to send to, and receive from, to overcome firewall issues.

Another setting to pay attention to is “SRT latency”. This should typically be three to four times the Round-Trip Time (RTT or ping). When an SRT connection is initiated between two parties, the SRT latency value is negotiated and the highest value given by any party will win and be set.

In case you want to try encryption, you need to agree on a passphrase and key-length (AES 128/256 Bit).

If the SRT receiver is set up with access control, a stream-id needs to be provided to the sender.

https://github.com/Haivision/srt/blob/master/docs/features/access-control.md

What Type of Information Should be Logged?

The more data logged, the more detailed the compatibility matrix will be. Troubleshooting is also easier if something goes wrong.

However, SRT settings used and audio/video encoding settings would be valuable data to collect along with the status of “success” or “failed”.

In case of a failure, feel free to contact Justus Rogmann (@jrogmann) on the SRT Alliance Slack channel for help with troubleshooting.

For information on how to test SRT interoperability with YouTube, please download this document.

Share this post

CONTACT US