背景
之前转载过一位大佬的采用客户端ffmpeg+脚本jsmpeg+服务端node的解决方案,通过在服务器将rtsp转码后,再使用websocket推送到前端,这种办法可以实现h5中播放rtsp视频流,但是使用几天后,发现了不少问题:
1. ffmpeg转码存在比较严重的延迟,大概在1s左右。通过优化命令,使用硬件加速比较复杂,对于我这种音频处理经验为0的小白来说,学习成本过大,所以硬件加速这一个思路就被我抛弃了。
2. ffmpeg转码有时候特卡顿,对于搞安防的我们来说是灭顶之灾。
3. jsmpeg官方说明全英文,英语小白的我搞了半天没懂怎么播放多路视频流。摸索的过程中浏览器控制台老是报各种各样异常,度娘中居然找不到解决方案。????????
总的来说,就是我比较菜,不能一键解决的方案都会被我抛弃。
方案
那么我们必然得换一种方案了,度年上基本是广告,要么就是换低版本浏览器加插件,要么中间件要我们交智商税!
没办法,只能上github碰碰运气,没想到挖到了宝藏,我可真是个小机灵鬼。
废话说的差不多了,上链接
网页播放RTSP视频流低延迟解决方案RTSP to WebRTC use Pion WebRTC. Contribute to deepch/RTSPtoWebRTC development by creating an account on GitHub.https://github.com/deepch/RTSPtoWebRTC这是github上我找到得比较好得开源解决方案,是使用Go语言开发得,大家没有Go语言基础得可以上菜鸟教程Go教程篇学习个几分钟,安装好环境就Ok,我也是当场学得,抱着试一试得心态。
Go 语言教程 | 菜鸟教程
操作
我们聊一下简单介绍怎么玩这个开源项目,其实项目得作者在readme文件中写的比较好了,我说一下自己遇到问题就好。
1. 下载好项目得zip压缩包后,我们解压,并优先修改项目中得config.json文件得rtsp视频流地址为我们得视频流地址
2. 接着就可以用go run *.go命令运行项目了,启动后如果没报错,就可以使用浏览器打开http://127.0.0.1:8083查看项目得demo效果了
效果
延迟:<500ms
清晰度: 高
性能:稳定
总体来说,这是我目前为止遇到的最满意的解决方案,平台搭建简单,效果好,写此博文,希望大家不要再被坑了。
|