前端Web浏览器基于Flash如何实时播放监控视频画面(三)之使用ffmpeg‘推流’

本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究。为了让文章通俗易懂,尽量使用白话描述。

0x001: 下载ffmpeg

开源免费的推流软件有很多,这里以 ffmpeg 为例。ffmpeg没有可视化界面,如果觉得ffmpeg不好用,当然也可以使用OBS,这款软件有操作界面,比较友好。


下载后解压,无需安装可直接使用,至于环境变量 配不配 都可以,区别是配了以后在使用CMD命令窗口调用ffmpeg时会方便一点,我这里没配。

0x002: 单元测试推流

为了减少出错概率,容易排查错误原因,在上一步骤的流媒体服务器环境搭建完成后 '首次推流时' 需要验证这个服务器的RTMP模块是否能正常访问。

将本地视频推流至RTMP流媒体服务器,找到ffmpeg.exe所在的文件,鼠标右键 '在此处打开命令窗口',敲入:

1 ffmpeg -re -i "C:\Users\Administrator\Desktop\test.mp4" -f flv "rtmp://localhost:1935/mytv/test"

 


其中"C:\Users\Administrator\Desktop\test.mp4"为视频文件所在磁盘的目录,"rtmp://localhost:1935/mytv/test"为RTMP协议地址。


这里重点解释一下RTMP地址,rtmp为协议名称,localhost为协议地址,1935为开放端口号,mytv为nginx根目录/conf/nginx.conf内的rtmp模块application 后的 mytv(可以根据自己的需求改,但要互相对应),test为自定义名称,可以理解为房间ID,如rtmp://localhost:1935/mytv/test1或rtmp://localhost:1935/mytv/1001

之后敲回车,会输出以下信息,黄色圈起来的是当前ffmpeg配置信息和视频的元数据信息以及相应的转码信息,如下图


若推流成功,此CMD窗口内红色方框圈起来的的INFO会一直不停的输出滚动。如下图这样:


使用VLC播放此地址,观察是否能正常播放,下图左侧在实时推流,下图右侧在实时播放(若不能播放,说明上一步骤的流媒体服务器环境搭建的有问题,需要自己排查)


0x003: 正式推流

这里以海康监控RTSP流为例来演示推流

1 ffmpeg -i "rtsp://admin:[email protected]:554/h264/ch1/sub/av_stream" -vcodec copy -acodec copy -f flv "rtmp://localhost:1935/mytv/test1"

推流成功后,同样可以使用VLC播放此地址,观察是否能正常播放。

经测试,生产环境下的ffmpeg,在保证RTSP流正规且稳定的前提下,使用时其实还是挺稳定的。
下图是使用ffmpeg推海康的RTSP流至搭建的RTMP服务器,可以看出,推了大约307小时后停止了,原因是厂房断电导致RTSP流不通导致。


0x004: 遗留问题

因为要转码推流的监控比较多,8个监控想要使用ffmpeg全部推流到RTMP服务器那就得需要开8个CMD窗口,这样的坏处就是在系统的任务栏占据了比较大的空间。将来监控的数量还有可能会扩充,16个,32个......,那这样以来使用 CMD命令窗口的方式 用ffmpeg来推流的方案 似乎有点不可行。

关于这个遗留问题,暂且解决办法是 通过设置任务栏进行相同程序合并隐藏,如果你有什么更好的解决方案,欢迎指出,不吝赐教,THANKS!


0x005: 下一步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章