现在的直播行业、短视频,已经非常流行。要实现视频的实时传输流,可以使用推流与拉流方式去实现,协议上目前国内大多
用http,国外侧重rtmp与rtsp居多。而不同的协议之间跟播放器又一定的关系,比如苹果自己做了hls以适应它的产品,又或者为了适
应浏览器的H5,会在这些之上加以改进。而推流也会有相应软件去实现,比如OBS_Studio、ffmpeg等。播放器有VLC,网页上的H5.....
2、软硬件
硬件:英蓓特MaaXBoard板卡
调试软件:obs、ffmpeg、vlc、nginx+rtmp
系统:debian10
3、功能
将ffmpeg运行在这个板卡上进行推流与服务操作,在win端或者别的PC用vlc拉流,实现同时多方直播。大致框图如下:
4、实现
4.1、现在win下载好obs、vlc软件,nginx,方便用于测试
4.2、启动板卡系统并登陆,确保能联网,能ping通域名,如下:
4.3、准备就绪后,安装ffmpeg(网上有些是编译方式安装,不是特殊需求我们可以直接apt得到)
- 输入 sudo apt-get update
- apt-get install ffmpeg -y
在运行ffmpeg之前,我们现在win测试,目的就是单步测试,以免在推流拉流过程中的间隔重重障碍不知道那一步出问题,
测试步骤:使用obs推流,用vlc拉流,使用nginx做服务,运行后设置如下:
设置好后回到软件的界面,右下角点击开始推流,此时的过程是:win系统上的obs -----> nginx ------->vlc,vlc设置如下
点击播放既可以,可能需要等待一下下,有个2~3s的延迟。然后就可以看到vlc播放的视频和就是obs推流的视频
左边是vlc播放nginx服务器上的推流视频,右边则是obs推流,经过win上面的测试,我们的视频推流算是正常了,这次去掉obs,
使用ffmpeg进行推流,步骤:win端的nginx和vlc不用关,obs可以关了。将MP4文件传到debian上
在debian上运行ffmpeg命令如下
- 命令参数
- ffmpeg -i dengziqi.mp4 -c:v libx264 -c:a aac -strict -2 -f flv -s 640x360 rtmp://192.168.1.180/live/mv
- -i 是输入源就是我们的MP4文件
- 对视频的转码吧、格式保留和转换、音频采样率等控制就是-i 到 -f 之间的参数,限定了音频 视频 跟标准的严格性等
- 输出flv文件,并 -s 限定画面大小,因为我选这个视频太高清了,CPU压榨完了,不限定就卡卡的,
- 最后通过rtmp输出到win上的nginx服务器
然后来看看板卡的性能,感觉ffmpeg这个库的运行太耗cpu了,控制台输入top -d 2,如下
直接把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+开放的端口。
然后可以在然和地方都可以去访问这个地址看视频,就像在网上搜到的枪版资源一样可以观看,哈哈啊啊~~~~
就类似这样:
5、总结
以上提到的vlc obs nginx都是可以在网上获取到,就不提供了,都是软件下载而已,请自己挖掘。
ffmpeg安装的时候其实还有ffplay的,这个后期值得试一下。强大的ffmpeg参数很多,经过使用发现很多时候视频编解码,传输出问题
清晰度不够,带宽、cpu消耗太多,大都跟参数有关。