在ffmpeg中用淡入/淡出效果创建5张图像的视频

用户名

对于5张图片,我必须在ffmpeg中创建60秒的视频,每张图片必须显示15秒。15秒后,第一张图像必须淡出,第二张图像必须淡入,第二张图像必须淡出后,第三张图像必须淡入..etc。请指导我如何使用ffmpeg命令实现这一目标。

浸入/淡入黑色

向下滚动以使用淡入淡出方法。

淡入淡出的例子

每个图像显示5秒钟并且每个褪色持续1秒的示例。每个图像输入具有相同的宽度,高度和样本宽高比。如果它们的大小不同,请参见下面的示例3。

MP4输出

ffmpeg \
-loop 1 -t 5 -i input0.png \
-loop 1 -t 5 -i input1.png \
-loop 1 -t 5 -i input2.png \
-loop 1 -t 5 -i input3.png \
-loop 1 -t 5 -i input4.png \
-filter_complex \
"[0:v]fade=t=out:st=4:d=1[v0]; \
 [1:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [4:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; \
 [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4

有声

与上述相同,但带有音频:

ffmpeg \
-loop 1 -t 5 -i input0.png \
-loop 1 -t 5 -i input1.png \
-loop 1 -t 5 -i input2.png \
-loop 1 -t 5 -i input3.png \
-loop 1 -t 5 -i input4.png \
-i audio.m4a \
-filter_complex \
"[0:v]fade=t=out:st=4:d=1[v0]; \
 [1:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [4:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; \
 [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" -map 5:a -shortest out.mp4

适用于变化或任意大小的输入图像

与第一个示例类似,但是输入图像的宽度x高度不同。它们将被填充以适合1280x720的框:

ffmpeg \
-loop 1 -t 5 -i input0.png \
-loop 1 -t 5 -i input1.png \
-loop 1 -t 5 -i input2.png \
-loop 1 -t 5 -i input3.png \
-loop 1 -t 5 -i input4.png \
-filter_complex \
"[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=out:st=4:d=1[v0]; \
 [1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [4:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; \
 [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4

如果要裁剪(填满屏幕)而不是填充板(letterbox / pillarbox),或者要防止放大,请参阅“调整视频大小以适合静态大小的播放器”中的示例

GIF输出

从“如何使用ffmpeg以合理的质量将视频转换为GIF”中添加过滤器

ffmpeg \
-framerate 10 -loop 1 -t 5 -i input0.png \
-framerate 10 -loop 1 -t 5 -i input1.png \
-framerate 10 -loop 1 -t 5 -i input2.png \
-framerate 10 -loop 1 -t 5 -i input3.png \
-framerate 10 -loop 1 -t 5 -i input4.png \
-filter_complex \
"[0:v]fade=t=out:st=4:d=1[v0]; \
 [1:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [4:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; \
 [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,split[v0][v1]; \
 [v0]palettegen[p];[v1][p]paletteuse[v]" -map "[v]" out.gif

使用-loop输出选项来控制GIF循环的次数。如果不使用此选项,则默认为无限循环。-1是no循环。

