HTML 音视频
HTML5 带来了原生的 <audio> 和 <video> 标签,不再需要 Flash 插件就能播放媒体内容。
<video> — 视频
html
<video src="movie.mp4" controls width="640" height="360">
您的浏览器不支持 video 标签。
</video> 常用属性
| 属性 | 说明 |
|---|---|
src | 视频文件路径 |
controls | 显示浏览器默认播放控件 |
autoplay | 自动播放(通常需要配合 muted) |
muted | 静音 |
loop | 循环播放 |
poster | 视频加载前显示的预览图 |
preload | 预加载策略:none / metadata / auto |
playsinline | 移动端在页面内播放,不自动全屏 |
大多数浏览器会阻止带声音的自动播放。autoplay + muted 是被允许的组合,常用于背景视频。
多源(兼容不同浏览器)
不同浏览器支持的视频格式不同,使用 <source> 提供多种格式:
html
<video controls poster="preview.jpg">
<source src="movie.webm" type="video/webm">
<source src="movie.mp4" type="video/mp4">
您的浏览器不支持 HTML5 视频。
</video> <audio> — 音频
html
<audio src="music.mp3" controls>
您的浏览器不支持 audio 标签。
</audio> 属性与 <video> 类似:
html
<audio controls autoplay muted loop>
<source src="music.ogg" type="audio/ogg">
<source src="music.mp3" type="audio/mpeg">
您的浏览器不支持 HTML5 音频。
</audio> 媒体格式支持
| 格式 | 类型 | 说明 |
|---|---|---|
| MP4 (H.264) | 视频 | 兼容性最好,几乎所有浏览器支持 |
| WebM (VP8/VP9) | 视频 | 开源,Chrome/Firefox/Edge 支持 |
| MP3 | 音频 | 兼容性最好的音频格式 |
| Ogg Vorbis | 音频 | 开源替代方案 |
| WAV | 音频 | 无损,文件大 |
<track> — 字幕与章节
<track> 为视频添加文本轨道——字幕、章节标记等:
html
<video controls>
<source src="movie.mp4" type="video/mp4">
<track src="subtitles-zh.vtt" kind="subtitles" srclang="zh" label="中文">
<track src="subtitles-en.vtt" kind="subtitles" srclang="en" label="English">
<track src="chapters.vtt" kind="chapters" srclang="zh" label="章节">
</video> kind 可选值:
| 值 | 说明 |
|---|---|
subtitles | 对话翻译字幕 |
captions | 完整字幕(含音效描述,无障碍) |
descriptions | 画面描述(屏幕阅读器使用) |
chapters | 章节标记 |
metadata | 脚本使用的元数据 |
WebVTT 格式示例
text
WEBVTT
1
00:00:00.000 --> 00:00:03.000
欢迎观看本教程
2
00:00:03.500 --> 00:00:07.000
今天我们来学习 HTML 的基础知识
3
00:00:07.500 --> 00:00:12.000
首先,了解 HTML 文档的基本结构
4
00:00:12.500 --> 00:00:18.000
每个 HTML 页面都以 DOCTYPE 声明开始 媒体 API
通过 JavaScript 控制播放:
javascript
const video = document.querySelector('video');
// 基本控制
video.play();
video.pause();
video.currentTime = 10; // 跳转到 10 秒
// 监听事件
video.addEventListener('loadedmetadata', () => {
console.log(`时长: ${video.duration} 秒`);
});
video.addEventListener('ended', () => {
console.log('播放完毕');
});