JavaScript通过元素DOM接口控制媒体,需先获取元素并监听loadedmetadata事件确保readyState≥2再操作;常用方法包括play()、pause()、load(),属性含currentTime、volume、paused等;须遵守自动播放策略,静音视频可自动播放,有声媒体需用户交互后调用play()。

JavaScript 通过 和 元素的 DOM 接口控制媒体播放,核心是获取元素引用后调用其方法、监听事件、读写属性。
获取媒体元素并检查就绪状态
先用 document.querySelector 或 getElementById 获取元素,再确认是否已加载元数据(如时长、尺寸),避免调用方法时报错:
-
video.readyState为HTMLMediaElement.HAVE_METADATA(2)或更高值时,才能安全调用play()、读取duration - 推荐监听
loadedmetadata事件,而非轮询readyState - 示例:const video = document.getElementById('myVideo');
video.addEventListener('loadedmetadata', () => { console.log('时长:', video.duration); });
常用播放控制方法与属性
直接操作播放行为和状态:
-
play()启动播放(可能返回 Promise,需处理拒绝,例如用户未交互导致被浏览器阻止) -
pause()暂停播放 -
load()重载资源(清空缓冲、重置状态) -
currentTime读写当前播放位置(秒,可设为小数) -
volume音量(0.0–1.0),muted控制静音 -
paused(布尔值)、ended、seeking等只读属性用于判断状态
关键事件监听实现精准响应
媒体生命周期中多个事件可用于反馈与干预:
本文档主要讲述的是android rtsp流媒体播放介绍;实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频,的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
立即学习“Java免费学习笔记(深入)”;
-
play/pause:用户主动操作后触发 -
timeupdate:播放过程中高频触发(通常每 250ms 左右),适合更新进度条 -
seeked:拖动完成且定位成功后触发(区别于seeking,后者表示正在跳转) -
ended:自然播放完毕时触发 -
error:加载失败或解码出错时触发,可通过video.error.code判断错误类型
注意自动播放策略与用户交互要求
现代浏览器普遍限制无用户手势(如 click、touchstart)触发的音频/视频自动播放:
- 含声音的
video或audio必须在用户交互后首次调用play() - 静音视频(
muted=true)通常允许自动播放 - 建议在按钮点击中调用
play(),并用.catch(e => console.warn('播放被阻止:', e))处理拒绝 - 移动端尤其严格,部分 iOS Safari 要求
playsinline属性才能内联播放









