从静止图像创建视频时,在 ffmpeg 中淡出是不稳定的



我正在制作一个视频:

  • 使用静止图像作为源
  • 具有文本叠加
  • 淡入和淡出
  • 具有静音立体声音轨。

到目前为止,我有这个,它(几乎(工作正常:

ffmpeg -f lavfi -i "aevalsrc=0|0" -loop 1 -i turtle-2.jpg  -c:v libx264 -t 5 -r 30 -s 1920x1080 -aspect 16:9 -pix_fmt yuv420p -filter:v drawtext="fontsize=130:fontfile=comic.ttf:text='hello world':x=(w-text_w)*.25:y=(h-text_h)*.75",fade=in:0:60,fade=out:90:60 -acodec aac turtle11.mp4

唯一的问题是淡出似乎不会变黑,即使这是一个 150 帧的视频,我相信我正确地遵循了 ffmpeg 文档。

生成的视频在这里:

http://video.blivenyc.com/vid-from-image/turtle11.mp4

有什么想法吗?

好吧,我不确定为什么,但这有效,即使它似乎是等效的:

ffmpeg -f lavfi -i "aevalsrc=0|0" -loop 1 -i turtle-2.jpg  -c:v libx264 -t 5 -r 30 -s 1920x1080 -aspect 16:9 -pix_fmt yuv420p -filter:v drawtext="fontsize=130:fontfile=comic.ttf:text='hello world':x=(w-text_w)*.25:y=(h-text_h)*.75",fade=t=in:st=0:d=1,fade=t=out:st=4:d=1 -acodec aac turtle12.mp4

基本上,基于框架的语法:

入:0:60,淡入=出:90:60

替换为基于时间的:

淡化=t=输入:st=0:d=1

,淡化=t=out:st=4:d=1

不知何故,它有效。不知道这是为什么。

入淡出滤镜操作的视频流长度不是 150 帧。这里的输入和输出帧速率不同。使用-r设置输出速率发生在所有过滤完成后。在该阶段,ffmpeg 将丢弃或复制帧以获得输出速率。

除非另有明确设置,否则图像或图像序列的输入速率为 25。在您的命令中,由于没有覆盖,因此它是 25。因此,从第 90 帧开始淡出 60 帧,将在第 125 帧(5 秒 x 25(结束。FFMPEG 将复制每个输入秒的 5 帧以使其达到 30。

要获得所需的结果,请使用

ffmpeg -f lavfi -i "aevalsrc=0|0" -loop 1 -framerate 30 -i turtle-2.jpg  -c:v libx264 -t 5 -s 1920x1080 -aspect 16:9 -pix_fmt yuv420p -filter:v drawtext="fontsize=130:fontfile=comic.ttf:text='hello world':x=(w-text_w)*.25:y=(h-text_h)*.75",fade=in:0:60,fade=out:90:60 -acodec aac turtle11.mp4

最新更新