为什么无法在QuickTime,iMovie或快速预览中显示来自ffmpeg的视频?


20

我已经将ffmpeg用于偶尔的视频转换已有一段时间了,最​​近发现ffmpeg生成的H.264(libx264)视频无法在iMovie或QuickTime中运行(它们也不会在Finder中播放或显示预览),快速查看功能)。

如果我使用内部使用ffmpeg的OS X应用程序(例如MP4toolsAdapter)生成视频,则视频可以正常工作,但是当我尝试直接使用ffmpeg(例如,转换视频)时,效果不佳

# ffmpeg -i input.avi output.mp4

或将一些图像合并为视频:

# ffmpeg -f image2 -pattern_type sequence image-%04d.png output.mp4

iMovie只是将视频导入为黑/白,快速预览仅显示文件信息(但不显示视频预览),而Quicktime告诉我它无法播放:

无法打开文件

这是怎么回事?!

Answers:


31

简而言之,-pix_fmt yuv420p在使用ffmpeg生成Apple软件/设备的H.264内容以及一堆不处理yuv444p的其他解码器时,您(通常)需要包含该参数。

# ffmpeg -i input.avi -pix_fmt yuv420p output.mp4

使用默认值时,输出中未提及此内容,但可以在其Encode / H.264指南中找到

原来是ffmpeg的选择yuv444p为libx264编码的默认像素格式(在某些情况下),这是不符合苹果的软件/硬件兼容H.264解码器(和可能不是很广泛兼容一般的?)。不幸的是,这似乎不太可能改变,对此也没有警告,因此,如果使用ffmpeg制作H.264文件,则只需要了解一下即可。

据我所知,如果转换已经在使用yuv420p的视频,它将保持不变,但是如果从更奇特的东西(例如图像或GIF或其他)进行转换,则必须指定像素格式以实现与Apple的一般兼容性。


1
在当前版本的iMovie(Yosemite)中不起作用。还有其他想法吗?
米兰Babuškov2015年

1
您可以发布的输出ffprobe -select_streams v -show_streams output.mp4吗?
drfrogsplat 2015年

+1,即使yuv420p视频也无法在High Sierra中播放。
trisweb

如果不指定该选项,则不仅是Apple,有时Windows Media Player也无法播放输出。而且,如果您尝试与其他播放器一起播放,那将是一个灰褐色的屏幕,其中在视频上显示了伪像。
莎彦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.