ffmpeg api推流,谷歌浏览器播放大华、海康威视网络摄像头rtsp视频流方案(hls、m3u8、flv、webrtc、srs、nginx、nginx-rtmp、rtmp)比较

本文探讨了使用FFmpeg API推流,通过SRS和不同协议(HLS、FLV、WebRTC)实现在谷歌浏览器无插件播放大华、海康威视网络摄像头视频流的多种解决方案。作者发现WebRTC配合SRS4在延迟和并发性能上优于其他方法,尤其在低延迟和高并发场景中表现优秀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ffmpeg api推流,谷歌浏览器播放大华、海康威视网络摄像头rtsp视频流方案(hls、m3u8、flv、webrtc、srs、nginx、nginx-rtmp、rtmp)比较

将网络摄像头视频流在主流浏览器中无插件播放,不必局限于ie中使用摄像头厂商自带的插件播放。

尝试了几种方案:

①nginx + nginx-rtmp-module + hls + EasyWasmPlayer.js
②srs + flv + h5
③srs + flv + EasyWasmPlayer.js
④srs + webrtc + jswebrtc

以上所有方案均是将rtsp协议转换为rtmp协议,视频格式均转换为flv。

所有延迟对比前面(下面)时间为大华摄像头ie插件播放,后面(上面)为谷歌浏览器vue项目中播放。

基础准备

我在虚拟机中部署了nginx服务器,nginx-rtmp-module rtmp服务器。

在虚拟机中使用docker部署了srs3和srs-4,只有第四版才支持webrtc

使用ffmpeg api推流,命令行推流都是一样的。
推流代码:https://blog.youkuaiyun.com/m0_46144966/article/details/115416301

从主机推流到虚拟机的服务器上后,在主机谷歌浏览器中拉流播放。

视频流来自大华网络球机。

srs地址和docker安装方式:https://github.com/ossrs/srs/tree/4.0release

nginx-rtmp-module地址和安装方式:https://github.com/arut/nginx-rtmp-module

EasyWasmPlayer.js用于播放hls(m3u8)和http/flv协议的视频:https://www.npmjs.com/package/easywasmplayer
这个一定按照官网给定的方式使用,放在根目录下。

rtmp(vlc播放)

从srs上拉流播放,延迟在5-6s之间:
在这里插入图片描述

hls(m3u8) 浏览器播放

nginx + nginx-rtmp-module + hls + EasyWasmPlayer.js

延迟在10s左右,不太稳定,根据hls切片大小不同,效果不一样,有些设定会影响流畅性。
在这里插入图片描述

flv 浏览器播放

srs + flv + EasyWasmPlayer.js

延迟在2s左右
在这里插入图片描述

srs + flv + h5

延迟不到2s
在这里插入图片描述

webrtc 浏览器播放

srs + webrtc + jswebrtc.js
延迟比大华摄像头ie浏览器插件播放还要低,我这边可以看到谷歌浏览器中的的时间比ie中的时间先变化。
在火狐浏览器中播放出现网络问题,这是因为jswebrtc.js的配置不全,无法绕过网络拉流。
webrtc浏览器播放

总结

最终发现还是webrtc + srs4 + ffmpeg 的方案比较理想,在同时拉20个流播放时,延迟依然和大华的ie插件播放方式相当,少于20个甚至比ie插件更快。

如果觉得有什么需要补充的请联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值