使用的选项和过滤器:

  • -t 以秒为单位设置每个输入的持续时间。

  • -loop 1 循环播放图像,否则持续时间为1帧。

  • -framerate设置输入图像的帧速率(未声明时默认为25)。用于制作GIF。

  • 填充垫缩放以使输入图像适合特定的均匀大小(在示例#3中使用)。

  • 淡入淡出。d是淡入淡出的持续时间。st是它开始的时间。

  • concat串联(或“联接”)每个图像。

  • 格式以输出与非基于FFmpeg的播放器兼容的色度二次采样方案(如果输出MP4并使用libx264进行编码(MP4输出的默认编码器,如果您的构建支持的话))。

  • 拆分以制作过滤器输出的副本。调色板*过滤器需要用一个命令完成所有操作。

  • palettegenpaletteuse使GIF看起来不错。


淡入淡出

淡入淡出示例

每个图像显示5秒钟并且每个交叉渐变持续1秒的示例。每个图像输入具有相同的宽度,高度和样本宽高比。如果它们的大小不同,则改写上面的示例3。

MP4输出

ffmpeg \
-loop 1 -t 5 -i 1.png \
-loop 1 -t 5 -i 2.png \
-loop 1 -t 5 -i 3.png \
-loop 1 -t 5 -i 4.png \
-loop 1 -t 5 -i 5.png \
-filter_complex \
"[1]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+4/TB[f0]; \
 [2]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+8/TB[f1]; \
 [3]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+12/TB[f2]; \
 [4]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+16/TB[f3]; \
 [0][f0]overlay[bg1];[bg1][f1]overlay[bg2];[bg2][f2]overlay[bg3]; \
 [bg3][f3]overlay,format=yuv420p[v]" -map "[v]" -movflags +faststart out.mp4

有声

ffmpeg \
-loop 1 -t 5 -i 1.png \
-loop 1 -t 5 -i 2.png \
-loop 1 -t 5 -i 3.png \
-loop 1 -t 5 -i 4.png \
-loop 1 -t 5 -i 5.png \
-i music.mp3 \
-filter_complex \
"[1]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+4/TB[f0]; \
 [2]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+8/TB[f1]; \
 [3]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+12/TB[f2]; \
 [4]format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+16/TB[f3]; \
 [0][f0]overlay[bg1];[bg1][f1]overlay[bg2];[bg2][f2]overlay[bg3]; \
 [bg3][f3]overlay,format=yuv420p[v]" -map "[v]" -map 5:a -shortest -movflags +faststart out.mp4

带有音频的两个视频之间的淡入淡出

从每个输入中选择5秒分段,并添加1秒交叉淡入淡出:

ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex \
"[0:v]trim=start=5:end=10,setpts=PTS-STARTPTS[v0];
 [1:v]trim=start=12:end=17,setpts=PTS-STARTPTS+4/TB,format=yuva444p,fade=st=4:d=1:t=in:alpha=1[v1];
 [v0][v1]overlay,format=yuv420p[v];
 [0:a]atrim=start=5:end=10,asetpts=PTS-STARTPTS[a0];
 [1:a]atrim=start=12:end=17,asetpts=PTS-STARTPTS[a1];
 [a0][a1]acrossfade=d=1[a]" \
-map "[v]" -map "[a]" output.mp4

GIF输出

ffmpeg \
-framerate 10 -loop 1 -t 5 -i 1.png \
-framerate 10 -loop 1 -t 5 -i 2.png \
-framerate 10 -loop 1 -t 5 -i 3.png \
-framerate 10 -loop 1 -t 5 -i 4.png \
-framerate 10 -loop 1 -t 5 -i 5.png \
-filter_complex \
"[1]format=rgba,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+4/TB[f0]; \
 [2]format=rgba,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+8/TB[f1]; \
 [3]format=rgba,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+12/TB[f2]; \
 [4]format=rgba,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+16/TB[f3]; \
 [0][f0]overlay[bg1];[bg1][f1]overlay[bg2];[bg2][f2]overlay[bg3];[bg3][f3]overlay,split[v0][v1]; \
 [v0]palettegen[p];[v1][p]paletteuse[v]" -map "[v]" out.gif

使用-loop输出选项来控制GIF循环的次数。如果不使用此选项,则默认为无限循环。-1是no循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ffmpeg淡入淡出效果会降低视频质量

来自分类Dev

实现交叉淡入淡出的图像效果

来自分类Dev

图像缩放和淡入淡出效果

来自分类Dev

ffmpeg 淡入淡出 2 张 1080p 图片

来自分类Dev

如何使用jQuery和CSS创建图像悬停淡入淡出效果?

来自分类Dev

如何使用FFMPEG在叠加中添加淡入淡出效果?

来自分类Dev

使用ffmpeg在2个视频之间进行淡入淡出

来自分类Dev

FFmpeg:具有淡入淡出幻灯片和“上移/下移”效果的视频无法正常工作

来自分类Dev

如何为幻灯片创建淡入淡出效果?

来自分类Dev

ffmpeg-如何用1张图像创建5秒视频缩小效果

来自分类Dev

AVAssetExportSession和淡入淡出效果

来自分类Dev

AVAssetExportSession和淡入淡出效果

来自分类Dev

淡入淡出效果与爬升文字

来自分类Dev

滚动时的淡入淡出效果

来自分类Dev

如何插入淡入淡出效果?

来自分类Dev

如何减慢淡入淡出效果?

来自分类Dev

为 onmouseover 添加淡入淡出效果

来自分类Dev

FFmpeg音频交叉淡入淡出

来自分类Dev

jQuery淡入淡出效果在mouseenter上的背景图像

来自分类Dev

悬停具有淡入淡出效果时交换图像

来自分类Dev

使“淡出滑块”上的淡入淡出效果更加漂亮

来自分类Dev

CSS一张一张淡入淡出

来自分类Dev

CSS一张一张淡入淡出

来自分类Dev

Android图像淡入淡出动画

来自分类Dev

自适应CSS图像淡入淡出

来自分类Dev

在WPF中淡入淡出图像

来自分类Dev

图像淡入淡出后的div

来自分类Dev

点击时的淡入淡出图像过渡

来自分类Dev

动画中的图像滑块淡入淡出