摘要 :本文是 HTML5 零基础系列的第五篇。你将学习如何在网页中嵌入音频和视频,使用 <audio> 和 <video> 标签让你的内容"动起来";了解不同浏览器对媒体格式的支持以及如何用 <source> 标签优雅降级;还会介绍 <embed> 和 <object> 标签的用途,以及如何嵌入外部网页内容(比如地图、B站视频)。学完本篇,你的网页就能像真正的多媒体站点一样播放音乐和电影了。
一、前言
在前几篇中,我们从最基础的骨架、文本、列表、容器,讲到链接、图片、表格,再到交互核心------表单。我们已经能够构建一个结构完整、可收集用户信息的网页。但还缺少两个重要元素:声音和视频 。想象一下,一个音乐网站没有播放器,一个教程页面没有演示视频,是不是很遗憾?HTML5 直接提供了 <audio> 和 <video> 标签,无需安装 Flash 等插件,原生支持多媒体播放。今天我们就把这些技能补上。
注意:媒体文件需要你自己准备(或在网上找测试用的音频/视频链接)。本示例中会使用线上测试文件或公共示例资源,你也可以用自己电脑上的
.mp3、.mp4文件测试,注意路径。
二、HTML5 音频 <audio> 标签
2.1 基本语法
<audio> 标签用于嵌入音频文件(如音乐、音效、播客)。它是一个双标签,内部可以放置 <source> 子标签来指定多个备选格式,也可以直接通过 src 属性指定音频文件。
最简单的用法(直接指定 src):
html
<audio src="music.mp3" controls>
您的浏览器不支持 audio 标签。
</audio>
-
controls属性:显示播放控件(播放/暂停、音量、进度条等)。 -
标签之间的文字("您的浏览器不支持...")在不支持
<audio>的旧浏览器中会显示。

2.2 <audio> 的常用属性
| 属性 | 值 | 作用 |
|---|---|---|
src |
URL | 音频文件的路径(可以用 <source> 代替) |
controls |
布尔属性 | 显示播放控件,如果不加,用户无法操作播放(通常用于自动播放的背景音乐,但体验不好) |
autoplay |
布尔属性 | 页面加载后自动播放(注意:现代浏览器通常禁止自动播放有声内容,需要用户与页面交互后才行) |
loop |
布尔属性 | 循环播放 |
muted |
布尔属性 | 静音播放 |
preload |
none / metadata / auto |
预加载策略:none 不预加载,metadata 只加载元数据(时长等),auto 预加载整个文件(不推荐用于大文件) |
示例:一个带自动静音循环播放的音频(但静音自动播放大多允许)。
html
<audio src="bgm.mp3" controls autoplay loop muted>
您的浏览器不支持 audio 元素。
</audio>

2.3 多种格式适配 ------ <source> 标签
不同浏览器支持的音频格式不同:
-
MP3:几乎所有浏览器都支持(Chrome、Edge、Safari、Firefox 等)。
-
OGG:Firefox、Chrome 等支持,但 Safari 不支持。
-
WAV:无损,文件大,大部分浏览器支持。
为了兼容性,可以准备多个格式,浏览器会按顺序选择第一个能播放的。
示例:
html
<audio controls>
<source src="music.mp3" type="audio/mpeg">
<source src="music.ogg" type="audio/ogg">
<source src="music.wav" type="audio/wav">
您的浏览器不支持 audio 标签。
</audio>
提示:
type属性帮助浏览器快速判断格式,但不是必须的,但推荐写上。
2.4 使用线上测试音频
为了方便测试,你可以使用公共测试文件(例如来自 W3Schools 的示例)。以下是一个真实可用的示例(需要联网):
html
<audio controls>
<source src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" type="audio/mpeg">
你的浏览器不支持 audio 元素。
</audio>

三、HTML5 视频 <video> 标签
3.1 基本语法
<video> 标签和 <audio> 非常相似,用于嵌入视频文件。同样支持 controls、autoplay、loop、muted、preload 等属性,还额外支持 width、height、poster(封面图)等。
最简单的用法:
html
<video src="movie.mp4" controls width="640" height="360">
您的浏览器不支持 video 标签。
</video>

