FFMpeg - JPG/PNG 图像在 MP4 输出文件中呈现的方向不正确,并且无法合并到同一个 MP4 视频中

FFMpeg - JPG/PNG 图像在 MP4 输出文件中呈现的方向不正确,并且无法合并到同一个 MP4 视频中

我是 FFMpeg 的新用户。

我想要一个命令行,可以从 JPG 和/或 PNG 图像文件夹中创建基本的幻灯片 MP4 视频。图像来源于数码相机/智能手机或扫描照片(通常为 600 dpi)。

到目前为止,我已经部分成功了,通过创建一个输入文本文件,其中包含来自文件夹中的图像文件名列表,并在每个“文件”语句后使用“duration 2”命令来在每个图像之间引入 2 秒的延迟。

ffmpeg -hide_banner -f concat -safe 0 -i MQSS_test-ffmpeg.Txt -c:v libx264 -r 30 -pix_fmt yuv420p MQSS_test-ffmpeg.mp4

我注意到两种奇怪的行为。

行为#1:方向不正确

MP4 输出文件中的所有图像都以纵向或横向呈现,具体取决于第一张图像的方向。由于文件夹中混合了纵向和横向图像,因此以错误方向呈现的图像会被拉伸或挤压。因此,如果第一张图像是纵向的,则所有图像都会呈现为纵向。如果第一张图像是横向的,则所有图像都会呈现为横向。

有没有办法让图像以正确的方向呈现?

行为 #2:无法混合图像格式

我无法在同一个输入文件中混合使用 JPG 和 PNG 图像文件。我收到几个错误:

处理输入时发现无效数据,无法在 SOF 之前处理 SOS,跳过不支持的编码类型(ca)

但是,如果我将 JPG 和 PNG 文件分成单独的 JPG 和 PNG 输入文件并分别运行,则两种图像类型都可以正确呈现。

有任何想法吗?

答案1

有没有办法让图像以正确的方向呈现?

示例改编自使用 ffmpeg 调整视频大小以适应特定尺寸

ffmpeg -framerate 1/2 -i %04d.jpg -filter_complex "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:-1:-1:color=black,format=yuv420p" -r 30 -movflags +faststart output.mp4

另请参阅图像解复用器文档

我无法在同一个输入文件中混合 JPG 和 PNG 图像文件。

  • 制作视频之前将它们全部转换为一种文件类型。

  • 或者单独输入每幅图像并使用连接过滤器将它们连接起来。这种方法会很繁琐。

答案2

据我所知,ffmpeg无法使用 EXIF Orientation 标签相应地旋转图像。因此,在使用 ffmpeg 将它们组合成幻灯片之前,您需要先旋转图像。

要无损旋转 JPEG 图像(无需重新压缩),可以使用多种工具,例如Xnview 的nconvertexiftran,可能还有很多其他的。

例如,要根据 Exif 标签旋转当前目录中的所有“*.jpg”图像,使用以下命令exiftran

exiftran -a -i -b *.jpg

所用标志的含义:

-a     Automatic (using exif orientation tag).
-i     Enable in-place editing of the images.
-b     Create a backup file when doing in-place editing 

此后,您可以使用ffmpeg所需的选项。

相关内容