当前位置: 首页 > article >正文

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视频播放:
    在这里插入图片描述
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播放:

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

逻辑代码:

// 初始值
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)
}

http://www.kler.cn/a/428755.html

相关文章:

  • Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250121
  • EDI安全:2025年数据保护与隐私威胁应对策略
  • 如何在oracle关闭情况下如何修改spfile的参数
  • GS论文阅读--GeoTexDensifier
  • BH1750使用程序
  • 为什么相关性不是因果关系?人工智能中的因果推理探秘
  • LeetCode45:跳跃游戏II
  • 【CSS in Depth 2 精译_067】11.2 颜色的定义(中):CSS 中的色域与色彩空间
  • C# GDI绘制的倒计时控件
  • 数组 - 八皇后 - 困难
  • 模拟IC设计中LDO的学习笔记(一)
  • 【C#】NET 9中LINQ的新特性-CountBy
  • 【Pandas】pandas wide_to_long
  • AWS Kinesis Firehose 权限配置完全指南
  • BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示
  • DSA 和 ECDSA 签名算法
  • 调用matlab用户自定义的function函数时,有多个输出变量只输出第一个变量
  • 【Linux课程学习】:站在文件系统之上理解:软硬链接,软硬链接的区别
  • 面试中遇到的一些有关进程的问题(有争议版)
  • Linux学习笔记15 何为HDD,SSD?sata?PCIE?分区,MBR,GPT分区的理解
  • STM32标准固件库官网下载方法
  • Spring Boot微服务应用实战:构建高效、可扩展的服务架构
  • 显示设备驱动开发
  • 【力扣】2094.找出3为偶数
  • 【Leetcode 每日一题】3001. 捕获黑皇后需要的最少移动次数
  • 【CSS in Depth 2 精译_066】11.2 颜色的定义(上):实现示例页中的基础样式及初步布局