srt是建立在udp基础上的,相对于建立在tcp基础上的rtmp,在弱网情况下有很多优势。官网拉取srt源码

git clone https://github.com/Haivision/srt.git打开目录进行编译默认的安装路径是/usr/local,默认静态动态一起编译。

./configuremakemake install为防止找不到新加入的srt库,刷新一下系统库连接。

sudo ldconfig如果执行./configure 报错

-bash: ./configure:/usr/bin/tclsh:解释器错误: 没有那个文件或目录

执行:

sudo apt-get install tcl cmake make automake任意路径打开终端,运行srt流媒体(这个流媒体是一推一拉,一推多拉见下sls流媒体)

srt-live-transmit srt://:4200 srt://:4201 -v如果想用ffmpeg命令或代码推拉流srt,编译ffmpeg配置srt模块,见:ffmpeg编译配置srt模块此命令下:推流URL: srt://本机IP:4200拉流URL: srt://本机rIP:4201例如推mp4

ffmpeg -re -i test_video.mp4 -f mpegts srt://127.0.0.1:4200播放

ffplay -fflags nobuffer -analyzeduration 1000000 srt://127.0.0.1:4201此流媒体也可以完成udp到srt的转换,运行:

srt-live-transmit -s:10 udp://:5000 srt://:1234推流端:

ffmpeg -re -i westLife.mp4 -f mpegts udp://127.0.0.1:5000?pkt_size=1316或者

ffmpeg -re -i westLife.mp4 -pkt_size 1316 -f mpegts udp://127.0.0.1:5000注意?pkt_size=1316一定要添加,不然拉流端播放会出先严重丢包,导致视频异常。拉流端:

ffplay -fflags nobuffer -analyzeduration 1000000 srt://127.0.0.1:1234sls并发srt流媒体搭建,可一推多拉取,但需要先安装好上面的srt库。

sudo git clone https://github.com/Edward-Wu/srt-live-server.gitcd srt-live-serversudo makecd bin运行流媒体:

./sls -c ../sls.conf查看更多执行命令

./sls -h安装好之后默认使用当前主机的ip,8080端口,默认推流地址如下,推流

ffmpeg -re -i test_video.mp4 -f mpegts srt://127.0.0.1:8080?streamid=uplive.sls.com/live/test拉取视频流命令,注意推流比拉流地址多了“up”。

ffplay -fflags nobuffer -analyzeduration 1000000 srt://127.0.0.1:8080?streamid=live.sls.com/live/test注意-fflags nobuffer -analyzeduration 1000000 能大幅度降低播放器的延时,如果不加这两个参数的话延时在5s左右,之前有详测博文。用vlc播放srt建议格式(ffmpeg不建议url带streamid,它的url是不规范的。–自称是vlc和ffmpeg的srt模块的维护人员说的):ffplay -srt_streamid xxx srt://xxx关于vlc:vlc 3.0不支持streamid,4.0可以关于用VLC播放SRS的SRT流的方法,在其他群问到的,与大家分享一下:vlc srt://IP:port --streamid=#!::r=live/livestream,m=request搭建srs+rtmp的流媒体服务器,另一篇博客:srs搭建rtmp流媒体服务器编译带h264编码和aac编码的ffmpeg库,另一篇文章:libfdk-aac和x264安装编译

用udp推流延时测试,见:rtmp改udp推流,并测试延时性能srt流媒体搭建:srt流媒体搭建ffmpeg编译配置srt模块:ffmpeg编译配置srt模块srs+rtmp和nginx+rtmp推流延时比较