1、概述
          现在的直播行业、短视频,已经非常流行。要实现视频的实时传输流,可以使用推流与拉流方式去实现,协议上目前国内大多
用http,国外侧重rtmp与rtsp居多。而不同的协议之间跟播放器又一定的关系,比如苹果自己做了hls以适应它的产品,又或者为了适
应浏览器的H5,会在这些之上加以改进。而推流也会有相应软件去实现,比如OBS_Studio、ffmpeg等。播放器有VLC,网页上的H5.....

2、软硬件
          硬件:英蓓特MaaXBoard板卡
          调试软件:obs、ffmpeg、vlc、nginx+rtmp
          系统:debian10

3、功能
          将ffmpeg运行在这个板卡上进行推流与服务操作,在win端或者别的PC用vlc拉流,实现同时多方直播。大致框图如下:
QQ图片20200813190019.png

4、实现

4.1、现在win下载好obs、vlc软件,nginx,方便用于测试

4.2、启动板卡系统并登陆,确保能联网,能ping通域名,如下:
QQ图片20200813190928.png

4.3、准备就绪后,安装ffmpeg(网上有些是编译方式安装,不是特殊需求我们可以直接apt得到)
  1. 输入 sudo apt-get update
  2. apt-get install ffmpeg -y
等待输出信息完成安装,输入ffmpeg出现版本等信息表示安装成功,
QQ图片20200813191705.png

在运行ffmpeg之前,我们现在win测试,目的就是单步测试,以免在推流拉流过程中的间隔重重障碍不知道那一步出问题,
测试步骤:使用obs推流,用vlc拉流,使用nginx做服务,运行后设置如下:
QQ图片20200813192351.png
QQ图片20200813192653.png

设置好后回到软件的界面,右下角点击开始推流,此时的过程是:win系统上的obs -----> nginx  ------->vlc,vlc设置如下
QQ图片20200813193400.png

点击播放既可以,可能需要等待一下下,有个2~3s的延迟。然后就可以看到vlc播放的视频和就是obs推流的视频
QQ图片20200813193723.png

左边是vlc播放nginx服务器上的推流视频,右边则是obs推流,经过win上面的测试,我们的视频推流算是正常了,这次去掉obs,
使用ffmpeg进行推流,步骤:win端的nginx和vlc不用关,obs可以关了。将MP4文件传到debian上
在debian上运行ffmpeg命令如下
QQ图片20200813194615.png
  1. 命令参数
  2. ffmpeg -i dengziqi.mp4 -c:v libx264 -c:a aac -strict -2  -f flv -s 640x360 rtmp://192.168.1.180/live/mv
  3. -i 是输入源就是我们的MP4文件
  4. 对视频的转码吧、格式保留和转换、音频采样率等控制就是-i  到  -f 之间的参数,限定了音频  视频   跟标准的严格性等
  5. 输出flv文件,并 -s 限定画面大小,因为我选这个视频太高清了,CPU压榨完了,不限定就卡卡的,
  6. 最后通过rtmp输出到win上的nginx服务器
最后通过vlc拉流,实现效果如上图用obs推是一样的,rtmp的实时性也还好,延迟2S这样,比hls延迟10+s好多了,
然后来看看板卡的性能,感觉ffmpeg这个库的运行太耗cpu了,控制台输入top -d 2,如下
QQ图片20200813195325.png

直接把cpu榨干了,如果不控制-s参数,直接卡卡的了。不过这个也要看视频的清晰度,大小,等有关,也不是都占这么多的资源。
至于win系统的nginx服务器和拉流性能就不计了,i5+gpu怎么刷都随意。

4.4、后续
          经过测试,命令ffmpeg -i dengziqi.mp4 -c:v libx264 -c:a aac -strict -2 -f flv -s 640x360 rtmp://192.168.1.180/live/mv 的192这
个地址,可以换成云服务器地址,前提是板卡要能上公网,云服务器要运行有nginx+开放的端口。
然后可以在然和地方都可以去访问这个地址看视频,就像在网上搜到的枪版资源一样可以观看,哈哈啊啊~~~~
就类似这样:
QQ图片20200813201050.png


5、总结


         以上提到的vlc  obs  nginx都是可以在网上获取到,就不提供了,都是软件下载而已,请自己挖掘。
        ffmpeg安装的时候其实还有ffplay的,这个后期值得试一下。强大的ffmpeg参数很多,经过使用发现很多时候视频编解码,传输出问题
清晰度不够,带宽、cpu消耗太多,大都跟参数有关。