1. 下载SRS源码
直接从仓库clone
git clone -b develop https://gitee.com/ossrs/srs.git
2. 编译源码
此处通过 --gb28181=on 开启GB28181支持,默认是不开启的
cd srs/trunk && ./configure --gb28181=on && make -j4
3. 编译过程中遇到的问题
在编译源码时,出现 build srt-1-fit failed, ret=127 错误。在编译srt依赖时出现configure失败的问题,打开 3rdparty/srt-1-fit/configuer文件一看,第一行为 #!/usr/bin/tclsh
而我的系统无tclsh,直接安装tcl即可
sudo apt-get install tcl
然后再重新执行第2步的编译命令即可完成编译
4. 修改SRS配置文件
在 conf目录下有大量配置文件,此处对gb28181.conf文件进行修改,主要修改 candidate的值为本机接收流的IP,可以是内网IP,也可以是外网IP,只要相机能访问到就行,貌似也可以不改。其他端口号什么的根据需要修改就行,本文除candidate外其与参数均保持默认。
listen 1935;
max_connections 1000;
daemon off;
srs_log_tank console;
stream_caster {
enabled on;
caster gb28181;
output rtmp://127.0.0.1/live/[stream];
listen 9000;
sip {
enabled on;
listen 5060;
# @see https://ossrs.net/lts/zh-cn/docs/v5/doc/gb28181#config-candidate
candidate 192.168.100.33;
}
}
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
http_api {
enabled on;
listen 1985;
}
stats {
network 0;
}
rtc_server {
enabled on;
listen 8000; # UDP port
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
candidate 192.168.100.33;
}
vhost __defaultVhost__ {
rtc {
enabled on;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
rtmp_to_rtc on;
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
rtc_to_rtmp on;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
hls {
enabled on;
}
}
5. 运行SRS服务
./objs/srs -c conf/gb28181.conf
6. 配置相机,开启GB28181
参考SRS中文文档即可:GB28181 | SRS
需要注意的是,相机配置中需要选择GB28181-2016,且选择TCP协议,以及音频编码需要设置为ACC编码,视频编码需要设置为H.264编码
7. 播放直播流
SRS的HTTP默认端口为8080,在浏览器中访问: localhost:8080
选择 "点击进入 SRS控制台"
选择"视频流"即可查看当前视频流列表
点击"预览"即可播放视频流
参考链接
GB28181 | SRS支持GB28181是正确的事情,可能也是困难的事情,因为困难所以有趣。https://ossrs.net/lts/zh-cn/docs/v5/doc/gb28181