Vue3下的视频直播流方法(RTSP和HLS流)

Vue3/Vite引入EasyPlayer.js播放H265视频错误的问题 Vue3/Vite引入EasyPlayer.js播放H265视频错误的问题及播放器刚开始接收不到流报错的解决方案 阅读详情
AI摘要

本文探讨了Vue3中使用HLS和RTSP流在大华视频直播中的优缺点,介绍了vue3-video-player和EasyPlayer.js的实战应用,并针对RTSP流的DHPlayer插件进行了详细分析。着重讨论了HLS的分片下载挑战、RTSP的实时性和插件兼容性问题。

Vue3下的视频直播流方法(RTSP和HLS流)

应用场景:大华视频直播流,有HLS和RTSP两种,需要在vue界面上播放

一、两种流的在vue下的优缺点

优点:
  1. HLS流实现简单,使用控件和js即可实现,完美融合前端界面,界面好不好看取决于你的美工。而且因为HLS是分片下载播放的,可以直接在控件上实现回看视频的效果开源,并且开源控件有多种选择。
  2. RTSP流,实时性高,清晰度更高(个人感觉,不知道是不是设置问题),流畅度也很高,并且支持H264和H265。
缺点:
  1. HLS只支持H264格式,H265格式下无法播放(个人使用情况,如果你能找到可以播放的,请弹我)。而且因为HLS流是分片下载播放,需要浏览器先下载然后播放,所以延迟很高,在十秒多甚至更多。并且对浏览器和网速的要求还是比较高的,视频流畅度取决于网速。(我使用辅码流单路播放很流畅,辅码流6路播放偶尔卡顿)

  2. RTSP流网上的解决方案不多,大部分都是需要插件进行播放,这就造成了对控件的要求很高,但是控件一般对网页的适配度又不高,很容易搞成错位,浮屏或者其他的样式问题,但是对于流畅度和清晰度相比来说会好一点。插件的解决方案,我暂时看到两种,一种是VLC插件,但是支持的浏览器少。另一种是大华官方的插件,不支持自定义菜单,并且插件浮于浏览器最上册,对网页版很不友好。(网上还有一种方案是将RTSP通过FFmpeg转码到HLS/FLV等流进行播放,这种就需要在服务器上搭一个转码服务,对服务器的消耗还是挺大的,所以就没有选择)

二、HLS流下的VUE播放

vue3-video-player
  1. 使用vue3-video-player进行播放:GitHub地址(这里只介绍npm安装方式,其他方式查看GitHub地址内其他安装方式)

    • 首先npm安装依赖

       npm install @cloudgeek/vue3-video-player --save
      
    • 组件或者全局引用

      //...全局内引用
      import Vue3VideoPlayer from '@cloudgeek/vue3-video-player'
      import '@cloudgeek/vue3-video-player/dist/vue3-video-player.css'
      //....
      app.use(Vue3VideoPlayer, {
          lang: 'zh-CN'
        })
      

      引入之后就可以直接播放一些MP4等视频。

    • 如果要播放HLS,需要在组件页引入HLS相关js

      import HLSCore from '@cloudgeek/playcore-hls'
      data() {
          return {
            HLSCore,
      		}
      }
      
      //然后再template内添加控件
      //:src是地址,title是视频标题
      <div class="test-player-wrap">
        <vue3-video-player :core="HLSCore" :src="liveArrSource" title="test">
        </vue3-video-player>
      </div>
      

      使用这个插件有一些问题:

      问题1.muted设为true时,有时会存在声音存在,即使chrome浏览器策略默认静音,但是但是会存在视频声音。

      我的解决方法是在组件加载完后再进行设置一次:

      this.$nextTick(() => {
          var videos = document.getElementsByTagName("video")
      //多个组件
          videos.forEach(element => {
               element.muted = true;
               element.autoplay = true;
          	});
          })
      

      问题2:更换地址后,视频播放源没有改变,需要给组件属性上添加key

      <vue3-video-player :core="HLSCore" :key="liveArrSource" :src="liveArrSource" title="test">
      
