vue项目中使用video.js播放m3u8格式文件

1.安装依赖包

npm install video.js --save // 视频播放器插件
npm install videojs-contrib-hls --save // 播放hls流插件


2.在main.js引入vido.js的样式文件

import 'video.js/dist/video-js.css' //videojs样式

 


3.video.js所在页面引入和使用

import videojs from 'video.js'
import 'videojs-contrib-hls'
import "@videojs/http-streaming"

 

4. 页面

<video id="cameraMonitoringVideo" class="video-js vjs-default-skin" preload="auto">
<source :src="vodeoUrl" type="application/x-mpegURL">
</video>

 

====================================

/ 播放器初始化

复制代码
this.player = videojs('cameraMonitoringVideo', {
bigPlayButton: false,
textTrackDisplay: false,
posterImage: true,
errorDisplay: false,
controlBar: true,
muted: true //静音模式 、、 解决首次页面加载播放。
}, function () {
this.play() // 自动播放
})
复制代码

 



video.js视频播放器销毁
// 离开页面销毁视频播放器

beforeDestroy() {
if (this.player != null) {
this.player.dispose() // dispose()会直接删除Dom元素
}
}

 

二、使用video.js播放视频流出现的问题以及解决方案
video.js播放hls时,当视频的 m3u8 文件加载成功并且浏览器无法获取其中一个 ts 文件时,video.js会不断进行重试,导致视频画面卡顿,无法正常播放视频画面。

错误信息: 404(Not Found) VIDEOJS: WARN: Problem encountered with the current HLS playlist. Trying again since it is the final playlist.

// 监听错误事件(如果其中一个ts文件获取失败,需要进行重试次数限制,并且重新加载视频流,以保证视频能够继续播放)

this.player.tech_.on('retryplaylist', () => {
console.log("ts文件获取失败404.....");
// this.src(this.vdoSrcGuan)
this.load()
this.play()
})

 



video.js播放hls时,出现视频延迟加载的问题。

复制代码
this.player.on('timeupdate', function () {
// 计算表最新推流的时间和现在播放器播放推流的时间
let differTime = this.buffered().end(0) - this.currentTime();
// 差值大于6s时进行重新加载直播流
if (differTime >= 6){
console.log("重新加载视频流",this.player);
// this.src(this.vdoSrcGuan)
this.load()
this.play()
}
})
复制代码

 



video.js播放hls时,初始化播放正常,过一段时间出现视频卡顿,导致页面所有的视频一直加载,无法恢复正常播放。

// 监听video播放器卡顿加载loading时候触发seeking
// 说明:(1)如果卡顿次数不到三次,seekingTimes归零,继续播放;
// (2)如果卡顿次数达到三次,就重新加载视频流;

复制代码
let seekingTimes = 0
this.player.on("seeking",function(){
seekingTimes ++
console.log("直播卡顿加载loading",this.player);
if(seekingTimes >= 3) {
seekingTimes = 0
// this.src(this.vdoSrcGuan)
this.load()
this.play()
}
})
//监听video播放器拿到视频流重新播放时出发seeked
this.player.on('seeked',function(){
seekingTimes = 0
// 已经拿到视频流,可以播放
console.log('seeked')
})
复制代码

 


————————————————
版权声明:本文为CSDN博主「hzx-web」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39135926/article/details/118225035

posted on   樱桃小王子yummy  阅读(5379)  评论(3编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示