问题描述
根据 release notes for Firefox 26,h.264 视频现在应该可以在 Linux 中运行。它还表示需要安装适当的 gstreamer plug-ins。有谁知道这些是什么?
我使用这个 test site 和 YouTube HTML5 page 来验证 h.264 支持在我的 Ubuntu 12.04 64 位上的 Google Chrome 中有效,但在 Firefox 26 上无效。
最佳答案
对于 12.04 /14.04 /18.10
刚刚访问了 HTML5 Youtube 测试,我检查了 H.264;您可能需要安装 Ubuntu 限制附加功能才能获得 gstreamer 编解码器。
sudo apt-get install ubuntu-restricted-extras
您可能需要重新启动。
次佳答案
对于 14.04
上述解决方案不再适用于 Trusty Tahr 14.04。\n原因是包 gstreamer0.10-ffmpeg 已被 gstreamer1.0-libav 取代,但 Firefox 计划仅在版本 30 中支持 gstreamer 1.0。
因此,与此同时,您可以在此处为您的适当架构安装来自 saucy 的 gstreamer0.10-ffmpeg:
第三种答案
Firefox 33 及更高版本
Mozilla 在 Firefox 33 中添加了对 OpenH264 插件的支持。要启用此插件,Firefox 现在会在您第一次启动该程序时自动从 OpenH264 website 下载二进制文件。
听起来不错,不是吗?等等,这是一个双关语。
虽然这确实是一个非常方便的解决方案,但当软件自动从 Cisco Systems 或其他公司的附属站点下载二进制文件时,无论过程和许可协议多么透明,它也应该引起隐私和安全问题。
没有直接关系,但如果您更喜欢在 Firefox 关闭时自动删除 cookie,并且找不到合适的 cookie 来保留持久的 HTML5 播放,那么我建议安装 YouTube ALL HTML5 。
使用 14.04.2 和 15.04 VM 进行测试
我的猜测是只安装一个 H.264 解码器二进制文件是不够的,所以我设置了 2 个新的虚拟机:
-
Ubuntu 14.04.2 在安装过程中安装了受限插件
-
Ubuntu 15.04 在安装过程中没有安装受限插件
两个 VM 安装完成后,我启动系统,再次更新它们,安装 VM guest 添加,第一次启动 Firefox 并重新启动以进行实际测试。
由于 YouTube 还提供了他们的开源 WebM 格式,而且我想避免过多地讨论测试方法的细节,因此我需要使用另一个支持 HTML5 的站点来测试专有的 H.264 播放支持。我选择了 Vimeo,因为他们说他们默认使用 HTML5,而且他们似乎不支持 WebM,我认为这不是一件好事。
每当我在测试中进行一些更改时,例如在 Firefox 中安装软件包或启用/禁用某些内容,我都会关闭并再次启动 Firefox。
14.04.2 带有受限插件
正如您在此屏幕截图中所见,Firefox 中仅启用了 OpenH264 插件,预安装了不同版本的所有必需 GStreamer 包,并且视频按预期播放。
15.04 无限制插件
正如您在这张截图中看到的,OpenH264 插件已启用,没有 Flash 插件,预装了几个不同版本的 GStreamer 包,但视频无法播放!相反,该网站立即告诉我们无法播放该视频。这是为什么?
-
AAC不见了! \u2013 为了简单起见,服务器上有一个文件被输入到我们的浏览器中。如果您使用 Firefox 上下文菜单中的检查器查找它,您将找到带有 AAC-encoded 音频的 MP4。错误消息可能更清楚,但它是有道理的,因为我们目前没有安装 AAC 解码器。
-
更新:再次查看 Firefox 41 的这个问题,我发现 OpenH264 似乎在 about:config 中被禁用了:\n
media.fragmented-mp4.exposed;false\nmedia.fragmented-mp4.gmp.enabled;false\n
\n将这些设置为true
没有效果。我尝试的进一步设置:\n-
media.audio_data.enabled;true
无效。 -
media.mediasource.enabled;true
Vimeo 之前没有使用 MSE,启用这些和相关设置没有效果。 -
media.fragmented-mp4.use-blank-decoder;true
结果:纯绿色画布和恒定正弦波音频信号。
-
15.04 带有受限插件
一个聪明的方法是安装 gstreamer1.0-plugins-bad-faad
,但这并没有使 Vimeo 上的特定错误消息消失,所以让我们安装所有受限制的插件。
正如预期的那样,如果您安装受限制的插件包 afterwards ,一切正常,但您可能希望在 Firefox 中将 Flash 插件设置为 enabled
以外的其他内容,以确保使用 HTML5 视频。
分析或让它崩溃
显然 gstreamer1.0-libav
是您需要删除的唯一包以取回错误消息。所以它使用的是 libav 的 AAC 解码器?我没有更深入地寻找证据,也没有寻找首选解码器(例如,如果 OpenH264 当前在 Linux 上有任何用途),或者 Vimeo 是否由于尽管 H 未满足某些其他依赖项而抛出此错误消息.264 和 AAC 解码器正在安装。
总结与展望
综上所述,目前主流内容的播放不仅需要H.264解码器,还需要AAC解码器,而H.265已经在准备替代旧解码器。此外,在可预见的未来,我认为相应的 specification for MP4s with H.264 不会更改为推荐更开放源代码友好的音频编解码器。
说真的,推动 WebM!你得到 VP8 + Vorbis 作为 H.264/AVC 的竞争者,VP9 + Opus 作为 H.265/HEVC 的竞争者。