EasyPlayer.js
  1. 使用开源的EasyPlayer.js播放,这个控件支持多种流的播放,网上选择的也比较多。GitHub

    • npm安装依赖

      npm install @easydarwin/easyplayer --save
      
    • 将指定文件放入指定目录(网上很多人使用的都是copy-webpack-plugin在js种进行复制,我没成功,直接手动复制)

      将EasyPlayer-element.min.js和EasyPlayer.wasm放入到public文件夹下即可。

    • 组件内引入并使用,具体参数可参考GitHub内

      import EasyPlayer from '@easydarwin/easyplayer';
      components: { EasyPlayer }
      
      
      //template内添加控件
      <EasyPlayer :videoUrl="videoUrl" live :autoplay="autoplay" stretch></EasyPlayer>
      

三、RTSP流下的VUE播放

VLC(浏览器支持少,不介绍)
大华官网插件DHpayer
  1. 大华官网->下载->插件,视频WEB插件-DHPlayer V_xxxxxx程序包和文档下载。(如果这里找不到,请看最后补充内容,有Demo和教程)

  2. 下载完成后,安装DHplayer.exe,安装目录随意。

  3. 安装结束后,进入安装目录\demo\vue2_Version\插件+vue组件源码\目录下,将DHplayer.vue和videoPlayer.js放入项目文件夹下。(这两个文件放入同一个文件夹下)

  4. 组件上使用

    import DHPlayer from "你放的地址/HPlayer"
    //export default下添加
    components: {
            DHPlayer
        },
    //template添加
    <DHPlayer :noTip="true" num="6" class="dhplay" ref="MutilPlayer" videoId="MutilPlayer" :pathList="pathList" :shieldClass="['test_drop']"></DHPlayer>
    
    注意: num是初始化窗口数量,pathList必须是视频地址【数组】

DHPlayer的问题:

1. 浮于浏览器上层,最新版的插件和div有一点位移,可通过样式改善。 2. 不可自定菜单或者隐藏右键菜单,如果想做全屏服务,就会覆盖其他控件,就很难受,但是控件自带全屏按钮。 3. 需要每台电脑安装DHplayer.exe.(下载可能会报病毒,火绒下会报病毒,关掉杀毒软件重新下载或者安全允许就行了) 4. 如果点奥没安装插件需要提示,到videoPlayer.js里分eerror方法内进行添加。

优点:视频可拖拽,可自定义分屏,一个控件就可以播放多路视频,视频流畅度很nice。

具体功能可在 安装地址\demo\vue2_Version\下打开 start.exe查看demo,上面有代码可以参考。

如果对是视频流畅度和格式有要求,或者只支持RTSP,推荐大华插件,如果希望融合页面,支持HLS,FLV,或者其他流,推荐Vvue3-video-player和EasyPlayer.js。

补充内容:

很多人一直私我说找不到文档和插件。这里说明一下:我去官网看了一下,我也找不到了,因为官网改动好大,而且他插件好像版本也在更新。
这里提供一下我找到的大华最新插件下载地址和教程地址(如果无法使用说明又改了,我如果能找到,也会及时更新的):
dhplayer在线文档链接
​
​WSplayer在线文档链接,应该是ws和wss通信用的
​
​HLS/FLV在线文档链接

【Vue3】Vue3使用video-player实现视频播放 video-player 是一个基于 video.js 的视频播放器组件,它提供了丰富的功能,包括视频播放、暂停、快进、快退、全屏、音量控制等。video-player 的使用非常简单,如下安装即可。其中,src 属性是视频的地址,poster 属性是视频封面,controls 属性表示是否显示控制栏,autoplay 属性表示是否自动播放。video-player 还提供了许多其他属性,可以用来配置视频播放器的行为, 阅读详情

相关推荐

前端监控摄像头实战:用flv.js实现浏览器无插件播放RTSP流(Vue3+Node方案)

本文详细介绍了如何在Vue3前端项目中,通过Node.js中间件将监控摄像头的RTSP流转码为FLV格式,并利用flv.js实现浏览器无插件播放的完整方案。该方案解决了浏览器原生不支持RTSP协议的核心问题,特别适用于智慧园区、安防监控等需要实时视频直播的场景,提供了低延迟、高可用的企业级解决方案。

