猿创征文|见过的最傲娇的开源管理者,真的气人,SRS视频流方案

Posted 香菜+

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猿创征文|见过的最傲娇的开源管理者,真的气人,SRS视频流方案相关的知识,希望对你有一定的参考价值。

公司需要做视频流的监控,在调研了几家的监控方案,最终选择了开源的方案,一方面因为省钱,一方面也确实简单。调研的过程就不多说了,直接开始吧

1、需求

先说下公司的基本需求

  • 在线视频的观看,路侧视频流可以直接点击观看
  • 路侧视频需要存储,回放

这个我调研了几种视频方案,最终选择了SRS.

2、SRS介绍

SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。

说简单点,SRS就是直播开源软件,你可以自己做个抖音直播,自己卖货,发大财,想想都开心。哈哈哈,扯远了。

官方文档地址:Docker | SRS

3、环境部署

3.1 启动服务

中了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的服务,下面就可以开心的玩耍了,我们推个流试试。

3.2 验证服务

服务启动之后,直接搞个推流软件,现在常用的是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,应该看到你的直播桌面了,是不是很简单。

3.3 配置的映射

我们开发一般不会使用缺省配置,必须要把配置映射到本地,如果你不确定配置的具体地址,可以将容器启动之后,进入容器查看,找到配置所在地址

因为我有保存的需求,所以我还将视频文件的保存地址做了映射,可以作为回放

-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\\ 是所有的录像地址

4、方案选择

4.1 SRS 注意点

  • Http回调,通过hook的方式回调,可以建立一个服务进行控制。
  • 人对于延迟的感知是400ms
  • SRS支持HLS/RTMP两种成熟而且广泛应用的流媒体分发方式。
  • HTTP本质上还是文件分发,网页是HLS还是HTTP
  • 稳定的较小延迟:RTMP延迟在0.8-3秒,能应用于交互式直播,视频会议,互动式直播等等。如果对延时有一定要求,就不要选择HLS,RTMP会是最佳选择。
  • rtmp 测试有2秒的延迟,有没有更低延迟呢。有,就是webRTC。正常延迟为1秒之内。
  • HLS流,作为直播正常延迟10秒起步,所以也不推荐使用。如果要配置
  • 录制,在服务器开启DVR即可
  • 服务器端定制的实现方式,就是HTTP回调。如需要api回调的方式获取dvr,在配置文件加入以下即可。

4.2 方案

  1. DVR实现

dvr 也就是录制视频,可以控制视频的存储时间

   2.视频录制

视频录制在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;
    

5、总结

SRS的使用过程中还是有许多的问题,官方公布了微信公众号,这个是TM最难加的微信群,直到现在还没进去,真TM不尊重人,要不是公司内部有人用,还真他妈不选这个方案。已经在打算放弃了。

在加管理者的个人微信之后,经过差不多1天的时间才通过,然后说想进群,说要看搭建的环境,我晚上下班了,就说第二天发他,第二天(10月28号)我准时发了,然后丢过来文档发给我看,我也按他的要求去看了,10月31号微信他说想加群,但是再也没有下文了,真他妈的傲娇,生涯见过的最傲娇的开源管理者,这是害怕使用者交流吗?

今天是11月10号,已经过去10天了,还没回复我,真的气人。

对于这种事,你怎么看? 欢迎留言!!!

以上是关于猿创征文|见过的最傲娇的开源管理者,真的气人,SRS视频流方案的主要内容,如果未能解决你的问题,请参考以下文章

猿创征文|那些年我们追过的那些技术

(傲娇的白狐)ID插入随机数

(傲娇的白狐)Mybatis二级缓存

猿创征文|第11题求坐上公交的最晚时间(考察贪心算法)

猿创征文|第11题求坐上公交的最晚时间(考察贪心算法)

(傲娇的白狐)Swagger给实体类 接口加注释