IPTV OTT Encoding & Streaming
SRT
Secure Reliable Transport (SRT) is an open source video transport protocol
developed originally by Haivision. It works on UDP but provides reliable
transmission similar to TCP, by utilising similar methods for connection,
sequence numbers, acknowledgements and re-transmission of lost packets. SRT
makes it possible to send MPEG transport streams over the public internet.
Stream from SRT Source
To stream from an SRT source, select srt as the source type and enter the SRT URL in
the source address, for example: srt://192.168.1.2:1234
Note: SRT source operates in caller mode by default, which means it initiates a
connection to the source server to start streaming. If you want to use listener mode
instead, change the address to a local host address, for example
srt://0.0.0.0:1234, and set the SRT mode in the advanced config below. In
listener mode, it waits for the remote peer to connect before streaming begins.
Stream P2P SRT Output
Select SRT in the Target Format and enter the destination IP address where you want
to deliver the stream. For example: srt://0.0.0.0:1234
Note: SRT output operates in listener mode by default, which means it waits for a
remote peer to connect before streaming starts. If you want to use caller mode instead,
change the address to a remote host address, for example
srt://192.168.1.2:1234, and set the SRT mode in the advanced config below. In
caller mode, it initiates a connection to the remote peer and starts streaming.
SRT Path Redundancy
IPVTL supports SRT connection bonding. By using two or more network interfaces, you can stream with network path redundancy like Haivision SRT Gateway. See the details below.
To enable Connection Bonding, you need at least two internet connections (at least two network interfaces configured on your computer). Open Advanced Format Settings and go to the SRT Config tab to set up SRT connection bonding.
For SRT listener mode, Connection Bonding is enabled by default and no additional configuration is needed.
For SRT caller mode, you can set a second remote IP address in Connection #2 as a backup connection route to the peer SRT server in Connection #1. For each connection, you can optionally specify a local network interface. You can set up bonded connections either with two different remote addresses, or with a same remote address from two different local addresses. Either method establishes two separate streaming paths.
Note that bonded connections share the same port number, so it is omitted in the address field here. Bonding type defaults to Main/Backup (Active-Standby), which means only one link is used for streaming at any given time. For advanced users, Broadcast (Active-Active) is also supported, in which case both links stream simultaneously, doubling network traffic.
There is another option called Minimum Stable Timeout that determines when an SRT connection is considered unstable and should be switched to another. Do not modify it unless you fully understand what it does.
IMPORTANT: On a PC with two network interfaces enabled, one is typically selected as the default gateway in the routing table, as shown below:
# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 1.2.3.4 0.0.0.0 UG 200 0 0 eth1
0.0.0.0 4.3.2.1 0.0.0.0 UG 300 0 0 eth2
In this example, both the SRT main and backup streams go through eth1
(determined by Metric), which prevents connection bonding from working. To make SRT backup
connection work properly, you must set up load balancing to route it through
eth2 instead. This can be done by adding a custom network route.
To add a custom route in Linux (where x.x.x.x is the peer address of the SRT
backup endpoint and eth2 is the local backup network interface):
# route add -host x.x.x.x gw 4.3.2.1 dev eth2
Make sure the route added successfully in system route table:
# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
x.x.x.x 4.3.2.1 255.255.255.255 UGH 0 0 0 eth2
Note that the route added above is temporary and does not persist after a system reboot.
Create a network startup script (such as netplan) to make it permanent and run
automatically.
To add a custom route in Windows (where x.x.x.x is the peer address of the SRT backup endpoint and 2 is the local backup network interface ID):
# route -p add x.x.x.x mask 255.255.255.255 4.3.2.1 if 2
Note that the option "-p" ensures the route persists even after a system
reboot.