我一直在尝试使用 ffmpeg 实现两个视频片段之间的淡入淡出过渡,但到目前为止都失败了。我是 ffmpeg 的新手,主要依靠调整我在文档和在线现有示例中可以找到的内容。从我目前阅读的内容来看,使用混合或者覆盖过滤器应该有助于实现我想要的目标,但我无法弄清楚让它工作的命令行详细信息。
这褪色而 concat 过滤器非常适合淡出视频 1,淡入视频 2,并将 2 个视频合并为 1 个剪辑类型转换,但我希望得到一个命令来从视频 1 过渡到视频 2,没有任何变黑介于两者之间。我在任何地方都找不到针对此问题的任何示例,也许我正在寻找错误的关键字……?
更具体地说,我的视频是 mp4(h264 视频,没有声音,以防万一),每个视频时长 5 秒,我需要从大约 4.5 秒的视频 1 过渡到 0.5 秒的视频 2。
与本教程使用 MLT 和帧所做的操作类似(请参阅 2:25 中的淡入淡出示例),但我正在寻找一种仅在 ffmpeg 中执行此操作而不调用任何其他程序的方法。 http://www.youtube.com/watch?v=3PRZ9L_KLdI
如果能提供任何指针或者命令行来实现这样的淡入淡出效果的话,我们将不胜感激,非常感谢!
答案1
我建议这样做:
- 创建与输出视频具有相同持续时间和分辨率的黑色背景
- 为每个视频添加 Alpha 通道
- 为每个视频添加淡入淡出 Alpha 效果
- 在每个视频上使用黑色背景叠加
因此,为 2 个视频(每个 5 秒)添加交叉淡入淡出的命令应该是:
ffmpeg -i 1.mp4 -i 2.mp4 -f lavfi -i color=black -filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v]scale=960x720,trim=duration=9[over];\
[over][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
-vcodec libx264 -map [outv] out.mp4
这将使第一个视频在第 4 秒 (st=4) 淡出为 alpha,持续时间为 1 秒 (d=1),第二个视频在第 0 秒 (st=0) 淡入,持续时间为 1 秒 (d=1),并将其显示时间向前移动至 4 秒 (+4/TB)。然后我们只需剪切 9 秒的黑色,将其缩放到输出视频大小并叠加。
希望能帮助到你。
答案2
答案3
ffmpeg-concat是实现您想要的最简单的方法,并允许您使用一堆性感的 OpenGL 转换,默认为交叉淡入淡出。
ffmpeg-gl-转换是一个自定义的 ffmpeg 过滤器,它允许您使用 GLSL 在两个视频流之间平滑过渡。与此处列出的替代方案相比,此过滤器的使用和自定义程度明显更高。
该过滤器支持大型列表过渡类型,默认为交叉淡入淡出。
./ffmpeg -i 0.mp4 -i 1.mp4 -filter_complex "gltransition=duration=4:offset=1.5" out.mp4
答案4
我是这样做的:
- ffmpeg 版本 N-77197-gdf2ce13
- 2 个视频,每个视频时长 4 秒。
- 需要将它们连接起来并与它们之间淡入淡出。
- 视频为 25 fps。
1)在第一个结尾处添加淡出(由亮到暗),在第二个开头处添加淡入(由暗到亮):
ffmpeg -i 1.mp4 -y -vf fade=out:76:24 1f.mp4
ffmpeg -i 2.mp4 -y -vf fade=in:0:25 2f.mp4
76:24 表示淡出将从第 76 帧开始,并在 24 帧后完成 = 1 秒淡出。
0:25 表示淡入将从第 0 帧开始并在 25 帧后结束。
2)合并两个视频
全部转换为 TS
ffmpeg -i 1f.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 1f.ts
ffmpeg -i 2f.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 2f.ts
合并
ffmpeg -i "concat:1f.ts|2f.ts" -bsf:a aac_adtstoasc -c copy output.mp4
谢谢:
http://www.bogotobogo.com/FFMpeg/ffmpeg_fade_in_fade_out_transitions_effects_filters.php