SRT参数说明

1.超时选项

connect_timeout
连接超时时间,单位毫秒,默认值为3秒。
当RTT > 1500毫秒(2次握手交换)时,SRT无法连接。此选项适用于caller和rendezvous模式。
listen_timeout
监听超时时间,单位毫秒
timeout
为读、写和连接操作设置引发错误超时,单位毫秒。请注意,SRT库具有可以单独控制的内部超时,这里设置的值只是这些超时的上限。

2.缓存相关选项

ffs
窗口大小,单位字节,默认值为25600。
FFS实际上是一个内部参数,应该将其设置为不小于recv_buffer_size和mss。默认值相对较大,因此除非您设置了非常大的接收者缓冲区,否则不需要更改此选项。
mss
最大段大小,单位字节,默认值1500,它是UDP数据包的最大长度。整个互联网默认为1500,一般只会减小,除非您有一些不寻常的专用网络设置。
recv_buffer_size
UDP接收缓存大小,单位字节。
send_buffer_size
UDP发送缓存大小,单位字节。
sndbuf
设置发送缓冲区大小,单位字节。
rcvbuf
设置接收缓冲区大小,单位字节。接收缓冲区不能大于ffs。

3.带宽或码率相关选项

inputbw
发送者的输入速率,单位字节/秒,默认值为0。
与oheadbw一起使用,当maxbw设置为相对(0)时,用于计算随主媒体流发送恢复数据包时的最大发送速率:inputbw * (100 + oheadbw) / 100。如果inputbw未设置而maxbw设置为相对(0),则在库中计算实际输入速率。
oheadbw
高于输入速率(inputbw)的恢复带宽开销,以百分比表示,默认值为25%
maxbw
最大发送带宽,单位字节/秒,默认值0。-1表示无限制(CSRTCC限制是30mbps);0表示取决于输入速率;

4.延迟相关选项

latency
基于时间戳的数据包发送延迟,单位毫秒。用于处理数据包重传的突发情况。此标志将rcvlatency和peerlatency设置为相同的值。请注意,在1.3.0版本之前,这是设置延迟的唯一标志,然而,这实际上相当于设置peerlatency(当side是发送方时)和rcvlatency(当side是接收方时),并且不支持双向流发送。
peerlatency
延迟值(如rcvlatency中所述),由发送端设置为接收端的最小值,单位毫秒。
rcvlatency
数据包被发送到接收方接收应该经过的时间,单位毫秒。这个时间应该是一个足够大的缓冲时间,以覆盖发送所花费的时间、意外延长的RTT时间和重传丢失的UDP数据包所需的时间。有效延迟值将是该选项的值与对端设置的peerlatency值的最大值。

snddropdelay
发送方在丢弃包之前的额外延迟,该延迟被添加到默认的延迟时间间隔值中。特殊值-1:不丢弃报文,单位毫秒。

5.模式相关选项

mode
连接模式,可取值caller、listener和rendezvous,默认值caller。

messageapi
当设置时,套接字使用Message API,否则使用Buffer API。
请注意,在live模式下,只能使用Message API。
在file模式下,可以选择使用以下两种模式之一:
Stream API(默认值,当此选项为false时)。您可以在一个发送指令中发送任意多的数据,甚至可以使用专用函数直接从文件读取。内部设施将负责任何速度和拥塞控制。接收时,可以根据需要接收任意多的数据,未读取的数据将等待下一次调用。在Stream模式中,数据部分之间没有边界。
Message API。在这种模式下,单个发送指令只传递一段有边界的数据(消息)。与Live模式相反,此消息可以跨越多个UDP数据包,唯一的大小限制是它应该作为一个整体适合发送缓冲区。接收方应使用尽可能大的缓冲区来接收消息,以便不会丢弃消息。当消息不完整时(不是所有的数据包都收到或有数据包丢失),它将不会被放弃。

transtype=live|file
套接字的传输类型,可取值live和file。值得注意的是,此选项会将多个其他参数设置为特定传输类型所需的默认值。
live: 传输类型设置为实时传输。在这种模式下,一个发送指令只发送一个适合的UDP数据包数据。实时传输模式下不进行速度控制,只有带宽控制。如果配置了带宽控制,也是为了不超过带宽(重传和控制数据包)。
file: 设置选项为非实时传输。请参阅messageapi

smoother
套接字传输的平滑器类型,它负责传输和拥塞控制,可取值live和file。连接双方的平滑类型必须完全相同,否则连接将被拒绝。

6.加密相关选项

pbkeylen
发送方加密密钥长度,单位字节,只能设置为0、16、24、32,默认值为0。如果不为0,则启用发件人加密。接收方不需要(设置为0),在HaiCrypt握手中从发送方获得的密钥大小。
passphrase
HaiCrypt加密/解密密码字符串,长度为10 ~ 79个字符。密码字符是发送方和接收方之间的共享秘密。用于使用PBKDF2生成加密密钥。仅当pbkeylen非零时,才有效果。只有当接收到的数据被加密时,它才会在接收方上使用。配置的密码字符不能恢复(只写)。
enforced_encryption
如果为1,则连接双方必须设置相同的密码(包括空密码,即没有加密)。如果密码不匹配或只有一方未加密,则拒绝连接。默认为1。

kmrefreshrate
加密密钥转换为新密钥后要传输的数据包数,默认值-1,取值范围范围是0到INT_MAX的整数。-1表示自动。

kmpreannounce
发送新加密密钥到切换发生的时间间隔,默认值-1,取值范围范围是0到INT_MAX的。此值也适用于切换发生和旧加密密钥退役之间的后续时间间隔。

7.数据包选项

payload_size
Live模式下,单次传输的最大数据包大小,默认值是-1(自动),通常表示MPEG-TS。如果未使用此值,则使用0(在文件模式下为默认值)。如果您打算使用SRT发送任何不同类型的有效负载,例如,将实时流封装在非常小的帧中,那么您可以使用更大的最大帧大小,但不大于1456字节。
pkt_size
'payload_size '的别名。

tlpktdrop
太晚丢包。在接收端启用后,将会跳过未及时传递的丢失数据包,并在该播放的时间到来时将后续的数据包传递给应用程序。它还将向发送方发送一个假的ACK。如果在发送端和接收端同时使能,则发送端丢弃没有机会及时发送的旧报文。如果接收方支持它,则在发送方中自动启用它。

8.其他选项

iptos
IP服务类型,默认值为0xB8。仅适用于发送者。

ipttl=ttl
IP生存的时间,默认值是64。仅适用于发送者。

nakreport
是否定期发送’UMSG_LOSSREPORT’消息,默认值1。如果设置为1,则接收端将定期发送’UMSG_LOSSREPORT’消息,直到丢失的数据包被重传或故意丢弃。

lossmaxttl
当达到lossmaxttl值时,Reorder Tolerance可以增长。当Reorder Tolerance > 0时,丢包报告将延迟到该数量的数据包到达。每次“迟来”的数据包到来时,Reorder Tolerance都会增加,但这不是由于重传(而是UDP数据包倾向于乱序),最新序列与该数据包序列之间的差异不会超过此选项的值。默认情况下,它是0,意味着关闭该机制,那么在遇到序列中的“间隙”时,将立即发送丢失报告。

minversion
要求对端提供的最小SRT版本。不满足最低版本要求的对端连接将被拒绝。版本格式是十六进制(0xXXYYZZ)。

streamid
不超过512个字符的字符串,需要在连接之前在套接字上设置,可用于监听和响应多路请求的场景,类似RTMP的APPPATH。

linger
套接字关闭时,等待未发送数据的秒数,默认值-1,取值范围是0到INT_MAX的整数。-1表示自动(在实时模式下0秒关闭,在文件模式下180秒打开)。此选项的。

tsbpd=1|0
当为true时,使用基于时间戳的数据包传输模式。默认行为取决于传输类型:在live模式下启用,在file模式下禁用。

猜你喜欢

转载自blog.csdn.net/weixin_35804181/article/details/132718040
今日推荐