u9v0w的博客 218

EasyPlayer.js播放器用vue3.0集成出现报错是什么原因?

出现上述报错的现象是因为,vue3.0不是通过npm导入,而是通过html的方式集成。

TSINGSEE青犀视频官方技术博客 2121

海康威视Web3.2无插件开发实战:从RTSP到浏览器播放全解析

在Web应用开发中,实现音视频流的实时传输与播放是一项常见需求,其核心原理在于将设备端的原始流媒体协议(如RTSP)转换为浏览器原生支持的格式。通过流媒体服务器进行协议转换与转封装,结合WebSocket实现低延迟双向通信,这项技术能显著提升跨平台兼容性与安全性,摆脱对浏览器插件的依赖。在安防监控、视频会议等应用场景中,这种无插件方案已成为主流。本文以海康威视设备为例,详细解析如何利用HTTP-FLV、WebSocket等现代Web技术栈,构建稳定高效的无插件视频应用,其中涉及Nginx流媒体服务器配置、S

weixin_34124651的博客 524

vue项目使用easyplayer播放m3u8直播推流

项目背景如图后端给了m3u8的直播地址 协议是 hls / flv市面上很多第三方热门播放库都可以完成该多屏播放方式 如Video.js问题在于 分多屏时 会存在性能问题 并且关闭播放器后 即便删除Dom或调用停止等方法 F12网络还在不断的请求分片故采用该库该库使用方便 性能较好 文档清晰 几乎0上手成本。

weixin_46607967的博客 4275

Vue3视频播放器组件Vue3-video-play入门教程

Vue3-video-play适用于 Vue3 的 hls.js 播放器组件 | 并且支持MP4/WebM/Ogg格式。1、支持快捷键操作2、支持倍速播放设置3、支持镜像画面设置4、支持关灯模式设置5、支持画中画模式播放6、支持全屏/网页全屏播放7、支持从固定时间开始播放8、支持移动端,移动端会自动调用自带视频播放器9、支持hls视频流播放,支持直播10、hls播放支持清晰度切换。

猿小白的博客 2万+

Vue+webrtc-streamer实现低延迟RTSP视频直播预览

WebRTC作为浏览器原生实时通信标准,凭借端到端低延迟特性,成为视频直播和监控预览领域的热门技术。而RTSP是安防摄像头普遍采用的流媒体协议,却无法被浏览器直接解析。webrtc-streamer作为一个轻量级流媒体网关,将RTSP流转换为WebRTC协议,使网页端无需插件即可实现毫秒级延迟播放。在Vue工程中集成webrtc-streamer,可以快速搭建多路实时视频预览面板,替代延迟高达数秒的HLS或兼容性欠佳的HTTP-FLV方案。本文从方案选型、服务部署到核心代码封装,完整展示基于Vue的webr

weixin_29847829的博客 251

告别Flash!Vue+video.js实现RTMP直播的现代方案(含RTSP转HLS对比)

本文详细介绍了如何利用Vue.js和video.js构建现代Web视频直播方案,以替代已淘汰的Flash技术。文章核心在于通过FFmpeg将传统RTSP/RTMP流转换为前端友好的HLS(m3u8)或HTTP-FLV协议,并提供了完整的前后端实现代码、性能优化及安全部署指南,有效解决了老旧摄像头设备在无Flash环境下的Web播放难题。

weixin_29019241的博客 452

使用electron静默打印

使用electron静默打印 1.使用electron打印的理由 很多情况下程序中使用的打印都是用户无感知的。并且想要灵活的控制打印内容,往往需要借助打印机给我们提供的api再进行开发,这种开发方式非常繁琐,并且开发难度较大。 electron提供的打印api可以非常灵活的控制打印设置的显示,并且可以通过html来书写打印内容。 2.api ele...

w1366352655的博客 945

Vue前端中展示监控摄像头视频流

Vue前端中展示监控摄像头视频流

flamesfather的博客 3487

三菱 FX5U PLC 4轴程序 控制松下伺服3个, 步进电机一个

