GB28181开发--SRS+Jessibuca
SRS-SIP做为SIP服务器,与前端设备进行信令交互。SRS做为媒体服务器,与前端设备进行音视频预览/回放。视频播放采用Jessibuca,可以解决播放实时性和H265问题。
一、SRS
SRS是一个开源的(MIT协议)简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等协议。SRS媒体服务器和FFmpeg、OBS、VLC、 WebRTC等客户端配合使用,提供流的接收和分发的能力,是一个典型的发布 (推流)和订阅(播放)服务器模型。SRS支持互联网广泛应用的音视频协议转换,比如可以将RTMP或SRT, 转成HLS或HTTP-FLV或WebRTC等协议。推荐使用SRS 5.0的GB,比如:版本为5.0.74+
1、编译SRS
./configure --gb28181=on
make
2、启动SRS
前台启动
./objs/srs -c conf/gb28181.conf
后台启动
nohup ./objs/srs -c ./conf/gb28181.conf >/dev/null 2>&1 &
# 查看日志
tail -n 30 -f ./objs/srs.log
# 查看服务器状态
./etc/init.d/srs status
注意: 如果你是公网服务器,一定要配置对Candidate,请参考Candidate的说明。
配置SRS(GB28181)
SRS流媒体服务器中和GB28181相关的配置在conf目录下的gb28181.conf文件中,内容如下:
# push gb28181 stream to SRS.
listen 1935; ## RTMP服务端口号,可用于拉取28181的推流数据
max_connections 1000;
daemon off;
srs_log_tank console; ## 表示服务在控制台运行,方便看日志
http_api { ## SRS提供了标准的HTTP API接口,可用于触发GB28181-SIP信令
enabled on;
listen 1985;
}
http_server { ## HTTP Server用于支持HLS拉流
enabled on;
listen 8080;
}
stats {
network 0;
}
stream_caster {
enabled on;
caster gb28181; ## 打开GB28181功能
# 转发流到rtmp服务器地址与端口
# TODO: https://github.com/ossrs/srs/pull/1679/files#r400875104
# [stream] is VideoChannelCodecID(视频通道编码ID) for sip
# 自动创建的道通[stream] 是‘chid[ssrc]’ [ssrc]是rtp的ssrc
# [ssrc] rtp中的ssrc
output rtmp://127.0.0.1:1935/live/[stream];
# 接收设备端rtp流的多路复用端口
listen 9000;
# 多路复用端口类型,on为tcp,off为udp
# 默认:on
tcp_enable on;
# rtp接收监听端口范围,最小值
rtp_port_min 58200;
# rtp接收监听端口范围,最大值
rtp_port_max 58300;
# 是否等待关键帧之后,再转发,
# off:不需等待,直接转发
# on:等第一个关键帧后,再转发
wait_keyframe on;
# rtp包空闲等待时间,如果指定时间没有收到任何包
# rtp监听连接自动停止,发送BYE命令
rtp_idle_timeout 30;
# 是否转发音频流
# 目前只支持aac格式,