多协议、性能稳定、丰富API的流媒体服务器软件
您现在的位置:首页  >  文档  >  SRT推流

Ti Top Streamer 支持SRT协议,关于SRT协议的背景知识,请参考这里https://www.srtalliance.org以及https://github.com/Haivision/srt

下面介绍推流步骤:

首先需要说明的是: Ti Top Streamer在接收SRT流时,它运行在SRT Listener模式下。而推送方,则运行在SRT Caller模式下。

第一步: 创建一个输入流类型为SRT Listener的Application。如下图所示:



创建完成后,在左侧的应用列表中找到刚刚创建的应用,点击进去后,会看到这个SRT应用的直播流列表界面(当前,还没有一个路SRT输入流)



第二步:在上面刚刚创建的APP下添加一个SRT Source的直播流。如下图所示:



注意:上图中的IP地址,如果是多网卡情况下,建议您用0.0.0.0即可。 如果确定要使用某个IP地址,一定要注意有的服务器有内外网IP映射的问题。也就说服务器监听的是一个内网地址, 而实际上,外面推流时可能用的是公网IP。

添加成功后,您就可以在直播流列表中看到这路流,它当前的状态"等待连接",如下图所示:

当然,如果你已经开始推流了,那状态会立即变为"流传输中",如下图所示:



那么,可以用什么设备向Ti Top Streamer 推SRT流呢?

作为接收方,Ti Top Streamer 对于推送方没有任何限制,只要是支持SRT协议即可。比如Haivision的编码器设备。 当然你用OBS Studio或ffmpeg也可以,下面是OBS Studio推SRT流的设置:



上面的推流地址,摘录如下,您可以直接拷贝后,把URL中的IP地址和端口替换为你的服务器IP地址和端口号即可。其它部分不用变。

srt://38.101.42.116:10002?streamid=#!::h=123,m=publish
			

下面是ffmpeg推SRT流的命令:
ffmpeg -re -i sample.mp4 -vcodec copy -acodec copy -f mpegts srt://38.101.42.116:10002
			


最后,我们介绍一下Ti Top Streamer在接收SRT流时,都有哪些可配置的参数。

1、首先在源流的URL上,您现在可以添加三个参数:latency,rcvbuf以及fc。

举个例子:
srt://0.0.0.0:10002?latency=120&rcvbuf=11927552&fc=37273600
			
说明: 这三个参数,都是可选的。

  • latency
    延时,单位是毫秒,默认值120。通过这个参数,您可以控制SRT流在输入环节的延时。为了追求低延时,你可以尝试将它设置为0。
  • rcvbuf
    接收区缓冲大小,单位是字节,默认值11927552。大致等于11MBytes左右。这个值的来源依据是 8192 * 1456 。 1456表示最大传输单元(1500)减去IP包头(20个字节)、UDP包头(8个字节)以及SRT包头(16个字节)以后的SRT静载荷大小。 它的最小值是 46592,即 32 * 1456。 最大值为fc参数的值,也就是说它最大不能超过fc参数的设置。注意:srt包中的静载荷大小也可以被修改,比如通常很多系统也采用1316这个值,这时候rcvbuf参数的默认值就是8192 * 1316 = 10780672,相当于10MBytes左右。
  • fc
    fc表示Flow Control(流量控制),它表示了最大的in-flight(在途)字节数,默认值是37273600,单位是字节,相当于35MBytes左右,这个值的来源依据是 25600 * 1456,它已经可以满足绝大多数场景。 对于1456的解释同参数rcvbuf中的解释,不再赘述。


对于这三个参数更详细的介绍,可以参见Haivision的SRT开源项目官网: https://github.com/Haivision/srt/blob/master/docs/API/API-socket-options.md#SRTO_RCVBUF

2、有些用户,对于在url中设置这三个参数,可能会不太习惯(有点复杂,容易出错)。对此,我们也支持在界面中单独设置这三个参数。如下图所示:

选中某一路流后,点击"参数按钮",在弹出的对话框中,设置这三个参数。如果你希望使用默认值,将输入框保留空白即可。

最后说明: 如果url和上面的界面都设置了某个参数,以url中的参数设置为准。