海康的摄像头缺省通过rstp 协议输出,但页面集成需要hls 协议。通过摸索,结合网络资料,总结如下:
原理:
通过ffmepg 工具持续将rstp协议的视频流推送到带有RTMP 模块上的Nginx , 再由Nginx 对外提供rtmp 和hls 协议输出
- nginx_rtmp 安装
最简单的安装方法就是使用容器
docker pull alfg/nginx-rtmp
- -- 开放1935 端口是为了下一步把数据推到rtmp , 80 端口是为了hls 协议读取
docker run --restart=always --name nginx-rtmp -d -p 80:80 -p 1935:1935 alfg/nginx-rtmp
- 使用ffmpeg 推视频流
假如摄像头的视频流地址为:rtsp://admin:[email protected]:554/MPEG-4/ch1/main/ava_stream
ffmpeg -re -rtsp_transport tcp -i rtsp://admin:[email protected]:554/MPEG-4/ch1/main/ava_stream -f flv -acodec aac -ar 44100 -strict -2 -ac 1 -s 1280x720 -q 10 rtmp://192.168.204.181:1935/stream/camera
可以通过 rtmp://192.168.204.181:1935/stream/camera
和 http://192.168.204.181/hls/camera.m3u8
来调用。
PS: 以上只是不对容器做任何配置修改的情况下操作。