我有一张 PNG 图像,想用它制作一段时长 8 秒、帧率为 30 fps 的视频,其中第一秒淡入,最后一秒淡出。这是我使用滤镜预期的效果,fade
但结果却只产生了一段长度为 8 秒的黑色视频,两者均使用2019 年的2023-09-07-git-9c9f48e7f2-essentials_build-www.gyan.dev
滤镜4.2.1
。
ffmpeg -framerate 1/8 -i t.png -r 30 -pix_fmt yuv420p ^
-filter_complex "fade=in:0:30, fade=out:210:30" t.mp4
不使用滤镜(-vf
或-filter_complex
没有区别),会按预期创建一个包含 PNG 图像的 8 秒视频。我不知道在应用滤镜时我做错了什么。
答案1
因此,命令应该是,
ffmpeg -framerate 30 -loop 1 -t 8 -i t.png -vf "fade=in:0:30, fade=out:210:30" -pix_fmt yuv420p t.mp4
淡入淡出过滤器根据提供给它的帧进行操作 - 它无法生成新帧。如果没有输入
-loop
,图像输入就只是一个帧流。即使使用循环,1/8 的帧速率也会导致第二帧的时间戳为 8 秒。第 240 帧的时间戳为 1920 秒。这不是您想要的。
最后,使用 将循环限制为 8 秒
-t 8
。