HTML5 媒体播放监听怎么通过 JavaScript 控制音视频

星晨吖_8155

星晨吖_8155

2026-09-26

457人浏览

原创

html5的和元素提供play()、pause()、volume、currenttime等api实现播放控制,支持timeupdate、ended等事件监听,并需注意移动端自动播放限制及loadedmetadata后读取duration等兼容性问题。

html5 媒体播放监听怎么通过 javascript 控制音视频

HTML5 的 <audio></audio> 和 <video></video> 元素原生支持丰富的 JavaScript API,你可以直接通过元素实例调用方法、读写属性、监听事件来实现精准控制。

基础控制:播放、暂停、音量与进度

获取媒体元素后,常用操作如下:

  • 播放/暂停:media.play() 和 media.pause();注意自动播放受浏览器策略限制(如需静音自动播,可设 muted="true" autoplay)
  • 调节音量:media.volume = 0.7(范围 0.0–1.0),设为 0 即静音;media.muted = true 可强制静音(优先级高于 volume)
  • 跳转时间:media.currentTime = 32.5(单位:秒),赋值后会触发 timeupdate 事件
  • 获取时长:media.duration 在元数据加载完成(loadedmetadata 事件后)才有效,未加载时为 NaN

关键事件监听:掌握播放状态变化

合理监听事件是实现响应式控制的核心。常用事件包括:

HTML Extract
HTML Extract

使用 MinerU 从 HTML 页面和文件中提取内容,将 HTML 转换为保持标题、列表、表格及文本层次结构的干净、结构化 Markdown。F...

下载
  • canplay:媒体已加载足够数据,可以开始播放(但不一定能播完)
  • playing:真正开始播放(区别于 play 事件,后者只表示播放请求发出)
  • pause:用户或脚本主动暂停
  • ended:自然播放结束(loop=false 时触发)
  • timeupdate:播放时间改变时频繁触发(适合更新进度条)
  • error:加载或解码失败,可通过 media.error 查看错误码(如 MEDIA_ERR_NETWORK)

示例:

const video = document.getElementById('myVideo');
video.addEventListener('timeupdate', () => {
  console.log(`当前时间:${video.currentTime.toFixed(1)}s`);
});
video.addEventListener('ended', () => {
  console.log('播放完毕');
});

动态控制:加载、切换与预加载

除实时操作外,还可动态管理资源:

  • 更换媒体源:修改 src 属性后需调用 load() 重载元数据,再调用 play()(如:video.src = 'new.mp4'; video.load(); video.play();)
  • 预加载策略:设置 preload="auto"(默认)、"metadata"(仅加载头信息)或 "none"(不预加载),影响初始加载行为
  • 全屏控制:调用 video.requestFullscreen() 进入全屏(需用户手势触发),退出用 document.exitFullscreen()
  • 画中画:支持 video.requestPictureInPicture()(同样需用户交互触发)

兼容性与实用建议

实际开发中需注意:

  • 移动端 Safari 对 play() 有严格限制:必须在用户点击等手势回调中调用,且不能带延迟(避免 setTimeout 包裹)
  • 部分安卓浏览器不支持 volume 设置(始终按系统音量),但 muted 通常可用
  • 监听 loadedmetadata 再读取 duration 或设置 currentTime,避免 NaN 或无效跳转
  • 使用 media.readyState 判断当前就绪状态(如 HAVE_ENOUGH_DATA 表示可流畅播放)

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

html5 javascript java html

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2103

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4523

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5670

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5098

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

723

5

js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

4226

5

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

2023.07.04

1069

3

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

2023.07.04

4124

6

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

840

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 10.6万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 18.4万人学习

前端开发(基础+实战项目合集)
前端开发(基础+实战项目合集)

共60课时 | 6.3万人学习