HTML5带来或将带来<video>
和<audio>
标签等。自从我听说过它们之后,在阅读Why do we have an img
element?之后更是如此,尤其是Jay C. Weber's message back from 1993我想知道:为什么要这么做?
HTML已经有了一段时间的通用媒体包含方法。它支持回退到其他格式和文本,如果作者希望这些格式和文本现在不必要地复制在两个更专用的标签中,每个标签用于一种媒体。
对我来说,<video>
和<audio>
只是伪装成<object>
- 或者我错过了一些非常重要的东西,他们都支持而<object>
没有?
我的困惑源于以下问题:给出一个代码片段:
<video id="movie" width="320" height="240" preload controls>
<source src="pr6.mp4" />
<source src="pr6.webm" type='video/webm; codecs="vp8, vorbis"' />
<source src="pr6.ogv" type='video/ogg; codecs="theora, vorbis"' />
<object>
... fallback to Flash object
</object>
</video>
难道不能写得类似于
<object width="320" height="240" data='pr6.mp4'>
<object width="320" height="240" data='pr6.webm' type='video/webm; codecs="vp8, vorbis"'>
<object width="320" height="240" data="pr6.ogv" type='video/ogg; codecs="theora, vorbis"'>
<object>
... fallback to Flash object
</object>
</object>
</object>
</object>
preload
和controls
可以作为<param>
元素提供,我现在还不太确定如何处理id
属性。
仍然有什么能阻止浏览器供应商使用正确的MIME类型和编解码器自己呈现视频和音频内容而不是将它们交给插件吗?
答案 0 :(得分:4)
<video>
和<audio>
代码不是伪装<object>
。请参阅this excellent explanation新标记。简而言之,HTML-5浏览器暴露了他们对音频和视频的原生支持。他们将播放他们已知的视频源,或者回归到旧的Flash,如下所示:
<video id="movie" width="320" height="240" preload controls>
<source src="pr6.mp4" />
<source src="pr6.webm" type='video/webm; codecs="vp8, vorbis"' />
<source src="pr6.ogv" type='video/ogg; codecs="theora, vorbis"' />
<object>
... fallback to Flash object
</object>
</video>
编辑:MIME类型可以告诉所有内容,但仅在您请求文件后。 <object>
对HTML分析和语义不利。 JS知道MIME类型吗?
答案 1 :(得分:1)
我想指出的是,使用视频/音频元素也可以获得一些细节,例如获取自由控件以进行清理,暂停/播放,能够指定循环和播放速率等属性。
您还可以使用javascript获取它的句柄并访问该元素的API。
答案 2 :(得分:-2)
您也可以问为什么所有<p>
,<div>
,<span>
,<b>
,<strong>
,<i>
,{ {1}}等标记,无论如何它们都基本相同。这就是W3C的想法。世界其他地方不应该理解它 - 无论如何它们都超越了我们凡人。