三菱 FX5U PLC 4轴程序。 控制松下伺服3个, 步进电机一个, 四轴自动堆垛码垛设备程序, 回原点动作用专用的原点回归指令写的, 手动运行用三菱相对定位指令写的 , 自动运行用绝对定位指令写的取料运行, 表格定位写的自动放料运行, 设备各种报警异常都有写出 程序每一步都有注释。 包括PLC程序、显控触摸屏 程序、松下伺服驱动器接线图。 程序内都有IO注释 编号:4816635519484681汇美0808 ...

m0_68069172的博客 3381

工业相机与ABB机器人Socket通信实战:手把手教你用RobotStudio 6.08搭建视觉引导工作站

本文详细介绍了工业相机与ABB机器人通过Socket通信实现视觉引导工作站的实战教程。使用RobotStudio 6.08平台,涵盖工作站搭建、坐标系标定、RAPID代码开发及TCP/IP通信配置,特别解析了欧拉角与四元数转换等关键技术难点,助力智能制造产线升级。

weixin_42531516的博客 407

浏览器播放rtsp视频流:2、ffmpeg转hls播放(go后端利用hls做简单视频直播)

浏览器播放rtsp视频流:2、ffmpeg转hls播放(go后端利用hls做简单视频直播) 文章目录浏览器播放rtsp视频流:2、ffmpeg转hls播放(go后端利用hls做简单视频直播)1. 前言2. wsl安装ffmpeg并转换rtsp为hls3. 前后端示例代码3.1 后端go代码3.2 前端代码4. 结果及评估 1. 前言 上一次我们找到一些开源方案,目前我们先测试一下ffmpeg转hls播放的方式,看下延迟情况及兼容性情况,主要测试Windows、Linux和macOS中使用谷歌浏览器播放的情

逍遥游的博客 1568

【5G】5G 核心网(5GC)基本架构

本文旨在科普5G核心网相关知识...

Learning makes me happy (0^◇^0) 4万+

记一次vue3实现TRSP大华相机拉流的经历

在网页上直接播放rtsp相机流

小码哥的专栏 2450

Immich vs Nextcloud照片管理实测:自建私有云相册到底选哪个?

本文深度评测了Immich与Nextcloud在私有云相册管理中的表现,涵盖核心功能、性能基准、本土化实践及进阶功能。Immich凭借微服务架构和AI优化在照片管理、移动端体验上表现优异,而Nextcloud则强在生态整合。文章还提供了Docker部署优化和国内网络适配方案,帮助用户根据需求选择最佳方案。

seed的博客 324

【OCPP】ocpp1.6J协议框架说明

本文档的目的是为读者提供创建正确的可互操作 OCPP JSON 实现 (OCPP-J) 所需的信息。我们将根据我们自己的经验,尝试解释什么是强制性的、什么是良好做法以及什么是不应该做的。毫无疑问,误解或歧义仍然存在,但我们旨在通过本文件尽可能地防止它们。IANA:互联网数字分配机构(OCPP-J:使用JSON通过WebSocket进行OCPP通信。特定的OCPP版本应使用J扩展进行指示。OCPP1.5J表示我们正在讨论1.5版本的JSON/WebSocket实现。

qq_53871375的博客 1239

Vue显示FFmpeg推的流

vue显示ffmpeg显示的视频流

caip12999203000的博客 1223

Dify框架面试内容整理-如何进行Dify的二次开发?

无论是轻量修改界面,还是深度集成自定义模型、Agent、知识库,你都可以很方便地进行二次开发。,你可以基于它的开源架构对功能进行扩展、集成第三方服务、修改界面风格,甚至定制新的AI工作流程。前端:Node.js >= 16,React + TypeScript + Tailwind。接入自己的模型API(如:调用LLaMA、Baichuan、ChatGLM)。修改路径:/api/app/services/providers/可接入你自己的向量数据库(Qdrant、Milvus、FAISS)

不务正业的猿 2002

uniapp中实现RTSP视频流实时直播的组件封装与优化

本文深入探讨了在uniapp中实现RTSP视频流实时直播的组件封装与优化方案。针对RTSP协议在移动端原生不支持的问题,文章提出了通过流媒体服务器转码为HLS等可播格式的核心思路,并详细介绍了组件设计、动态拉流API集成、心跳保活、断线重连等关键优化策略,旨在帮助开发者构建稳定、低延迟的跨端直播应用。

q5r6s7的博客 638

构建个体结构脑网络的另一种方法

这篇文献提出了一种构建个体结构脑网络的方法即Morphometric INverse Divergence (MIND),通过T1像数据即可对每个被试构建一个脑网络,且通过多个特征进行构建而非单一的特征。即可获得由4个特征得到的个体结构网络矩阵,可以根据自己的需求采用不同的特征组合得到网络矩阵,也可以结合T1/T2像得到髓鞘化相关的网络矩阵,后续可修改代码批量处理自己的数据。这是文献贴出来的代码。在终端直接克隆到本地。2.修改路径运行代码。

weixin_52073820的博客 822

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Vue前端展示监控摄像头视频流的实现方案

Vue前端展示RTSP监控视频的3种实现方案:1)通过FFmpeg将RTSP转HLS流,前端使用hls.js播放;2)通过WebSocket+WebRTC实现低延迟播放;3)使用云服务中转。HLS方案兼容性好但延迟较高(5-10秒),WebRTC延迟低(<1秒)但实现复杂,云服务免运维但成本高。需注意摄像头认证、跨域和安全性问题,推荐从HLS方案开始验证。

