ffmpeg 图像序列幻灯片淡入淡出-缺少图像?

ffmpeg 图像序列幻灯片淡入淡出-缺少图像?

这是在 Ubuntu 18.04 上使用 ffmpeg 版本 3.4.4-0ubuntu0.18.04.1。

我想实现同样的目标使用 ffmpeg 创建包含 5 幅图像并带有淡入/淡出效果的视频(主要是“浸入黑色”,虽然我也想了解“交叉淡入淡出”) - 但是,我有很多文件,并且更愿意使用绝对路径,而且我担心如果我在命令行上列出每个文件,我会遇到一些命令行限制。

因此,我发现了这一点(带有淡入淡出效果的 ffmpeg 幻灯片):

...其中提到:

“A” 是每张图片显示的持续时间(以秒为单位)(不包括淡入淡出持续时间),“B”是淡入淡出持续时间(以秒为单位)。

ffmpeg -i IMG_%3d.jpg -vf zoompan=d=(A+B)/B:fps=1/B,framerate=25:interp_start=0:interp_end=255:scene=100 -c:v mpeg4 -maxrate 5M -q:v 2 out.mp4

因此,我有这些图像:

$ ls /path/to/test_*.jpg | wc -l
249

我希望帧速率为 25 fps,每幅图像的持续时间(无淡入淡出):四分之一秒,0.25 秒(因此 6.25 帧,或下限为 6 帧),淡入淡出持续时间为 4 帧(因此 0.16 秒 @ 25 fps)。因此,我期望至少有 249*(6+4) = 2490 帧,或 25 fps 时为 99.6 秒。

这是图像的格式(来自手机相机):

$ mediainfo /path/to/test_IMG_11a.jpg
General
Complete name                            : /path/to/test_IMG_11a.jpg
Format                                   : JPEG
File size                                : 1 001 KiB

Image
Format                                   : JPEG
Width                                    : 3 840 pixels
Height                                   : 2 160 pixels
Color space                              : YUV
Chroma subsampling                       : 4:2:2
Bit depth                                : 8 bits
Compression mode                         : Lossy
Stream size                              : 1 001 KiB (100%)

因此,我尝试这个命令行:

ffmpeg -an -f image2 -pattern_type glob -i '/path/to/test_*.jpg' \
-vf 'fps=25,zoompan=d=(0.25+0.16)/0.16:fps=1/0.16,framerate=25:interp_start=0:interp_end=255:scene=100' \
-vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3 \
-y out.mp4

这会导致两个问题:


第一个问题是:

[swscaler @ 0x5582a63a4500] deprecated pixel format used, make sure you did set range correctly
    Last message repeated 3 times

虽然我没有直接调用 scale,但显然它是隐含的,因为我看到https://trac.ffmpeg.org/wiki/colorspace

YUV 到 RGB 或缩放需要 swscale。

帖子https://stackoverflow.com/questions/43038294/im-getting-error-deprecated-pixel-format-used-make-sure-you-did-set-range-corr注意此警告可以忽略。但是,我想纠正它;我发现:

但是如果使用swscale,你也必须自己设置范围,否则结果会不正确。

...但我不知道如何为我的图像指定色彩空间


第二个问题:不确定是否与第一个问题有关,但上述命令的输出视频在帧 = 421 处停止 - 我可以看到,我的 249 张图像中的大多数都没有编码! Vlc 在输出视频中看到大约 16 秒 - 远低于我预期的 2490 帧或 99.6 秒。


那么,正确的命令行调用是什么,才能从具有淡入淡出效果的图像序列中获取幻灯片,而没有弃用警告并且所有图像都已编码?

相关内容