Web audio playbackRate 解释
`playbackRate` 属性,用于 `<audio>` 和 `<video>` 元素,允许我们改变网页音频或视频的播放速度(速率)。本文将详细解释 playbackRate。
playbackRate 基础知识
让我们先来看一个 playbackRate 用法的简短示例。
js
const audio = document.createElement("audio");
audio.setAttribute("src", "audio-file.mp3");
audio.playbackRate = 0.5;
在这里,我们创建了一个 `<audio>` 元素,并将其 src 设置为我们选择的文件。接下来,我们将 playbackRate 设置为 0.5,这表示正常速度的一半(playbackRate 是应用于原始速率的乘数)。
一个完整的示例
让我们先创建一个 `<video>` 元素,并在 HTML 中设置视频和播放速率控件。
html
<video id="myVideo" controls loop>
<source src="/shared-assets/videos/flower.mp4" type="video/mp4" />
<source src="/shared-assets/videos/flower.webm" type="video/webm" />
</video>
<form>
<input id="pbr" type="range" value="1" min="0.5" max="4" step="0.1" />
<p>Playback Rate <span id="currentPbr">1</span></p>
</form>
一些基本的 CSS
css
form {
font-family: monospace;
}
video {
width: 500px;
aspect-ratio: 16 / 9;
}
并为其应用一些 JavaScript。
js
const v = document.getElementById("myVideo");
const p = document.getElementById("pbr");
const c = document.getElementById("currentPbr");
p.addEventListener("input", () => {
c.textContent = p.value;
v.playbackRate = p.value;
});
最后,我们监听 `<input>` 元素上的 input 事件,以便在播放速率控件更改时做出响应。
defaultPlaybackRate 和 ratechange
除了 playbackRate,我们还有一个 defaultPlaybackRate 属性,它允许我们设置默认播放速率:即媒体重置到的播放速率;例如,当我们更改视频源时,或者(在某些浏览器中)生成 ended 事件时。
因此,defaultPlaybackRate 允许我们在播放媒体之前设置播放速率,而 playbackRate 允许我们在媒体播放期间更改它。
还有一个名为 ratechange 的事件,它在 playbackRate 每次更改时都会触发。
注意
- 大多数浏览器会将播放速率限制在 0.5 到 4 之间,超出此范围的音频将停止播放,但视频会继续静音播放。对于大多数应用程序,建议将范围限制在 0.5 到 4 之间。
- 当
playBackRate改变时,音频轨的音调不会改变。 - 大多数浏览器目前不支持负值,负值表示媒体应该反向播放。
另见
- Hyperaudio 的播放速率测试
HTMLMediaElement:定义了playbackRate属性的接口。