海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg)

海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg)

实现思路

获取摄像头rtsp流→流媒体拉流转码推流成rtmp流(网页具备flash可播放)→根据rtmp流地址放入网页加载flash即可播放

获取摄像头rtsp地址

海康摄像头取rtsp地址规则(不同品牌可自己查找规则以下以海康摄像头为例)
NVR等其他规则(可下载一个vlc应用测试使用)
海康rtsp取流地址规则

vlc测试
在这里插入图片描述

搭建流媒体服务器

这里使用red5+ffmpeg 也可使用nfinx-rtmp
red5 提取码9wnr
ckplayer播放器 提取码eyw4

安装red5 下载完成后点击red5.bat即可(不要关闭窗口)
在这里插入图片描述
在这里插入图片描述
在网页打入localhost:5080显示下图
在这里插入图片描述
下载安装ffmpeg
在这里插入图片描述

下一步拉流转码推流 使用ffmpeg执行cmd命令进行转码推流

start ffmpeg -rtsp_transport tcp -i rtsp://admin:[email protected]:554/Streaming/Channels/101 -f flv -r 8 -s 4032x2268 -an rtmp://localhost/oflaDemo/test;
根据自己的语言可以编写代码执行cmd命令 如java基于ProcessBuilder类执行cmd命令等等

转码后这里使用ckplay播放器播放rtmp流 可可使用其他播放器
修改里面的rtmp为转码时的rtmp即可
在这里插入图片描述
页面效果
在这里插入图片描述

ps:①转码命令-f flv -r 8 -s 4032x2268 -an 其中8是指的帧数,4032x2268是分辨率,自行设置摄像头帧数填写成摄像头帧数(网页打入摄像头IP地址可以登录摄像头设置页面设置帧数 一般摄像头会默认全屏帧 请根据自己摄像头情况修改)

②分辨率可填高点 视频越清晰(会带来一个问题转码缓慢延迟高可把帧数填低点可解决延迟 自行测试填写适当分辨率 这里使用的摄像头是25帧 为了提高视屏质量把帧数稍微减低了)

③填写不合适的帧数和分辨率会导致丢帧以及几十秒延迟问题
海康官方软件连接摄像头和自己转码推流视屏延迟对比(右边官方软件)可以发现0延迟
在这里插入图片描述
④这里用到的是ffmpeg+red5实现实时视频预览,要求浏览器支持flash(只可在pc端使用 移动端不支持flash所以不行 谷歌也即将全面禁止flash插件以后浏览器也会慢慢剔除flash)

⑤还可以使用ffmpeg+nginx-rtmp实现hls方式预览(原理是切片成ts视频段播放存在10秒以上延迟 下一篇有讲解)