为啥需要 <video> 或 <audio>?
Posted
技术标签:
【中文标题】为啥需要 <video> 或 <audio>?【英文标题】:Why is there a need for <video> or <audio>?为什么需要 <video> 或 <audio>? 【发布时间】:2010-10-05 07:02:08 【问题描述】:html5 带来或将带来<video>
和<audio>
标签等。自从我听说了他们,尤其是在阅读了 Why do we have an img
element? 尤其是 Jay C. Weber's message back from 1993 之后,我想知道:为什么?
HTML 有一个通用的媒体包含方法已经有一段时间了。如果作者愿意,它支持回退到其他格式和文本,现在它们被不必要地复制到另外两个特殊用途的标签中,每个标签都用于一种媒体。
对我来说,<video>
和 <audio>
都只是伪装的 <object>
s - 还是我在这里遗漏了一些他们都支持而 <object>
不支持的非常重要的东西?
我的困惑源于以下问题:给定一个 sn-p 作为这个:
<video id="movie" 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 data='pr6.mp4'>
<object data='pr6.webm' type='video/webm; codecs="vp8, vorbis"'>
<object data="pr6.ogv" type='video/ogg; codecs="theora, vorbis"'>
<object>
... fallback to Flash object
</object>
</object>
</object>
</object>
preload
和 controls
可以作为 <param>
元素给出,我现在不太确定如何处理 id
属性。
还有什么可以阻止浏览器供应商仅使用正确的 MIME 类型和编解码器来呈现视频和音频内容,而不是将它们交给插件?
【问题讨论】:
哦,全能的随机投票者。祝福我,你为什么认为这个问题不清楚或难以理解。我知道,我对语言和技术的掌握很差。尽管如此,我还是在努力用文字来解决问题。不过,你一个都没给我。 【参考方案1】:<video>
和<audio>
标签不是<object>
伪装的。请参阅this excellent explanation 的新标签。简而言之,HTML-5 浏览器正在公开它们对音频和视频的原生支持。他们将播放他们已知的视频源,或回退到好的旧 Flash,如下所示:
<video id="movie" 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 类型吗?
【讨论】:
没有什么说<object>
不能表示本机浏览器实现。例如。通过<object>
嵌入图像时,也不会提示您下载插件。
好的,如果我做对了,唯一的区别是对编解码器的明确支持,也许还有脚本接口(尽管我不完全确定<object>
会阻止后者)。
没有什么也说
我用你的代码嵌套的<object>
的(希望)几乎正确的变体编辑了这个问题。我可以看到简化的语法。但是考虑到 HTML 大部分时间的外观(并且考虑到它大部分时间都是生成的而不是手写的),我认为这不是一个特别有力的论点。根据我从规范中收集到的信息,如果您针对特定的非本地呈现内容的方式,您只需要 GUID。
HTML 清晰是一件好事 (tm),对 W3C 来说当然是宝贵的 :) 此外,使用 【参考方案2】:
我只想指出,您还可以从使用视频/音频元素中获得一些好处,例如获得免费控件来擦洗、暂停/播放、能够指定循环和播放速率等属性。
您还可以使用 javascript 获取它的句柄并访问该元素的 API。
【讨论】:
那又怎样?您可以从object
获得相同的信息;标记只是不同。但是感谢您在这里重申我的观点:-)【参考方案3】:
你可能会问为什么会有所有<p>
、<div>
、<span>
、<b>
、<strong>
、<i>
、<blockquote>
等标签,而它们基本上都是反正一样。这正是 W3C 的想法。世界其他地方不应该理解它 - 无论如何,它们远远超出了我们凡人。
【讨论】:
div
和 p
是构造较大文本体的两个不同层次,strong
和 em
是不同层次的强调。 b
和 i
已被 CSS 淘汰。不过,它们大多具有遗留影响,实际上,我认为专门针对媒体的包容性是一个截然不同的主题。尤其是考虑到已经存在的通用解决方案(您在此处提到的任何元素都不是这种情况)。
@Joey - 所有这些元素在功能上都是相同的。唯一的区别是它们应用了不同的样式,但是通过一些 CSS,您可以使一个看起来像另一个。对于<b>
和<strong>
,您甚至不必这样做。这是同一件事,有两个不同的名字。发明以使 html 标记看起来更漂亮。
嗯,它们在语义上是不同的——请注意,具有敏锐视力的查看器、完美的浏览器和广泛接受的排版规则并不是 HTML 的唯一消费者。同意,从这个角度来看,区分“媒体,一般”(object
)、“媒体、图像”(img
)、“媒体、音频”(audio
)和“媒体、视频”(video
)。但是,这已经是 MIME 类型可以单独说明的内容了。它不是偶然以image/
、audio/
或video/
开头的......以上是关于为啥需要 <video> 或 <audio>?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Safari 不能播放 <video> 中没有扩展名的文件?
为啥 Chrome浏览器用<video>播放视频没有画面就只有声音,IE就可以。
在 <video> 或 <img> 上模拟 background-size:cover