海康摄像机使用GB28181接入SRS服务器的搭建步骤---源码安装的方式 - 哈喽哈喽111111
source link: https://www.cnblogs.com/hahaha111122222/p/16725612.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
地址:https://github.com/ossrs/srs-gb28181
https://github.com/ossrs/srs-gb28181.git
注意:使用的是含有gb28181的GitHub仓库地址。若是使用其他的仓库地址,比如:https://github.com/ossrs/srs.git,这种在编译过程中不确定configure命令是否含有
./configure --with-gb28181
参数,没有的话则不能使用这个仓库的源码
我这边是直接在线下载的一个zip的压缩包:srs-gb28181-feature-gb28181.zip
把该压缩包上传到服务器的指定路径下。
服务器上编译
yum -y install unzip
unzip srs-gb28181-feature-gb28181.zip
cd srs-gb28181-feature-gb28181/trunk
./configure --gb28181=on # gb28181默认是关闭的,需要开启
make
替换配置文件
使用的配置文件名是: push.gb28181.conf, 路径是:srs-gb28181-feature-gb28181/trunk/conf/push.gb28181.conf
先把原来的配置文件重命名,然后使用已经修改好的配置文件上传到指定路径下:srs-gb28181-feature-gb28181/trunk/conf/
mv srs-gb28181-feature-gb28181/trunk/conf/push.gb28181.conf srs-gb28181-feature-gb28181/trunk/conf/push.gb28181.conf.bak
修改后的配置文件内容如下:
# 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;
# whether enable crossdomain request.
# default: on
crossdomain on;
# the HTTP RAW API is more powerful api to change srs state and reload.
raw_api {
# whether enable the HTTP RAW API.
# default: off
enabled on;
# whether enable rpc reload.
# default: off
allow_reload on;
# whether enable rpc query.
# default: off
allow_query on;
# whether enable rpc update.
# default: off
allow_update on;
}
}
http_server { ## HTTP Server用于支持HLS拉流
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
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 off;
# rtp包空闲等待时间,如果指定时间没有收到任何包
# rtp监听连接自动停止,发送BYE命令
rtp_idle_timeout 30;
# 是否转发音频流
# 目前只支持aac格式,所以需要设备支持aac格式
# on:转发音频
# off:不转发音频,只有视频
# *注意*!!!:flv 只支持11025 22050 44100 三种
# 如果设备端没有三种中任何一个,转发时为自动选择一种格式
# 同时也会将adts的头封装在flv aac raw数据中
# 这样的话播放器为自动通过adts头自动选择采样频率
# 像ffplay, vlc都可以,但是flash是没有声音,
# 因为flash,只支持11025 22050 44100
audio_enable on;
# 服务器主机号,可以域名或ip地址
# 也就是设备端将媒体发送的地址,如果是服务器是内外网
# 需要写外网地址,
# 调用api创建stream session时返回ip地址也是host
# $CANDIDATE 是系统环境变量,从环境变量获取地址,如果没有配置,用*
# *代表指定stats network 的网卡号地址,如果没有配置network,默认则是第0号网卡地址
# TODO: https://github.com/ossrs/srs/pull/1679/files#r400917594
host $CANDIDATE;
#host 192.168.2.165;
#根据收到ps rtp包自带创建rtmp媒体通道,不需要api接口创建
#rtmp地址参数[stream] 就是通道id 格式chid[ssrc]
auto_create_channel off;
sip {
# 是否启用srs内部sip信令
# 为on信令走srs, off 只转发ps流
enabled on;
# sip监听udp端口
listen 5060;
# SIP server ID(SIP服务器ID).
# 设备端配置编号需要与该值一致,否则无法注册
serial 34020000002000000001; # 注意,摄像机中会用到
# SIP server domain(SIP服务器域)
realm 3402000000; # 注意,摄像机中会用到
# 服务端发送ack后,接收回应的超时时间,单位为秒
# 如果指定时间没有回应,认为失败
ack_timeout 30;
# 设备心跳维持时间,如果指定时间内(秒)没有接收一个心跳
# 认为设备离线
keepalive_timeout 120;
# 注册之后是否自动给设备端发送invite
# on: 是 off 不是,需要通过api控制
auto_play on;
# 设备将流发送的端口,是否固定
# on 发送流到多路复用端口 如9000
# off 自动从rtp_mix_port - rtp_max_port 之间的值中
# 选一个可以用的端口
invite_port_fixed on;
# 向设备或下级域查询设备列表的间隔,单位(秒)
# 默认60秒
query_catalog_interval 60;
}
}
rtc_server {
enabled on;
# Listen at udp://8000
listen 8000;
#
# The $CANDIDATE means fetch from env, if not configed, use * as default.
#
# The * means retrieving server IP automatically, from all network interfaces,
# @see https://github.com/ossrs/srs/issues/307#issuecomment-599028124
candidate $CANDIDATE;
#candidate 192.168.2.165;
}
vhost __defaultVhost__ {
rtc { ## 打开WebRTC功能
enabled on;
bframe discard;
rtmp_to_rtc on;
rtc_to_rtmp on;
}
http_remux { ## 打开HTTP-Flv功能
enabled on;
mount [vhost]/[app]/[stream].flv;
}
}
关于配置文件中变量:$CANDIDATE
的说明,在配置文件中有两处地方
host $CANDIDATE;
candidate $CANDIDATE;
简单使用的话就是直接把这个变量名修改成服务器使用的外网IP地址,我这边是在公司内部用的,只有一个网卡,也就是该行下面注释掉的那行,后面启动的时候我这边是这个配置
#host $CANDIDATE;
host 192.168.2.165;
#candidate $CANDIDATE;
candidate 192.168.2.165;
# 在trunk目录下,也就是:srs-gb28181-feature-gb28181/trunk/
# 调试启动,会在控制在输出日志
./objs/srs -c ./conf/push.gb28181.conf
# 后台启动方式
nohup ./objs/srs -c ./conf/push.gb28181.conf > nohup.out 2>&1 &
防火墙放行端口
注意:放行的端口号若是根据官方提供的来,会导致无法查看视频信息,进而无法查看画面
我这边方向的端口号具体如下:
1935/tcp
1985/tcp
8080/tcp
8000/tcp
9000/tcp
1935/udp
1985/udp
5060/udp
8080/udp
8000/udp
9000/udp
摄像机配置
访问SRS控制台
使用 VLC media player 视频播放器进行播放
地址是这个:rtmp://192.168.2.165:1935/live/34020000001320000001@34020000001320000001 (根据实际情况修改地址及后面的信息)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK