音视频与嵌入
HTML5 之前,网页里嵌视频音频要靠 Flash 等插件,又慢又麻烦。HTML5 直接内置了 video、audio 标签,加上万能的 iframe 可以嵌入任何外部页面。这一章讲清这些"富媒体"标签的用法。
1. video 视频标签
video 用于在网页里嵌入视频。最简单的写法只需 src,但强烈建议加 controls 否则用户没法控制播放:
<!-- 基本用法:src 指定视频地址 -->
<video src="movie.mp4"></video>
<!-- 推荐写法:controls 显示控制条 -->
<video src="movie.mp4" controls></video>
<!-- 完整属性 -->
<video
src="movie.mp4"
controls <!-- 显示播放控制条 -->
autoplay <!-- 自动播放(浏览器限制,通常需 muted) -->
muted <!-- 静音 -->
loop <!-- 循环播放 -->
poster="cover.jpg" <!-- 封面图(播放前显示) -->
width="640"
preload="metadata" <!-- metadata/none/auto:预加载策略 -->
>
您的浏览器不支持 video 标签。
</video>关键属性:
controls:显示播放/暂停/进度条/音量控制。不加这个用户没法操作。autoplay:自动播放。但现代浏览器都禁止自动播放有声音的视频,必须同时muted才生效。muted:默认静音。loop:循环播放,常用于背景视频。poster:封面图。视频加载前显示的图片,提升体验。preload:预加载策略。auto(默认,加载全部)、metadata(只加载元数据)、none(不预加载)。width/height:视频显示尺寸。
2. 多源 source 子标签
不同浏览器支持的视频格式不同(MP4 / WebM / OGG),为了兼容性,推荐用 source 子标签提供多个源,浏览器按顺序选第一个能播放的:
<!-- 多源:浏览器选第一个能播放的 -->
<video controls>
<source src="movie.webm" type="video/webm">
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
<p>您的浏览器不支持 video,请<a href="movie.mp4">下载</a>观看。</p>
</video>
<!-- 不同浏览器支持不同格式,多源是兼容性最佳实践 -->注意:同时使用 src 属性和 source 子标签时,子标签会被忽略。多源时只用 source,不要在 video 上写 src。
3. 视频格式选择
- MP4(H.264 编码):兼容性最好,所有浏览器和移动端都支持。优先选。
- WebM(VP8/VP9 编码):Google 推的格式,体积更小,Chrome/Firefox 支持好。
- OGG(Theora 编码):开源格式,Firefox 支持,现在用得少。
最佳实践:同时提供 MP4 + WebM 两个源,MP4 兜底,WebM 提升性能。
4. audio 音频标签
audio 用于嵌入音频,用法和 video 几乎一样,但没有 poster/width/height(因为本身没画面):
<audio src="song.mp3" controls></audio>
<!-- 完整属性(类似 video,但没有 poster/width/height) -->
<audio
src="song.mp3"
controls
autoplay
loop
preload="auto"
>
您的浏览器不支持 audio 标签。
</audio>
<!-- 多源 -->
<audio controls>
<source src="song.mp3" type="audio/mpeg">
<source src="song.ogg" type="audio/ogg">
</audio>常用于播客、背景音乐、音乐播放器。同样推荐用 source 多源,提供 MP3 + OGG。
5. iframe 嵌入任意页面
iframe 是"内联框架",可以在你的页面里嵌入另一个完整页面。最常见用途:
<!-- 嵌入其他页面:src 指定 URL -->
<iframe src="https://example.com" width="800" height="600">
</iframe>
<!-- 嵌入 YouTube 视频 -->
<iframe
width="560" height="315"
src="https://www.youtube.com/embed/视频ID"
title="YouTube 视频播放器"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write"
allowfullscreen>
</iframe>
<!-- 嵌入 Google 地图 -->
<iframe
src="https://www.google.com/maps/embed?..."
width="600" height="450"
style="border:0;">
</iframe>关键属性:
src:嵌入页面的 URL。width/height:iframe 的尺寸。title:无障碍必备,读屏软件读给视障用户。frameborder="0":去掉边框(HTML5 中已废弃,推荐用 CSSborder: 0)。allow:声明 iframe 内可以使用的特性(摄像头、麦克风、全屏等)。allowfullscreen:允许全屏。loading="lazy":懒加载,滚动到可视区才加载,提升首屏性能。
6. 嵌入 YouTube / B 站视频
YouTube、B 站、Vimeo 这些视频网站都提供"分享"功能,里面会有嵌入代码,直接复制粘贴到你的 HTML 即可:
<!-- 嵌入其他页面:src 指定 URL -->
<iframe src="https://example.com" width="800" height="600">
</iframe>
<!-- 嵌入 YouTube 视频 -->
<iframe
width="560" height="315"
src="https://www.youtube.com/embed/视频ID"
title="YouTube 视频播放器"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write"
allowfullscreen>
</iframe>
<!-- 嵌入 Google 地图 -->
<iframe
src="https://www.google.com/maps/embed?..."
width="600" height="450"
style="border:0;">
</iframe>注意 src 是 embed 路径,不是普通的观看路径。每个视频的"分享 → 嵌入"按钮会给你完整代码。
7. iframe 的安全风险
iframe 强大但有风险:嵌入的页面可以执行 JS,如果不做限制可能影响你的页面。常用 sandbox 属性沙箱化:
sandbox(空值):禁用所有脚本、表单、弹窗等——最严格。sandbox="allow-scripts allow-same-origin":按需放开,不要全开。
还有 referrerpolicy、csp 等机制可以进一步加强。嵌入第三方页面时务必加 sandbox。
8. embed 和 object 标签
老一点的标签 embed 和 object 也能嵌入 PDF、Flash 等内容,但 HTML5 时代大部分场景被 video、iframe 替代。新项目优先用 video/iframe,仅在嵌入 PDF、SVG 等特殊场景才考虑 object/embed。
9. track 字幕
给视频配字幕用 track 子标签,加载 WebVTT 格式的字幕文件:
<!-- 基本用法:src 指定视频地址 -->
<video src="movie.mp4"></video>
<!-- 推荐写法:controls 显示控制条 -->
<video src="movie.mp4" controls></video>
<!-- 完整属性 -->
<video
src="movie.mp4"
controls <!-- 显示播放控制条 -->
autoplay <!-- 自动播放(浏览器限制,通常需 muted) -->
muted <!-- 静音 -->
loop <!-- 循环播放 -->
poster="cover.jpg" <!-- 封面图(播放前显示) -->
width="640"
preload="metadata" <!-- metadata/none/auto:预加载策略 -->
>
您的浏览器不支持 video 标签。
</video>字幕文件后缀 .vtt,内容是带时间戳的文本。配 kind="subtitles"(翻译字幕)或 kind="captions"(同语言字幕)。对无障碍很重要。
10. 媒体的无障碍与 SEO
- iframe 必写
title:读屏软件靠它告诉视障用户"这里嵌入的是什么"。 - video 配
track字幕:听障用户依赖,且字幕文字可被搜索引擎索引。 - video 配
poster:封面图同时是社交分享时的预览图。 - 音频视频提供下载链接:不支持标签的浏览器有兜底。
11. 性能建议
- 视频别太大:1 分钟视频几 MB 到十几 MB,几十 MB 会让移动用户疯掉。压缩是必要的。
- 首屏视频加
preload="none"或metadata:避免首屏加载几十 MB。 - iframe 用
loading="lazy":不立即显示的 iframe 滚动到才加载。 - 自适应尺寸:用 CSS 让 video/iframe 宽度 100%,高度自适应,适配各种屏幕。
小结
这一章你学会了在网页里嵌入视频(video)、音频(audio)、外部页面(iframe),知道了 YouTube/地图的嵌入技巧、多源兼容性、安全沙箱。下一篇我们看 HTML 中经常被忽视但极重要的——meta 标签与 SEO。
← 上一篇 语义化标签
下一篇 meta 与 SEO →