SRS使用说明
方法一: Docker 使用SRS
启动命令:
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5
使用ffmpeg推流:
ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream
打开下面的页面播放流(若SRS不在本机,请将localhost更换成服务器IP):
- RTMP (by VLC): rtmp://localhost/live/livestream
- H5(HTTP-FLV): http://localhost:8080/live/livestream.flv
- H5(HLS): http://localhost:8080/live/livestream.m3u8
方法二: 源码编译 使用SRS
下载源码:
git clone -b develop https://gitee.com/ossrs/srs.git
编译,注意需要切换到srs/trunk目录:
cd srs/trunk ./configure make
启动服务器:
# conf文件夹下有很多配置,这里默认选用srs.conf ./objs/srs -c conf/srs.conf
检查SRS是否成功启动,可以打开 http://localhost:8080/ ,或者执行命令:
# 查看SRS的状态 ./etc/init.d/srs status # 或者看SRS的日志 tail -n 30 -f ./objs/srs.log # 启动SRS: ./etc/init.d/srs start # 停止SRS: ./etc/init.d/srs stop # 重启SRS: ./etc/init.d/srs restart # Reload SRS: ./etc/init.d/srs reload
推流同上
Oryx 的使用
Oryx(SRS Stack)是一个基于Go、Reactjs、SRS、FFmpeg、WebRTC等的轻量级、开源的视频云解决方案。
使用Docker启动:
docker run --restart always -d -it --name oryx -v $HOME/data:/data -p 80:2022 -p 443:2443 -p 1935:1935 -p 8000:8000/udp -p 10080:10080/udp registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:5
直接访问
80
端口即可使用OrysSRS5对于推拉流暂时只下图所列出的:
SRS 接入 GB28181 (docker方式)
必须是 6.0 才支持 HEVC
HEVC(High Efficiency Video Coding,高效视频编码)是视频编码标准,也称为 H.265
启动容器
首先本地创建一个gb28181.conf文件,用于配置协议的参数。# 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:6 # 启动容器 CANDIDATE="192.168.110.115" # 本机ip docker run -itd --restart always -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 5060:5060 -p 5060:5060/udp -p 9000:9000/udp --name srs6.0 --network host registry.cn-hangzhou.aliyuncs.com/ossrs/srs:6 ./objs/srs -c conf/gb28181.conf
启动服务器:
# conf文件夹下有很多配置,这里默认选用srs.conf ./objs/srs -c conf/gb28181.conf
摄像头设置:
查看实时流:
访问webui控制台,可以查看流状态:
点击预览即可查看:
总体来说,SRS6 目前也只支持 TCP 模式,且不支持密码认证和录像回放(需摄像头以NVR接入)等功能,所以整体体验下来是没有基于ZLMediakit的wvp-GB28181-pro好用的。
SRS WebRTC
SRS是一个媒体服务器,提供了Signaling和SFU Server的能力。和其他SFU比如Janus不同的是,SRS是基于Stream的,尽管房间中 可以有多个参与者,本质上都是有人在推流,其他人在订阅这个流。这样可以避免将房间中的所有流,都耦合到一个SFU传输,可以分散到 多个SFU传输,这样可以支持更多人的会议。
SRS支持的Signaling就是WHIP和WHEP,具体请参考HTTP API部分。和直播很不一样的是,由于Signaling和Media分离, 因此需要设置Candidate。Media默认使用UDP传输,若UDP不可用也可以用TCP参考TCP。若遇到不可用的情况,很有可能是Candidate设置不对,也有可能是防火墙或端口不通,请参考Connectivity使用工具检查。SRS还支持了不同协议的转换,比如推流RTMP后用WebRTC观看参考RTMP to WebRTC,或者用WebRTC推流后用HLS观看参考RTC to RTMP。
下面是WHIP和WHEP的交互图:
其他问题
WHIP 和 WHEP
WHIP (WebRTC-HTTP Ingestion Protocol) 和 WHEP (WebRTC-HTTP Egress Protocol) 是用于 WebRTC 流媒体传输的两种协议,旨在简化和优化 WebRTC 应用中的流媒体传输过程。WHIP 通常用于上传媒体流,而 WHEP 用于下载媒体流。这两个协议通过提供简单的 HTTP 接口,简化了 WebRTC 的信令过程,使 WebRTC 应用的开发和部署更加容易。它们通常在实时流媒体、直播和其他需要实时通信的场景中使用。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1430797759@qq.com