摄像头rtsp流转前端显示

因为之前的需求是直接播放一个http地址下的普通视频,访问静态资源非常简单,前端使用vue,想美化一下video标签,于是找了个播放器组件vue-core-video-player填上路径就能正常播放视频了

vue-core-video-player官方文档:

基本配置 (core-player.github.io)

现在要使用rtsp来实时播放摄像头的视频了,当然不能直接将http地址换成rtsp地址就能播放,但还是想试试找找有没有vue组件能够支持直接播放rtsp视频,找了好多都不行,vue-core-video-player只看到支持hls协议,也是一种视频流协议,但我们必须要用rtsp

rtsp地址都是以协议名rtsp://开头,后面的格式根据不同厂家的摄像头又各有区别,常见的厂家有海康威视、大华,我们用的摄像头是大华的,格式如下

使用本地播放器播放摄像头的rtsp流视频

Windows笔记本本地摄像头提供Rtsp视频流服务 - 知乎 (zhihu.com)

这里我最后使用potplayer播放器也可以播放

在找是否有vue组件能直接播放rtsp的过程中见到很多的解决方案,但很多都提到了后端转码这一操作,开始以为只是一种特别的做法,但发现这样的博客越来越多,这才意识到这个rtsp播放的功能不是原来想的那样只靠前端就能完成的,必须要借助后端,看到下面这位大佬确定的

(166条消息) 轻松实现在web页面中直接播放rtsp视频流_web rtsp_Never Yu的博客-CSDN博客

大佬封装了一个简易的后端转码npm包,使用过确实可以播放,但就是有水印不太符合开源精神,简单解释一下为什么需要后端,是因为浏览器不支持直接播放rtsp流,需要后端将流转码成其他流格式,然后再传给前端显示,具体可以参考知乎评论

(31 封私信 / 81 条消息) 为什么浏览器无法直接播放rtsp的视频?能否实现直接播放rtsp,不通过服务端推送,不用插件? - 知乎 (zhihu.com)

大佬还介绍了rtsp在浏览器显示的多种解决方案

(166条消息) 【前端】rtsp 与 rtmp 视频流的播放方法_rtsp前端播放_Never Yu的博客-CSDN博客

大佬解释了几种我前面看过博客中的解决方案,有基于浏览器插件的,也有基于flash的,插件的方案不太好,因为每个浏览器都要装个插件才能使用,插件可能还不一样,flash如今已经淘汰了。只能使用基于后端转码的解决方案。

转码有很多解决方案,可以转成很多形式给前端:

在web中播放rtsp视频方案对比 - 掘金 (juejin.cn)

已实现的解决方案:

Nginx+FFmpeg 简单实现rtsp转hls流实时推送(window系统) - 改变代码的世界 - 博客园 (cnblogs.com)

本地启动两个ffmpeg,一个将笔记本摄像头的视频推成rtsp流(如果是生产上的摄像头则不需要这个过程,生产上摄像头可以直接给你一个rtsp地址访问),一个转rtsp成hls(转hls的这个会在本地不断生成.ts文件,我播了不到半个钟就到1G多的大小了),本地起一个nginx作为流服务器,将hls流暴露成一个http地址,前端访问这个http地址,就会访问到nginx配置文件中指定hls流数据存放的目录(就是上面说的1G),即可获得hls流

计划的改进方案:

目前rtsp视频地址已经提供,即rtsp流已经准备好,现在需要后端将rtsp流转成flv流,通过websocket来传输flv流,前端使用jsmpeg.js或者b站的flv.js来转成视频显示

高频词:

各自视频流协议

干货!常用的视频流协议科普,一文 Get! - 知乎 (zhihu.com)

前面的研究中出现的高频词ffmpeg,发现很多地方都需要使用他来转码,大佬封装的包也是基于他的,调查发现他是专门将视频转成流的程序

ffmpeg_百度百科 (baidu.com)

ffmpeg确实很强,但也说他占用硬件资源太多,前面转码的解决方案中也有不使用他的

还有一个高频词jsmpeg,跟ffmpeg相辅相成,他的作用是将后端转完码传来的流比如websocket显示成正常的视频,是一个js库,大佬最后在前端的显示也是用他

猜你喜欢

转载自blog.csdn.net/qq_55891741/article/details/129923176