SRT InterOp Plugfest 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.
How to join
To take part at 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 threads or to send private messages.
If you have questions or need help, simply add @jrogmann or @scarrillo 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.
Which codec should I use? What are the best settings for audio/video encoding?
There is no single answer to this question. The SRT protocol is content-agnostic and can transport H.264 as well as HEVC/H.265 video to name some of the possible options.
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 dialog between the parties to find a common setting. Typically, decoders prefer fixed bitrate rather than variable bitrate streams.
The following examples are 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. It doesn’t matter if the sender or receiver opens a port in their firewall. But 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 Rogmman (@jrogmann) on the SRT Alliance Slack channel. Haivision can 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 take care of is “SRT latency”. This should typically 3 to 4 times the Round-Trip Time (RTT or ping). When an SRT connection is initiated between two parties, the SRT latency value is negotiated. 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/AccessControl.md
What type of information should be logged?
The more data logged, the more detailed the compatibility matrix will be. Troubleshooting is also easier, in the case where something goes wrong.
However, SRT settings used, as well as audio/video encoding settings would be valuable data to collect along with the status “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.