-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
migrate_v5_EN_srt params
HOME > EN > SRT > SRT Parameters
There are some important parameters about stream transport in SRT. SRS support configures those parameters.
For more detail about SRT, please see SRT wiki
Note: all options in libSRT
In srs config file, srt_server have indenpendent config block as below:
srt_server { enabled on; listen 10080; maxbw 1000000000; connect_timeout 4000; peerlatency 300; recvlatency 300; mix_correct on; }
Srt config block is in block of srt_server. Now let's see all of the SRT parameters and what's the meaning of them.
Unit: millisecond,default value 120ms.
This latency configuration configures both recvlatency and peerlatency to the same value.
- If recvlatency is configured, the recvlatency configuration will be used;
- If peerlatency is configured, the peerlatency configuration will be used;
Unit: millisecond,default value 120ms.
The recvlatency means latency from sender to receiver.
It must be bigger than RTT because the packet may retransmit serval times through the network.
Recommend config:
- Low latency network
If your application cares about low latency, you can configure this parameter less than 250ms.
- Long distance, long RTT
We must no configure small latency because of the long RTT;
Or some important live stream, which doesn't care about low latency but requires play smooth;
Recommend configure latency >= 3 * RTT, it include possible packet retransmit and ack or nack of the packets;
Unit: millisecond,default value 120ms.
The peerlatency is set by the sender side and will notify the receiver side.
If the receiver side set recvlatency also, it will get the max value of peerlatency and recvlatency.
Recommend config:
- Low latency network
If your application cares about low latency, you can configure this parameter to less than 250ms. - Long distance, long RTT
We must not configure small latency because of the long RTT;
Or some important live stream, which doesn't care about low latency but requires play smooth;
Recommend configure latency >= 3 * RTT, it include possible packet retransmit and ack or nack of the packets;
true or false,default value true
The tlpkdrop means too-late Packet Drop
SRT sender side will pack timestamp in each packet, When the network is congested,
the packet will drop if latency is bigger than the configuration in both sender side and receiver side.
And on the sender side, it also will be dropped because latency is bigger than configuration.
true or false,default value true
The tsbpd mode means timestamp based packet delivery.
SRT sender side will pack timestamp in each packet. If this config is true,
the receiver will read the packet according to the timestamp in the head of the packet.
Unit: bytes/s, default value -1(means infinite)
- The maxbw is the max bandwidth of the sender side.
-
-1
: Means the biggest bandwidth is infinity. -
0
: Means the bandwidth is determined by SRTO_INPUTBW. -
>0
: Means the bandwidth is the configuration value.
Unit: bytes, default value 1500
The max segment size of SRT, in IP layer.
Unit: millisecond, default value 3000ms.
The timeout time of the SRT connection on the sender side. When SRT connects to a peer costs time more than this config, it will be close.
Unit: millisecond, default value 10000ms.
The timeout time of SRT connection on the receiver side. When the peer SRT connection is idle more than this config, it will be close.
Unit: bytes, default value 8192 * (1500-28).
The send buffer size of SRT.
Unit: bytes, default value 8192 * (1500-28).
The recv buffer size of SRT.
Unit: bytes, default value 1316(188x7)
Because we use MPEG-TS over SRT, and MPEG-TS packet size is n times 188 bytes.
So we must configure payload size n times 188, and the default size is 1316(188x7) bytes.
Delay first, allow packet loss.
In case of contest live, TV content production, we always prepare a link which is stable and exclusive.
And we care about latency in those case, and allow some loss packets.
We will detect the RTT of link before we start publish, and using the result RTT to configure SRT parameters.
The recommended configuration is below
srt_server { enabled on; listen 10080; connect_timeout 4000; peerlatency RTT * 3; recvlatency RTT * 3; latency RTT * 3; tlpktdrop on; tsbpdmode on; }
Latency adaptive, no packet loss allowed. When we use SRT on the internet, the network is unstable with RTT jitter and non-exclusive.
In this case, we must adapt to the latency, and must not loss packets to avoid play video artifacts.
The recommended configuration is below.
srt_server { enabled on; listen 10080; connect_timeout 4000; peerlatency 0; recvlatency 0; latency 0; tlpktdrop off; tsbpdmode off; }
Note: If you use the configuration above, but play video artifacts, please see FFmpeg patch
John 2022.5.24
Welcome to SRS wiki!
Please select your language:
Please select your language:
Please select your language:
Please select your language:
Please select your language: