playbackRate 属性可直接设置 video/audio 播放速度,1 为正常,2 为 2 倍速,0.5 为半速,负数支持倒放(部分浏览器限制),需在 loadedmetadata 后设置且依赖用户手势触发。
怎么用 playbackRate 调整 HTML5 或 播放速度
HTML5 原生支持倍速播放,核心是元素的 playbackRate 属性,它直接控制媒体时间轴推进速度。值为 1 是正常速度,2 是 2 倍速,0.5 是半速,负数还能倒放(部分浏览器限制)。
注意:该属性只对已加载元数据(loadedmetadata 事件后)的媒体生效;设置后不会自动触发播放,需手动调用 play() 或依赖用户交互触发。
-
video.playbackRate = 1.5—— 立即生效,无需重载 - 设为
0会暂停(但不推荐用这个代替pause()) - 某些安卓 WebView 或旧版 Safari 对非 1x 值支持不稳定,建议检测:
if ('playbackRate' in video)
如何安全地暂停/恢复动画(含 CSS 动画与 JS 控制)
CSS 动画和 JS 驱动的动画暂停逻辑完全不同,不能混用同一套方法。
- 对于
@keyframes+animation的 CSS 动画:
用element.style.animationPlayState = 'paused'暂停,设为'running'恢复;
注意它不改变当前动画时间点,恢复后从暂停处继续 - 对于
requestAnimationFrame自驱动的 JS 动画:
保存上一帧时间戳,暂停时停止调用requestAnimationFrame,恢复时重新启动循环;
别直接用setTimeout模拟,会丢失帧同步精度 - Web Animations API(
element.animate()返回的Animation对象):
有原生pause()/play()方法,且支持playbackRate动态调节
为什么 playbackRate 设了没反应?常见卡点
不是所有场景都能自由调速,浏览器策略和媒体状态会拦截无效操作。