公司需要做视频流的监控,在调研了几家的监控方案,最终选择了开源的方案,一方面因为省钱,一方面也确实简单。调研的过程就不多说了,直接开始吧
先说下公司的基本需求
这个我调研了几种视频方案,最终选择了SRS.
SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。
说简单点,SRS就是直播开源软件,你可以自己做个抖音直播,自己卖货,发大财,想想都开心。哈哈哈,扯远了。
官方文档地址:Docker | SRS
中了docker 的毒,所以我还是喜欢docker部署环境,一键配置,真的是爽,废话不多说,直接走起。
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/docker.conf
这个看起来没啥难度,这样就启动了一个SRS的服务,下面就可以开心的玩耍了,我们推个流试试。
服务启动之后,直接搞个推流软件,现在常用的是OBS studio,这里放个动图
1、显示点击设置,然后填入推流的数据地址:rtmp://192.168.116.128:1935/live
2、串流秘钥是你的身份id,这里填写的是123,别人可以通过这个访问,然后点击开始推流。
3、打开后台管理平台,http://192.168.116.128:8080/,注意这里换成你自己的ip和端口
4、点击SRS播放器,在输入流的地址,http://192.168.116.128:8080/live/123.flv,应该看到你的直播桌面了,是不是很简单。
我们开发一般不会使用缺省配置,必须要把配置映射到本地,如果你不确定配置的具体地址,可以将容器启动之后,进入容器查看,找到配置所在地址
因为我有保存的需求,所以我还将视频文件的保存地址做了映射,可以作为回放
-v /home/chongxin/srs2/conf:/usr/local/srs/conf
-v /home/chongxin/srs2/live:/usr/local/srs/objs/nginx/html/live
/usr/local/srs/conf 是所有的配置地址
/usr/local/srs/objs/nginx/html/live\ 是所有的录像地址
dvr 也就是录制视频,可以控制视频的存储时间
视频录制在srs的方案只能通过forward的方式
这里贴一下我的配置,因为在同一台机器上,我有两个配置。
看一下启动的脚本master 的启动脚本
CANDIDATE="192.168.116.128"
docker run --restart=always -it \
-p 1935:1935 -p 1985:1985 -p 8080:8080 \
--name ccp-srs \
-v /home/chongxin/srs/conf:/usr/local/srs/conf\
-v /home/chongxin/srs/live:/usr/local/srs/objs/nginx/html/live\
--env CANDIDATE=$CANDIDATE \
-p 8000:8000/udp \
-d registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/sc/forward.master.conf
看下forward.master.conf配置:
# the config for srs to forward
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-forward
# @see full.conf for detail config.
listen 1935;
max_connections 1000;
pid ./objs/srs.master.pid;
daemon off;
srs_log_tank console;
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
vhost __defaultVhost__ {
tcp_nodelay on
min_latency on;
play {
gop_cache off;
queue_length 10;
mw_latency 100;
}
publish {
mr off;
}
forward {
enabled on;
destination 192.168.116.128:19350; # 这里配置slave的地址
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
}
看下slave的启动脚本
CANDIDATE="192.168.116.128"
docker run --restart=always -it \
-p 19350:19350 -p 2985:1985 -p 9080:8080 \
--name ccp-follower \
-v /home/chongxin/srs2/conf:/usr/local/srs/conf\
-v /home/chongxin/srs2/live:/usr/local/srs/objs/nginx/html/live\
--env CANDIDATE=$CANDIDATE \
-p 9000:8000/udp \
-d registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/sc/forward.slave.conf
看下forward.slave.conf配置:
# the config for srs to forward
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-forward
# @see full.conf for detail config.
listen 19350;
max_connections 1000;
pid ./objs/srs.slave.pid;
daemon off;
srs_log_tank console;
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
vhost __defaultVhost__ {
hls {
enabled on;
hls_path ./objs/nginx/html;
hls_fragment 10;
hls_window 60;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
}
SRS的使用过程中还是有许多的问题,官方公布了微信公众号,这个是TM最难加的微信群,直到现在还没进去,真TM不尊重人,要不是公司内部有人用,还真他妈不选这个方案。已经在打算放弃了。
在加管理者的个人微信之后,经过差不多1天的时间才通过,然后说想进群,说要看搭建的环境,我晚上下班了,就说第二天发他,第二天(10月28号)我准时发了,然后丢过来文档发给我看,我也按他的要求去看了,10月31号微信他说想加群,但是再也没有下文了,真他妈的傲娇,生涯见过的最傲娇的开源管理者,这是害怕使用者交流吗?
今天是11月10号,已经过去10天了,还没回复我,真的气人。
对于这种事,你怎么看? 欢迎留言!!!