• SRT参数说明


    以下说明主要是基于FFMPEG

    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模式下禁用。

  • 相关阅读:
    四、综合——通信系统
    B树、B+树与磁盘读取的关系
    python爬虫案例-爬取山东各城市近两年的天气情况(附带源码)
    做知识付费,这十大知识付费平台一定要知道
    23 种设计模式的通俗解释,虽然有点污,但是很正点
    JAVA房屋中介管理计算机毕业设计Mybatis+系统+数据库+调试部署
    戴尔R730服务器设置管理IP(iDRAC)和安装系统
    IDEA如何查看自己的SpringBoot的版本
    虹科分享 | 网络流量监控 | 使用 ntopng 收件人和端点进行灵活的警报处理
    Redis实战之共享session + jwt 实现登录拦截、刷新token
  • 原文地址:https://blog.csdn.net/weixin_35804181/article/details/132718040