前面讲的SRS服务器由于实际测试SRT时,存在不稳的问题,所以切换到sls(srt live server)。实际测试比较稳定,而且代码结构简单,可以十分方便进行功能扩展和维护。
目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTP+FLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了对交互要求不高的场景;另一种是WebRTC协议的直播,这种直播方式使用UDP的协议进行流媒体的分发,直播延时小于1秒,同时连接数一般小于10个,主要应用在视频通话、秀场连麦等应用场景。
除了上述两种场景外,还有一种视频直播的场景,就是同时要求低延时和大并发的场景,比如赛事直播、股票信息同步、大班教育等。SRT可以很好地满足上述场景的要求。
SRT:Secure Reliable Transport (SRT) 是一个开源的传输协议架构,基于UDT(可靠UDP协议)实现,主要是优化在不可靠网络上的传输性能。
srt-live-server 源代码:
srt-live-server: 基于SLS的V1.4.9进行开发。1.对文档进行中文化;2.支持SRT的加密传输;https://gitee.com/smartavs_01/srt-live-server
请先安装SRT,系统环境请参考SRT(https://github.com/Haivision/srt)。SLS只能运行在基于linux的操作系统上,如mac、centos或ubuntu等。
$ sudo make
Bin文件在' Bin '的子目录下生成。
关于配置文件,请参见wiki
sls -h
sls -c sls.conf
推流指令
./ffmpeg -f avfoundation -framerate 30 -i "0:0" -vcodec libx264 -preset ultrafast -tune zerolatency -flags2 local_header -acodec libmp3lame -g 30 -pkt_size 1316 -flush_packets 0 -f mpegts "srt://[your.sls.ip]:8100?streamid=msos.push/live/test"
播放指令
./ffplay -fflags nobuffer -i "srt://[your.sls.ip]:8100?streamid=msos.pull/live/test"
注意:您可以通过FFMPEG推送直播流。编译FFMPEG源码时,需要启用SRT(--enable-libsrt)
在SLS中有一个测试工具,它可以用于性能测试。因为它没有编解码器的开销,主要是主网络开销。SLC可以将SRT流保存为TS文件,也可以将TS文件推送到SRT流。
TS文件作为输入,推送SRT流
./slc -r srt://[your.sls.ip]:8080?streamid=msos.push/live/test -i [TS文件]
SRT流作为输入,保存为TS文件
./slc -r srt://[your.sls.ip]:8080?streamid=msos.pull/live/test -o [TS文件]
对文档进行中文化;
支持SRT的加密传输;