srt流媒体搭建

发布时间 2023-05-15 09:36:12作者: 阿风小子

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

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

./configure
make
make 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:1234
sls并发srt流媒体搭建,可一推多拉取,但需要先安装好上面的srt库。

sudo git clone https://github.com/Edward-Wu/srt-live-server.git
cd srt-live-server
sudo make
cd 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推流延时比较