首页 > 解决方案 > 无法在 Firefox 中播放的视频:如何检测以及如何修复?

问题描述

作为测试用例,我有两个 mp4 视频:它们的编码似乎相同,但一个在 Firefox 中有效,一个不能:

bad.mp4(不起作用)查看 下载

good.mp4 (确实有效)查看 下载

(注意 - 我认为上面的“查看”链接会使用浏览器的内置播放器打开它们,但看起来他们使用的是 Dropbox 的视频播放器,它在 firefox 中工作。所以,要在 firefox 中查看它,下载它并然后将其拖入 Firefox 或右键单击并从“打开方式”中选择 Firefox - 谢谢!)

他们都在 Chrome 中玩。

在 Mozilla 错误跟踪网站上有一个关于相关问题的长时间讨论: https ://bugzilla.mozilla.org/show_bug.cgi?id=1130450

所以,我需要回答三个问题:

1) bad.mp4 有什么问题?

2) 如何以编程方式(即在 linux 命令行)检测视频库中的哪些视频会出现此问题?

3) 如何以编程方式修复它(例如使用 FFMPEG)。

我注意到的一件事是,在好的视频中,视频在流 0 上,音频流在 1 上,而在坏视频上则相反。我尝试交换流,但似乎没有帮助。

编辑:重新基线配置文件

有人建议 FF 可能不喜欢 Baseline 个人资料视频。我能够识别出一些有效的基线个人资料视频和一些无效的,所以我认为这不是关键问题。这里还有几个示例:

Baseline_bad.mp4(不起作用)查看 下载

Baseline_good.mp4(确实有效)查看 下载

标签: firefoxvideoffmpegmp4

解决方案


首先,排序 mp4 曲目与此无关。其次,在带有 Firefox 版本 52.5.3 的 Win10 上,您的 bad.mp4 可以正常工作。但是在使用 Firefox 69.03 bad.mp4 的 MacOS 上也可以播放,但有很多人工制品。

H.264 比特流似乎没问题。我用 MP4Box 解复用了坏的 mp4,并用参考软件MP4Box -raw 2 bad.mp4对其进行了bad_track2.h264解码。解码很好,没有任何问题,所以比特流似乎没有问题。

所以它必须是包装成mp4。事实上,如果我再次使用 将比特流打包回来MP4Box -add bad_track2.h264 repackage.mp4,它的播放效果就很好。所以这是一个好消息,因为您不必重新编码(转码)您的视频,这将为您节省大量时间。当然ffmpeg -i bad.mp4 transcode.mp4,如果您不想使用 MP4Box 进行转码,也可以解决它。

回答 2 和 3。不是 100% 确定这是否对您的所有视频都相同,但 good.mp4 和 bad.mp4 之间的区别是compatible_brands您可以得到的ffprobeffprobe您可以编写一个脚本来查找与 bad.mp4 中具有相同品牌的视频,然后使用,重新打包每个视频MP4Box

我希望这有帮助。

编辑

为了解决@llogan 的回答中提出的关于基线 AVC配置文件的问题。恕我直言,这不太可能不支持基线配置文件,但不能 100% 确定它,因为它可能取决于运行 Firefox 的平台。

来自Mozilla 的网络视频编解码器指南

截屏

1:Firefox 对 AVC 的支持取决于操作系统内置或预装的 AVC 编解码器及其容器,以避免专利问题。


推荐阅读