uniapp h5 vue3 m3u8 和 mp4 外链视频播放

m3u8视频播放

使用mui-playerhls.js

  1. 安装

    复制代码
    npm install mui-player hls.js

    我的版本是"hls.js": "^1.5.17""mui-player": "^1.8.1"

  2. 使用
    页面标签:

    引用:

    点击目录播放视频:

    m3u8视频播放:

js 复制代码
mp = null;
// isPlay 是否未播放完
// m3u8播放url
// chapter 播放课程信息
m3u8Play(isPlay, url, chapter) {
        const courseInfo = chapter?.courseware;
        // 学习的时间
        let studyHour = 0;
        // 未播放完
        if (isPlay) {
            studyHour = chapter?.coursewareStudyHour?.hours;
        }
		this.$nextTick(() => {
		    this.mp = new MuiPlayer({
		        container: document.getElementById('mui-player'),
		        src: url, // 获取当前章节的视频URL
		        parse: {
		            type: 'hls',
		            loader: Hls,
		            config: {
		                debug: false
		            }
		        },
		        pageHead: false
		    })
		    this.mp.on('ready', () => {
		        const video = this.mp.video();
		        video.addEventListener('play', (e) => {
		            // 点击开始播放 续播
		            video.currentTime = studyHour;
		        })
		        video.addEventListener('timeupdate', (e) => {
		            if (isPlay && e.target.currentTime.toFixed(0) % 5 === 0) {
		                this.addStudyHourFun(courseInfo.coursewareId, e.target.currentTime.toFixed(0))
		            }
		            console.log('播放中', e.target.currentTime,  e.target.currentTime.toFixed(0))
		        })
		        video.addEventListener('pause', (e) => {
		        	// 暂停播放
		            if (isPlay) {
		            	// 记录学习时长
		                this.addStudyHourFun(courseInfo.coursewareId, e.target.currentTime.toFixed(0))
		            }
		        })
		    })
		})
}

mp4外链视频播放

使用原生video播放:

html 复制代码
<video class="course-video" :src="url" :initial-time="initialTime"
   :enable-progress-gesture="false"  @timeupdate="videoPlay($event)"
   @error="videoErrorCallback($event)" controls @pause="pauseVideo($event)"></video>

逻辑代码:

js 复制代码
// 初始值
initialTime = 0;
// 播放视频
lastSecond = -1;
// 暂停时长
stopTime = 0;
// 当前选播 播放时长(总时长)
durationSecord = 0;
// 是否进行学习记录
addStudyHour = true;
videoPlay(ev) {
 // 播放视频
}

videoErrorCallback(e): void {
  uni.showToast({
       icon: 'error',
       title: e.target.errMsg || '视频加载错误'
   })
}

pauseVideo(ev) {
   console.log('暂停',  this.stopTime, courseInfo)
}
相关推荐
局外人LZ10 小时前
Uniapp脚手架项目搭建,uniapp+vue3+uView pro+vite+pinia+sass
前端·uni-app·sass
EasyDSS11 小时前
直播点播/视频会议EasyDSS一站式视频云平台,全场景视频服务开箱即用
音视频·hls·m3u8·点播技术·流媒体直播
Guheyunyi12 小时前
什么是安全监测预警系统?应用场景有哪些?
大数据·运维·人工智能·安全·音视频
2501_9159184112 小时前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
前端呆头鹅12 小时前
Websocket使用方案详解(uniapp版)
websocket·网络协议·uni-app
浮桥13 小时前
uniapp+h5 公众号实现分享海报绘制
uni-app·notepad++
LittroInno13 小时前
TVMS视频管理平台 —— 目标识别跟踪
人工智能·计算机视觉·音视频
newbiai13 小时前
电商直播AI视频生成工具哪个方便快捷?
人工智能·python·音视频
2501_9160074713 小时前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
又是忙碌的一天14 小时前
SpringBoot+Vue+Netty+WebSocket+WebRTC 视频聊天实现
websocket·音视频·webrtc