先说下功能需求:
客户那里有一些海康摄像头,想把这些网络摄像头的监控画面集成在现有的web项目,通过html显示
之前粗略方案:使用vlc插件
缺点:最大弊端就是只能使用ie内核的浏览器查看,比如ie浏览器,360极速版浏览器。
参考链接:
https://blog.youkuaiyun.com/lxl631/article/details/52461240#commentsedit
新方案:ffmpeg
+nginx
(包括nginx-rtmp-module-master
)+videojs.js
缺点:浏览器端需要允许flash
Q:为什么还要使用videojs.js前端插件?h5的
<video>
标签不可以么?
A:不可以。原生html不支持rtsp协议的视频流,所以需要转成rtmp,video标签无法直接播放rtmp视频流,videojs插件支持rtmp和hls这两种直播常用的视频流协议
**
概述
**
ffmpeg
:很牛逼的流媒体开发框架,在这里我们使用ffmpeg来转码推流,即ffmpeg将rtsp
流转为rtmp
流并推给服务器nginx
nginx
:高并发高性能的服务器,在这里用作转发服务器,因为现在是要作rtmp的转发服务器,还需要安装nginx-rtmp-module-master
并做好配置
videojs.js
:用来前端展示
ffmpeg安装及使用
官网:http://ffmpeg.org/
下载地址:https://ffmpeg.zeranoe.com/builds/win64/static/
安装方式:选个盘解压即可
说明:需要进行环境变量配置
具体见下方贴图
黑窗口输入:ffmpeg -version
测试下
在这里主要是使用ffmpeg进行转码,所以需要命令,下面是我根据自己需求写的几个命令,后面会用到
输入命令方式:在黑窗口直接粘上命令回车即可
//循环推流命令: 延迟4s左右 画质好
ffmpeg -re -stream_loop -1 -rtsp_transport tcp -i "rtsp://admin:ch123456@192.168.1.2/554/ch1/gj3/av_stream" -f flv -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://localhost:1935/live/test"
//设置ultrafast和zerolatency ,延迟 1s左右
ffmpeg -re -stream_loop -1 -rtsp_transport tcp -i "rtsp://admin:ch123456@192.168.1.2/554/ch1/gj3/av_stream" -tune zerolatency -vcodec libx264 -preset ultrafast -b:v