3.2 视频常用属性
| 属性 | 作用 |
|---|---|
width / height |
设置视频播放器的宽度和高度(单位像素)。注意,只设置宽或高,另一方会自动等比缩放。 |
poster |
视频加载前或未播放时显示的封面图片 URL。 |
controls |
显示播放控件 |
autoplay |
自动播放(多数现代浏览器要求视频静音才能自动播放) |
loop |
循环播放 |
muted |
静音 |
playsinline |
在移动端(iPhone)内联播放,不全屏。这个属性在移动端很实用。 |
示例:带封面图的视频,且自动静音播放。
html
<video src="intro.mp4" controls autoplay muted loop poster="poster.jpg" width="640">
您的浏览器不支持 video 标签。
</video>

3.3 多格式适配(<source>)
视频格式更复杂,主流格式:
-
MP4(H.264 编码 + AAC 音频):几乎所有浏览器支持,最推荐。
-
WebM(VP8/VP9 编码 + Vorbis/Opus 音频):开源格式,Chrome、Firefox、Edge 支持好,Safari 部分支持。
-
OGG(Theora 编码):较老,支持度不如前两者。
为了最大兼容,建议提供 MP4 和 WebM 两种。
示例:
html
<video controls width="640">
<source src="movie.mp4" type="video/mp4">
<source src="movie.webm" type="video/webm">
<source src="movie.ogv" type="video/ogg">
您的浏览器不支持 video 标签。
</video>

3.4 使用线上测试视频
可以使用公共测试视频(例如来自 W3Schools 或 Blender 基金会提供的示例)。以下是一个有效的测试视频链接(需要联网):
html
<video controls width="640">
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
您的浏览器不支持 video 标签。
</video>

注意:外部链接可能随时失效,建议下载到本地测试。
四、<audio> 和 <video> 的 JavaScript 简单互动(了解即可)
虽然本系列不深入 JavaScript,但这里简要提一下:<audio> 和 <video> 元素在 DOM 中有丰富的属性和方法(如 play()、pause()、currentTime、volume 等)。你可以通过简单的按钮来控制播放。下面是一个不需 JavaScript 基础也能模仿的示例(直接复制即可)。
示例:使用按钮控制视频播放(基础 JavaScript,但不要求你完全理解,仅作展示可能性)。
html
<video id="myVideo" width="480" poster="click_to_play.jpg">
<source src="movie.mp4" type="video/mp4">
</video>
<br>
<button onclick="document.getElementById('myVideo').play()">播放</button>
<button onclick="document.getElementById('myVideo').pause()">暂停</button>
<button onclick="document.getElementById('myVideo').volume = 0.5">音量一半</button>

我们会在后续的 JavaScript 系列中详细讲解,这里只需要知道媒体元素可以和 JS 交互即可。
五、嵌入外部内容:<iframe>、<embed>、<object>
有时候我们需要在网页中嵌入另一个网页(比如地图、YouTube 视频)、PDF 文件、Flash(已淘汰)等。HTML5 提供了几种嵌入方式。
5.1 <iframe> ------ 嵌入另一个网页
<iframe>(内联框架)可以在当前页面中嵌套显示另一个 HTML 页面。用途非常广泛:嵌入谷歌地图、B站视频、腾讯文档等。
基本语法:
html
<iframe src="https://www.baidu.com" width="800" height="600" title="示例网站"></iframe>

常用属性:
-
src:嵌入页面的 URL。 -
width/height:框架尺寸。 -
title:辅助技术使用的标题(推荐加上,提升无障碍访问)。 -
allowfullscreen:允许全屏(常用于视频)。 -
sandbox:对嵌入内容添加安全限制(例如禁止表单提交、脚本执行)。
示例:嵌入B站视频
html
<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>

嵌入本地网页:
html
<iframe src="register.html" width="100%" height="300" title="注册表单预览"></iframe>

5.2 <embed> ------ 嵌入插件内容(传统方式)
<embed> 标签用于嵌入外部应用程序或内容,比如 PDF、SVG、Flash(已淘汰)。HTML5 中仍然有效,但更推荐使用 <iframe> 或 <object>。不过,对于 PDF 文件,使用 <embed> 或 <iframe> 均可。
示例:嵌入 PDF 文件:
html
<embed src="document.pdf" type="application/pdf" width="800" height="600">

