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)
}
相关推荐
阿童木写作8 小时前
跨境图片翻译工具推荐:批量处理视频字幕与智能抠图
python·音视频
梦曦i8 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
Agudamu11619 小时前
AI 视频学习笔记工具拆解:4款工具谁能把视频变成复习资料
人工智能·学习·音视频
全速向光11 小时前
VLC Media Player:开源全能跨平台播放器详解
开源·音视频
黄一一91124311 小时前
跨平台视频图片压缩互转!离线视频压缩工具!Github开源轻松无损压缩视频!Win/Mac/Linux三端通用开源工具
windows·macos·音视频·开源软件
科技拓维者12 小时前
短视频配音音效去哪里找比较好?短视频创作者音效指南
人工智能·音视频
javaDocker12 小时前
电视台自建AI短视频生产线与算力底座:技术架构、关键实现与优化实践
人工智能·架构·音视频
2601_9620669313 小时前
短视频批量制作怎么做?2026年用 huasheng-cli 的 --json 与退出码,一张选题表批量出片
json·音视频
半壶清水14 小时前
使用Cambridge Dictionary Audio Downloader插件下载剑桥在线词典音频完整教程
音视频
刘广睿16 小时前
视频字幕从提取到烧录:SRT/ASS 格式与 ffmpeg 字幕滤镜全流程
ffmpeg·音视频·效率工具·剪辑·字幕