适用于Chrome的ffmpeg选项

8

我正在寻找使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

我只想要一个纯白色的背景。


要去除透明度,您可以使用类似于 format=rgba,lutrgb=a=minval 的过滤器。请参见这个链接。或在编码之前使用convert将图像铺平并加上白色背景。 - aergistal
1个回答

3
视频在Chrome v.44下正常播放(虽然现在两个链接都失效了)。由于您表示在升级到v.41之前视频是可以播放的,这表明可能存在一个Chrome版本41到43之间的bug。
至于背景,PNG通常是透明的,编码的MP4流似乎被编码为32位流(24位颜色,8位alpha通道)。只有webm真正支持浏览器中的alpha通道(而且目前仅通过Chrome和Opera支持)。
Chrome使用FFmpeg解码mp4视频,而Firefox使用主机系统提供的任何东西。不同的背景颜色是为了表示透明度,因为实际上视频并没有提供alpha通道。
推荐的方法是在渲染帧时不包含alpha通道(如果您不打算将其用于任何内容),或者将PNG序列转换为非alpha通道PNG,然后再将其解码为视频。这适用于mp4和webm。

1
是的,似乎是Chrome的一个bug,已经被修复了。我想我会捕捉没有alpha通道的图像序列并重新生成视频。我确实需要alpha通道,并且它适用于webm,但我想我需要一个单独的图像序列来制作mp4。 - James

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