5.3 <object> ------ 通用嵌入容器
<object> 标签可以嵌入图片、PDF、Flash、甚至是另一个网页。通常配合 <param> 子标签传递参数。但如今 <object> 主要用于嵌入 PDF 或 SVG 等。由于本系列不深入,只需知道有这个选项。
示例:
html
<object data="image.svg" type="image/svg+xml" width="300" height="200">
SVG 图片无法显示
</object>
对于大多数场景(地图、视频分享),
<iframe>是最简单且兼容性最好的选择。
六、实操练习:搭建一个多媒体展示页面
新建 media.html,综合运用音频、视频、iframe 嵌入内容。
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>多媒体展厅 - HTML5媒体标签实战</title>
</head>
<body>
<h1>我的多媒体展厅</h1>
<p>欢迎体验 HTML5 强大的音频、视频和嵌入功能。</p>
<h2>🎵 推荐歌曲</h2>
<audio controls>
<source src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" type="audio/mpeg">
您的浏览器不支持 audio 元素。
</audio>
<h2>🎬 精彩短片</h2>
<video controls width="640" poster="https://www.w3schools.com/html/pic_mountain.jpg">
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
您的浏览器不支持 video 标签。
</video>
<h2>🗺️ 嵌入地图(示例:OpenStreetMap)</h2>
<iframe width="600" height="400"
src="https://www.openstreetmap.org/export/embed.html?bbox=-0.004%2C51.476%2C0.001%2C51.478&layer=mapnik"
title="地图示例">
</iframe>
<h2>📄 嵌入 PDF 示例(来自网络)</h2>
<embed src="https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
type="application/pdf" width="600" height="400">
<hr>
<p>所有媒体均为测试用途。你可以替换成自己的文件路径。</p>
</body>
</html>

保存后用浏览器打开,测试每个媒体是否正常工作(需要联网,且部分链接可能失效,建议替换成本地或稳定链接)。
七、Sublime Text 技巧 ------ 快速生成媒体标签
-
输入
audio按 Tab →<audio src=""></audio>,手动添加controls等。 -
输入
video按 Tab →<video src=""></video>。 -
输入
iframe按 Tab →<iframe src="" frameborder="0"></iframe>。 -
使用 Emmet 缩写
audio:mp3可能不直接支持,但可以自定义片段。
推荐安装 Emmet 插件(Sublime Text 自带),熟练后可以极快生成结构。
八、常见问题与排错
8.1 音频/视频不播放或没声音?
-
检查文件路径是否正确(F12 打开浏览器开发者工具,查看 Console 是否有 404 错误)。
-
确认文件格式浏览器是否支持(例如 Safari 对某些 MP4 编码可能不支持)。
-
如果使用本地文件,某些浏览器可能因安全策略限制自动播放,请点击播放按钮。
-
检查
autoplay是否因为浏览器策略被阻止:添加muted属性试试。
8.2 <audio> 或 <video> 控件不显示?
- 忘记写
controls属性。没有controls且没有手动调用 JSplay(),则什么也看不到(或只能看到第一帧画面,但没有控件)。
8.3 视频黑屏但有声音?
- 视频编码可能不被浏览器支持。尝试转换成 H.264 + AAC 的 MP4 格式。
8.4 iframe 嵌入的网站显示"拒绝连接"?
- 目标网站设置了
X-Frame-Options: DENY或SAMEORIGIN,禁止被嵌入。这是出于安全考虑。你可以尝试嵌入允许被嵌入的网站(如 YouTube、B站、OpenStreetMap)。
8.5 移动端视频无法自动播放?
- 现代移动浏览器(iOS、Android)禁止任何非静音的自动播放,且即使静音也需用户有交互。所以不要依赖
autoplay,让用户主动点击播放。
九、总结
核心知识点回顾:
音频 <audio>:
-
src或<source>指定音频文件。 -
常用属性:
controls、autoplay、loop、muted、preload。 -
多格式适配:MP3、OGG、WAV。
视频 <video>:
-
语法类似音频,额外支持
width、height、poster、playsinline。 -
多格式适配:MP4、WebM、OGV。
-
可通过简单的 JS 按钮控制播放(了解即可)。
嵌入内容:
-
<iframe>:嵌入另一个网页或视频,最常用。 -
<embed>:嵌入 PDF 等外部内容。 -
<object>:通用嵌入容器,了解即可。
实操:构建了包含音乐、视频、地图、PDF 的多媒体展示页。
常见问题:路径错误、格式兼容、自动播放限制、iframe 被拒绝等。
如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享,也可以留言告诉我你遇到的其它问题,我会尽快回复。动手练习是掌握编程最快的方法,请务必亲手敲一遍本文的所有示例代码,并截图保存你的成果。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。