HTML 视频

在 HTML 中播放视频的方法有很多种,本章主要讲解用embed,video,object标签以及超链接方式实现。


实例

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <video width="320" height="240" controls="controls" autoplay="autoplay">
  5. <source src="/example/video/demo.ogg" type="video/ogg" />
  6. <source src="/example/video/demo.mp4" type="video/mp4" />
  7. <source src="/example/video/demo.webm" type="video/webm" />
  8. <object data="/example/video/demo.mp4" width="320" height="240">
  9. <embed width="320" height="240" src="/example/video/demo.avi" />
  10. </object>
  11. </video>
  12. </body>
  13. </html>

问题,以及解决方法

在 HTML 中播放视频并不容易!

您需要谙熟大量技巧,以确保您的视频文件在所有浏览器中(Internet Explorer, Chrome, Firefox, Safari, Opera)和所有硬件上(PC, Mac , iPad, iPhone)都能够播放。


使用 <embed> 标签

<embed> 标签的作用是在 HTML 页面中嵌入多媒体元素。

下面的 HTML 代码显示嵌入网页的 Flash 视频:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <embed src="/example/video/demo.swf" height="200" width="200"/>
  5. </body>
  6. </html>
问题

HTML4 无法识别 <embed> 标签。您的页面无法通过验证。

如果浏览器不支持 Flash,那么视频将无法播放 iPad 和 iPhone 不能显示 Flash 视频。

如果您将视频转换为其他格式,那么它仍然不能在所有浏览器中播放。


使用 <object> 标签

<object> 标签的作用是在 HTML 页面中嵌入多媒体元素。下面的 HTML 片段显示嵌入网页的一段 Flash 视频:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <object width="320" height="240" data="/example/video/demo.swf"></object>
  5. </body>
  6. </html>
问题

如果浏览器不支持 Flash,将无法播放视频。iPad 和 iPhone 不能显示 Flash 视频。

如果您将视频转换为其他格式,那么它仍然不能在所有浏览器中播放。


使用 <video> 标签

<video> 是 HTML 5 中的新标签。

<video> 标签的作用是在 HTML 页面中嵌入视频元素。

以下 HTML 片段会显示一段嵌入网页的 ogg、mp4 或 webm 格式的视频:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <video width="320" height="240" controls="controls" autoplay="autoplay">
  5. <source src="/example/video/demo.ogg" type="video/ogg" />
  6. <source src="/example/video/demo.mp4" type="video/mp4" />
  7. <source src="/example/video/demo.webm" type="video/webm" />
  8. 您的浏览器不支持 video 标签
  9. </video>
  10. </body>
  11. </html>
问题

您必须把视频转换为很多不同的格式。

<video> 元素在老式浏览器中无效。

<video> 元素无法通过 HTML 4 和 XHTML 验证。


最好的 HTML 解决方法

HTML 5 + <object> + <embed>

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <video width="320" height="240" controls="controls" autoplay="autoplay">
  5. <source src="/example/video/demo.ogg" type="video/ogg" />
  6. <source src="/example/video/demo.mp4" type="video/mp4" />
  7. <source src="/example/video/demo.webm" type="video/webm" />
  8. <object data="/example/video/demo.mp4" width="320" height="240">
  9. <embed width="320" height="240" src="/example/video/demo.swf" />
  10. </object>
  11. </video>
  12. </body>
  13. </html>

上例中使用了 4 中不同的视频格式。HTML 5 <video> 元素会尝试播放以 mp4、ogg 或 webm 格式中的一种来播放视频。如果均失败,则回退到 <embed> 元素。

问题

您必须把视频转换为很多不同的格式。

<video> 元素无法通过 HTML 4 和 XHTML 验证。

<embed> 元素无法通过 HTML 4 和 XHTML 验证。

注释:使用 <!DOCTYPE html> (HTML5) 解决验证问题。


使用超链接

如果网页包含指向媒体文件的超链接,大多数浏览器会使用“辅助应用程序”来播放文件。

以下代码片段显示指向 AVI 文件的链接。如果用户点击该链接,浏览器会启动“辅助应用程序”,比如 Windows Media Player 来播放这个 AVI 文件:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>点击该链接来播放这个对象</h2>
  5. <a href="/example/video/demo.avi">播放视频文件</a>
  6. </body>
  7. </html>

关于内联视频的一段注释

当视频被包含在网页中时,它被称为内联视频。

如果您打算在 web 应用程序中使用内联视频,您需要意识到很多人都觉得内联视频令人郁闷。

同时请注意,用户可能已经关闭了浏览器中的内联视频选项。

建议是只在用户希望看到内联视频的地方包含它们。一个正面的例子是,在用户需要看到视频并点击某个链接时,会打开页面然后播放视频。


HTML 4.01 多媒体标签

标签描述
<applet>不建议。定义内嵌 applet。
<embed>不建议。定义内嵌对象。(HTML5 中允许)
<object>定义内嵌对象。
<param>定义对象的参数。

HTML 5 多媒体标签

标签描述
<video>标签定义声音,比如音乐或其他音频流。
<embed>标签定义嵌入的内容,比如插件。