适用于 Chrome 的 ffmpeg 选项

ffmpeg options that work with Chrome

我正在尝试找到使 mp4 在 Chrome 中工作的神奇选项。我认为我的视频可以播放,但在 Chrome 更新后似乎不再播放了。

Chrome,版本 41.0.2272.101 (Windows)

我尝试了一些其他机器,发现一些视频可以在旧版本上运行,而我的 Mac 似乎仍然可以在最新的 Chrome.

上运行

我正在使用 ffmpeg 选项从 png 系列转换,

ffmpeg -framerate 10 -i dance%02d.png  -r 10 -pix_fmt yuv420p dance.mp4

有些视频有效,有些无效,有些有时有效,或者中途停止。

我尝试了各种其他选项,例如,

ffmpeg -start_number 16 -framerate 10 -i dance%02d.png -r 10 -an -s hd720 \
-vcodec libx264 -pix_fmt yuv420p -preset slow -profile:v baseline \
-movflags faststart -y dance.mp4

但这似乎只会让事情变得更糟。

这是其中一个视频, http://www.botlibre.com/media/a786625.mp4

还有一个, http://www.botlibre.com/media/a812450.mp4

Firefox 似乎在任何版本上都没有问题,尽管背景是灰色的。 IE 工作正常,白色背景。 Safari 工作,灰色背景。

另一件事,他们的视频过去在旧 Chrome 版本上有白色背景,但现在是灰色的,除了 Mac 仍然是白色。

还有一件事。 Webm 格式有效,但有人知道删除透明度的选项吗?我正在使用,

ffmpeg -i dance%02d.png  -r 10 -c:v libvpx -crf 10 -b:v 512k -c:a libvorbis dance.webm

只想要纯白色背景。

所提供的视频在 Chrome v. 44 下运行良好(尽管现在两个链接都已关闭)。正如您所说,您认为这些视频在升级到 v.41 之前有效,这表明版本 41 到(可能)43 中 Chrome 中存在错误。

至于背景。 PNG 通常是透明的,编码的 MP4 流似乎被编码为 32 位流(24 位颜色,8 位 alpha)。只有 webm 真正支持浏览器中的 alpha(目前仅支持 Chrome 和 Opera)。

Chrome 使用 FFmpeg 解码 mp4 视频,而 Firefox 使用主机系统提供的任何内容。不同的背景颜色是为了表示透明度,因为视频实际上并未显示可用的 alpha 通道。

推荐的方法是在没有 alpha 通道的情况下渲染帧(如果您不打算将其用于任何用途),或者在将它们解码为视频之前将 PNG 序列转换为非 alpha 通道 PNG .这适用于 mp4 和 webm。