从静止图像创建视频时,淡出ffmpeg是不是很奇怪?

时间:2017-06-13 18:40:24

标签: ffmpeg

我正在创建一个视频:

  • 使用静止图像作为来源
  • 有文字叠加
  • 淡入淡出
  • 有一个静音立体声音轨。

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

Object

唯一的问题是淡出似乎不会变黑,即使这是150帧视频,我相信我正确地关注ffmpeg documentation

结果视频在这里:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

嗯,我不确定为什么但是这个有效,即使它看起来是等价的:

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

基本上是基于帧的语法:

fade = in:0:60,fade = out:90:60

取代基于时间:

褪色= T =在:ST = 0:d = 1,褪色= T =出来:ST = 4:d = 1

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

答案 1 :(得分:0)

淡入淡出滤镜操作的视频流不是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