weixin_56334307的博客 1781

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

yolo推流;将yolo识别的内容传入到前端; opencv拉流推流,rtmp+nginx拉推流,http-flv+nginx拉推流

*免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一:项目需求介绍 场景二:基础知识点介绍 场景三:nginx+rtmp流媒体服务器搭建 场景四:拉流和推流 场景五:nginx+http-flv的推流 . . . 场景一:项目需求介绍 rtmp在线测试地址:http://cloud.liveqing.com:10080/#/liveplayer(需要加载flash插件) http-flv在线测试地址:http://bilibili.github.io/flv.js/

weeks 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

vue播放video插件vue-video-player实现hls, rtmp播放全过程

1.安装插件 1 npm install vue-video-player -S 2.配置插件在main.js里添加 1 import VideoPlayer from 'vue-video-player' 2 require('video.js/dist/video-js.css') 3 require('vue-video-player/src/custom-theme...

weixin_30614587的博客 615

EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(三)- webpack + vue + AdminLTE 多页面引入 element-ui

EasyDSS流媒体解决方案总体可划分成三个部分:前端视频源设备(PC、手机、摄像机)流媒体数据获取并即时回传、流媒体服务器端直播和录像与回放、客户端直播播放与录像检索回放。前端推流我们使用跨平台的RTMP推送库EasyRTMP(支持平台包括有:Windows、Linux、Android、iOS、ARM),流媒体服务器端采用EasyDSS流媒体服务软件,客户端支持全平台(Windows、Andro...

Babosa的专栏 497

Vue.js项目中H.265视频流播放:服务端转码与前端集成实战

视频编解码是多媒体技术的基础,H.265(HEVC)作为新一代编码标准,相比H.264能在同等画质下节省约50%带宽,对降低服务器压力与用户流量消耗意义重大。其原理在于更高效的压缩算法,但技术价值受限于浏览器兼容性,因为专利问题,主流浏览器未内置对H.265的普遍支持。这导致在Web端直接播放H.265流面临挑战,尤其在Vue.js等前端框架构建的智慧安防、在线教育等应用场景中。为解决此问题,核心思路是通过服务端转码技术,将H.265流实时转换为广泛支持的H.264格式或HLS/HTTP-FLV等协议,再交

weixin_31556767的博客 346

Web直播之RTMP协议:vue-video-player + videojs-flash

liveweb是好游科技开发的一款web播放器,支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。 全面支持H265/H264/AAC/G711/OPUS。 支持WebRTC推流,支持转其他协议 支持WebRTC播放,支持其他协议转WebRTC 支持TWCC rtcp动态调整码率 支持remb/pli/sr/rr rtcp 支

liveweb视频汇聚平台 1406
上一篇: 枚举类的定义和使用
下一篇: 多线程处理的结果顺序完成和结束
黄焖大排骨
博客等级 码龄8年 52粉丝 19原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值