HTML 5 <video> 标签与 Flash 视频,其优缺点是什么?

117

重要更新

这个问题是9年前提出的。当时它有意义,但现在已经没有了。Flash正在退出历史舞台;<video>支持已经无处不在,包括移动设备。几乎所有Flash可以做到的事情,HTML现在也可以了。HTML赢了,Flash输了。如果您在考虑如何在网页中嵌入视频,请使用<video>,不要再考虑第二次。此问题仅为保留历史价值而存在。

原始问题

看起来新的<video>标签这些天很火,特别是自Firefox开始支持以来。关于这个的新闻在各种博客上纷纷涌现,每个人都似乎很兴奋。但是呢?

我搜索了很多,但始终找不到任何比老旧的Flash视频更好的东西。事实上,我只看到了一些问题:

  • 所有浏览器开始支持它还需要一些时间,大多数人升级的时间更长;
  • Flash已经可用,每个人都有它;
  • 您可以将Flash与任何想要控制回放的花哨UI结合使用。我认为<video>标签也将是可控的(可能通过JavaScript),但它能全屏吗?

我唯一看到的使用<video>标签的两个优点是:

  • 它更具“语义性” - 对于包括我在内的许多人来说可能都不重要;
  • 它不依赖于单一商业第三方实体(Adobe) - 我也不认为这是一个强制转换的充分原因,因为已经有免费播放器和视频转换器可用,并且Adobe没有以任何方式阻碍整个过程(甚至与其利益相悖)。

所以...这有什么大不了的?

添加:

好吧,还有一个可能是正面因素...支持移动设备。不过很难确定。我的脑海中闪过了很多关于这个主题的想法:

  • 有多少移动设备实际上能够以良好的速度解码视频,无论是Flash还是其他格式?
  • 主流移动设备何时获得<video>支持?即使通过更新可用,有多少人真正会这样做?
  • 有多少人在其移动电话上查看网页上的视频?

至于语义部分-我明白搜索引擎现在可能能够更好地检测视频,但是...他们究竟会对它们做什么呢?好吧,他们知道页面中有一个视频。然后呢?他们不能索引视频!我希望在这里有更多的论据。

新增:

刚刚想到另一个缺点。这将开启一个全新的跨浏览器不兼容领域。在这方面,HTML和CSS已经相当混乱了。Flash至少在任何地方都是一样的。但只要有至少一个主要的浏览器供应商反对<video>标签(有人可以说“Internet Explorer”吗?),我们就有了一个好新的研究领域。

新增:

还有一个优点。更多的竞争=更多的创新。这是真的。给Adobe带来更多的竞争可能会迫使他们在Flash至今一直存在缺陷的领域改进。Linux似乎是其中一个弱点,被许多人引用。


