龙岗附近网站开发公司,wordpress 回到顶部,西安市建设网站,推广网站代码目前互联网上的视频直播有两种#xff0c;一种是基于RTMP协议的直播#xff0c;这种直播方式上行推流使用RTMP协议#xff0c;下行播放使用RTMP#xff0c;HTTPFLV或者HLS#xff0c;直播延时一般大于3秒#xff0c;广泛应用秀场、游戏、赛事和事件直播#xff0c;满足了… 目前互联网上的视频直播有两种一种是基于RTMP协议的直播这种直播方式上行推流使用RTMP协议下行播放使用RTMPHTTPFLV或者HLS直播延时一般大于3秒广泛应用秀场、游戏、赛事和事件直播满足了对交互要求不高的场景另一种是WebRTC协议的直播这种直播方式使用UDP的协议进行流媒体的分发直播延时小于1秒同时连接数一般小于10个主要应用在视频通话、秀场连麦等应用场景。 除了上述两种场景外还有一种视频直播的场景就是同时要求低延时和大并发的场景比如赛事直播、股票信息同步、大班教育等。SRT可以很好地满足上述场景的要求。
SRTSecure Reliable Transport (SRT) 是一个开源的传输协议架构基于UDT可靠UDP协议实现主要是优化在不可靠网络上的传输性能。
srt-live-server 源代码srt-live-server: 该项目已有3年未更新将基于V1.4.9进行后续使用上的修改。https://gitee.com/smartavs_01/srt-live-server
1.介绍
SRT -live-server(SLS)是一个基于安全可靠传输(SRT)的低延迟的开源直播流服务器。通常情况下,运输的延迟在互联网SLS小于1秒SLS只支持MPEG-TS格式的流。SLS借鉴了RTMP的URL格式(domain/app/stream_name)例如:msos.push/live/test如何区分同一流是推流还是拉流?在conf文件中通过设置domain_player/domain_publisher和app_player/app_publisher参数来解析。重要的是domain_publisher/app_publisher和domain_player/app_player的两个组合字符串在同一个服务器块中不能相等SLS只能运行在基于linux的操作系统上如mac、centos或ubuntu等。
注意该项目已有3年未更新我将基于V1.4.9进行后续使用上的修改。
2.依赖 请先安装SRT系统环境请参考SRT(https://github.com/Haivision/srt)。
3.编译
$ sudo make
Bin文件在 Bin 的子目录下生成。
4.文档
关于配置文件请参见wiki
5.使用说明
5.1.帮助信息
sls -h
5.2.指定配置文件运行
sls -c sls.conf
6.测试
6.1.使用ffmpeg进行测试
推流指令
./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?streamidmsos.push/live/test
播放指令
./ffplay -fflags nobuffer -i srt://[your.sls.ip]:8100?streamidmsos.pull/live/test
注意您可以通过FFMPEG推送直播流。编译FFMPEG源码时需要启用SRT--enable-libsrt
6.2.使用srt-live-client进行测试
在SLS中有一个测试工具它可以用于性能测试。因为它没有编解码器的开销主要是主网络开销。SLC可以将SRT流保存为TS文件也可以将TS文件推送到SRT流。
TS文件作为输入推送SRT流
./slc -r srt://[your.sls.ip]:8080?streamidmsos.push/live/test -i [TS文件]
SRT流作为输入保存为TS文件
./slc -r srt://[your.sls.ip]:8080?streamidmsos.pull/live/test -o [TS文件]
7.发布信息
v1.2
更新内存模式。在v1.1中发布者将数据复制到每个播放器在v1.2中每个发布者将数据放入数组所有播放器从该数组读取数据。更新发布者和播放器的关系。播放器不是发布者的成员。它们之间唯一的关系是数组数据。添加推拉功能。支持所有和哈希模式的推支持循环和哈希的拉。在集群模式下您可以将流推送到散列节点并从相同的散列节点拉取该流。在pull和push的上游支持hostname:port/app
v1.3
支持重载。为中继添加idle_streams_timeout特性。将许可证类型从GPL更改为mit。
v1.4.x
增加HTTP统计信息。增加HTTP事件通知on_connect, on_close。在slc(srt-live-client)工具中添加播放器功能用于压力测试。为slc (srt-live-client)工具增加发布功能它可以根据DTS推送TS文件。修改主机不可用时的HTTP bug。将remote_ip和remote_port添加到on_event_url中这可以作为播放器或发行商的唯一标识。为了兼容MAC系统TCP监听由epoll模式更改为select模式修改HTTP检查重复错误以重新打开。兼容OBS流OBS支持srt协议版本为v25.0以上。(https://obsproject.com/forum/threads/obs-studio-25-0-release-candidate.116067/)增加 hls 录制功能.将pid文件路径从“~/”更新为“/opt/soft/sls/”将pid文件路径从“/opt/soft/sls/”更新为“/tmp/sls”以避免在某些情况下使用根权限。兼容SRT v1.4.1在设置方法之前添加set latency方法兼容raspberrypi.