29
应该设为社区维基。 - SilentGhost
1
同意,听起来应该是一个社区维基。 - Gab Royer
4
关于您提到的“缺点”之一 - 危险并不在于IE不支持<video>。危险在于IE、FF、Opera、Chrome和Safari以稍微不同的方式支持<video>,就像CSS一样。 :( - fenomas
Vilx:DivX/XviD存在许可证/专利问题,这将阻止它们“获胜”。关键是它们不能自动捆绑某些法律风险的编解码器,因此像FFMpeg这样的东西完全不可能。这些公司太富有和高调了,无法在没有因专利纠纷而被起诉的情况下使用可疑的编解码器。 - aehlke
Flash已经可用,每个人都有它 - 但我的Linux机器上没有。 - alternative
显示剩余15条评论
31个回答

4
64位和Linux支持将是很好的。在2009年,Flash在这个领域仍然缺乏。有一些真正的竞争总是好的。如果主要视频网站开始在Flash旁边或者甚至替代Flash使用它,那么我需要的专有程序就会少一个。开源意味着更快的创新。给它时间,人们会创造一种方法来传递受DRM保护的视频。

3
  1. 许多移动设备今天支持:iPhone、iPod Touch、Symbian S60、Android等。

  2. Mozilla Firefox、Google Chrome、Apple Safari和Opera都支持标签(当然,您需要将其编码为两种格式:H.264和Ogg Theora。但是,您可以在旧版浏览器和Internet Explorer中使用Flash或Silverlight故障转移机制重复使用H.264视频)。


3

Flash的其他优点:

  • 相较于浏览器供应商(仍有大量IE6用户,该浏览器于2001年发布),Adobe可以更快地向大众添加新功能和新编解码器(通常在不到一年的时间内,超过90%的用户升级到最新版本的Flash)。

  • Flash中的功能可能最终会出现在浏览器中,但目前还没有:

    • 全屏视频(Firefox有一个支持此功能的插件,但浏览器本身还没有)
    • 视频摄像头,只有少数网站使用,但这些天在Flash中,视频摄像头和增强现实正在发生一些非常酷的事情
    • 对等视频,刚刚在Flash Player 10中添加,随着Flash 10的普及率接近90%,我认为您将看到更多的应用。
作为那些认为Flash无法被索引的人,请看看谷歌最近通过Adobe提供的无头播放器索引Flash内容所做的工作。因此,如果您在谷歌搜索FLV文件, 您会发现谷歌已经索引了Flash视频文件。
同时,Adobe Premiere CS4具有语音识别功能,可以将视频文件输出为XML格式的字幕,这可以很容易地在Flash视频中使用。因此,未来预计Flash视频将变得更加易于搜索。

我会认为使用IE6的人也可能在使用Flash 6。我遇到过许多电脑上安装了古老的Java / Flash / 可怕的编解码器包和其他什么东西的用户,用户进行升级,而不是制造产品的公司。关于字幕的您的注意点是一个好观点,但据我所知,竞争视频格式都允许字幕流,并且<video>会允许用户对字幕显示进行系统级别的设置,而无需等待Adobe添加该功能。 - Groxx

2
  • 用户可以控制UI界面:他们可以选择下载和使用哪个浏览器,并根据其工作方式(我不确定细节,但对概念很熟悉),甚至保留他们的浏览器,只需选择处理程序npapi插件即可。您有多少次被困在一个糟糕的ActionScript视频控制界面中,因为您所在网站的开发人员太懒而无法正确完成操作(或使用flowplayer)。我认为用户有权利选择!

  • 它是开源的。现在,我不是RMS或任何人,与道德或其他任何事情无关,但是OSS只是更高效、更好的选择。它能产生更好的代码。

  • 更好的平台支持。现在,Linux + flash = 糟糕。Adobe是唯一能做些什么的人。这很糟糕。

  • 就像您所说的,更语义化。


好的,好的,这并不总是正确的,但通常是这样的。 - Joe
嗯...我猜这可能值得开一个全新的讨论/争吵帖子。 :) - Vilx-
哦,拜托,即使邪恶帝国在内部也承认这是真的!(万圣节文档 :)) - Joe
1
实际上,如果我理解正确,在最终规范中,用户将无法控制UI...相反,UI控件将在规范中定义良好,可通过JS进行脚本编写,并使用CSS进行样式化...我非常期待每个人都能够为这些控件设计样式...;-P - back2dos
输入法编辑器(IME),开源代码在某些特定领域中速度显著更快,但在其他方面则更差。从一些专家贡献的几行代码中可以学到很多东西,但是开源项目通常有90%的代码完全缺乏优雅/效率。(大型项目在这里经常是一个例外) - Groxx
我认为微软的Windows代码在优雅性和效率方面也极其缺乏...因此,操作系统==更好的代码可能不是真的,但操作系统!=更差的代码肯定是真的。 - alexanderpas

2
塞斯处理了大部分的问题,其他我能想到的包括:
- 测试矩阵的规模太大(我曾经看到一个 bug 只在 IE7 和 Flash 9.0.48 上出现——你想要为每个浏览器测试多少个 Flash 的次要版本号呢?) - 即使您只选择支持一个确切的版本,并强制其他人升级 / 降级,"Flash 在任何地方都是一样的" 这种说法也不正确: "IE 用的 Flash 插件" 和 "其他浏览器用的 Flash 插件" 都不是相同的二进制文件(是的,这很重要:它们以不同的方式访问网络,这是我遇到的 IE7/F9 bug 的原因之一) - 每个人都编写自己的播放器,因此 UI 和可靠性不一致 - 允许浏览器为 HTML5 视频实现全屏选项,这意味着如果他们还没有这样做的话,他们都会很快实现(许多 Flash 视频播放器已经有了,但许多没有) - 不是每个人都有 Flash(尽管它比 HTML5 视频更常见,但并不是所有人都能使用) - 脚本编写非常麻烦(具有自己的 DOM、事件、不完全符合 ECMAscript 的语言等) - 它的性能非常糟糕,如果您不在 Windows 上(在 Mac OS X 下运行 Windows 虚拟机中的 Flash 插件使用的 CPU 比运行本地 Mac 插件少 5-10 倍) - 它的稳定性很差(我在至少三年内看到的每个浏览器崩溃都是在 Flash 页面上;如果您的视频导致他们的整个浏览器崩溃,即使这真的是 Adobe 的问题,他们也不会回来了) - 它根本无法在许多地方运行,例如在 64 位进程中(如果您的用户错误地启动 "Internet Explorer(64 位)" 而不是 "Internet Explorer",那么就没有视频了)
总之,使用 Flash 的唯一原因是 "大多数人今天已经安装了它" —— 只要它还能持续下去,这可能是一个相当好的理由。

其中许多都很好,但有一些似乎不太对。虽然Flash在不同版本和浏览器中并不完全相同,但它肯定比CSS更具版本一致性,并且比任何其他浏览器更具一致性。 ;) 至于脚本编写是否很麻烦,我倒是喜欢在每个浏览器中拥有完全相同的DOM :P 我不知道你是否看过AS3,但与之相比,JavaScript变得相当陈旧了。(直到Harmony出现为止..) - fenomas
2
好的观点,除了:(a)有JS/CSS库可以覆盖大多数不一致之处(真的没那么糟糕),以及(b)在IE6中出现奇怪CSS的故障模式是“间距不正确(需要小小的hack)”,而对于Flash错误,往往是“根本无法工作(祝你好运调试!)”。 而且(根据我的第一个观点),我实际上宁愿有高度不一致的CSS,也不要略微不一致的Flash;前者是O(n)测试运行,而后者是O(n*m)测试运行(即,我们永远无法完全覆盖它们)。 - Ken
哦,至于DOM,我更喜欢整个文档只有一个DOM。不同的优先级,我猜吧,但根据我的经验,在JS和AS之间传递东西比浏览器DOM的差异要痛苦得多。 - Ken

2

现在浏览器通过常规HTTP获取视频文件,而不是通过在SWF文件中定义的某些模糊方法(需要解析),这样你就可以使用Web代理来缓存视频文件!同时,浏览器本身也能够缓存视频文件。


就我所看到的Flash视频而言,它们都是在HTTP下使用的。只需启动Fiddler并查看它们的操作(顺便说一句,这是保存任何Flash视频的好方法)。 - Vilx-
半对的:Flash可以从HTTP或RTP获取视频。事实是,大多数点播视频都是通过HTTP传递的。如果你不相信,请看看YouTube如何提供视频。 - Stu Thompson

2

HTML5优点:

  1. 它为视频对象支持全新的DOM API,您可以编写与新的HTML5标签交互的脚本。
  2. 您可以检测不同的视频格式支持播放、暂停和跟踪视频播放。
  3. 它已得到很好的支持。Firefox、Opera、Chrome已经支持chrome、video等...即使Youtube正在测试一些HTML5播放器。

Flash优点/HTML5缺点:

  1. Flash随处可见。因此,HTML5需要花费很长时间才能赶上。
  2. Flash支持广泛的功能,无论是HW渲染、高清视频支持,还是动画特性,它所支持的功能都是无法替代的。
  3. DOM API永远不会取代Flash已经支持的AS2/AS3功能。
  4. 只需数一数专业的Flash开发人员数量…他们永远不会转换,除非HTML5回答了所有他们的问题。 有许多Flash开发人员甚至还没有从AS2转换到AS3 :-)

2

以下是2012年我对HTML5的优势:

  1. 我正在使用Youtube的HTML5试用版。现在Flash播放器不会一直崩溃了。现在我的电脑已经稳定了几周了。现在我很开心。
  2. 每次重新启动电脑时,我不再看到“更新HTML5播放器”的提示,就像我看到Flash一样。
  3. 一旦所有嵌入式视频都能使用HTML5播放,我就可以从电脑中删除Flash,因为我唯一使用它的原因是播放视频。
  4. 这对网站开发人员来说是一个优点:由于Flash太烦人了,所以我有一个Flash拦截器。我没有HTML5拦截器。网站管理员有第二次机会向我发送内容。
  5. HTML5将很可能在浏览器上得到正确实现,而不会成为大多数计算机上的主要安全漏洞。

1
关于这一点:
“至于语义部分-我理解搜索引擎现在可能能够更好地检测视频,但是...他们会怎么处理呢?好吧,他们知道页面中有一个视频。然后呢?他们不能索引视频!我想在这里听到更多的论据。”
如果经过适当优化,视频将包括一个文本副本,搜索引擎可以阅读,并相应地披露有关视频的所有信息。我猜他们可以索引视频的页面?至于它的价值...我想我不必看我不需要的垃圾,找到我需要的东西,因为我会准确地知道视频中的内容。

1

我认为使用<video>而不是Flash的明显优点是,我可以在浏览器中观看视频而不会导致崩溃或变得非常缓慢。我使用64位OpenBSD,所以gnash是我唯一能得到的,而且只有在我感到非常冒险的时候才启用它,因为大多数时候我会遇到一个Flash横幅广告,我的浏览器(Firefox 3.5)就会崩溃。

而且我的手机浏览器不支持Flash,但它支持视频标签(而且它也不是过于“花哨”的手机)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接