我写了一个命令,交叉淡化合并一个介绍,一个outro,一个视频:
ffmpeg -i intro.mp4 -i video.mp4 -i outro.mp4 -filter_complex "
[0:v]trim=start=0:end=9,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[intro];
[0:v]trim=start=9:end=10,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[firstfadeoutclip];
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[firstfadeinclip];
[1:v]trim=start=1:end=24,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[video];
[1:v]trim=start=24:end=25,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[secondfadeoutclip];
[2:v]trim=start=0:end=1,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[secondfadeinclip];
[2:v]trim=start=1:end=10,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[outro];
[firstfadeoutclip]format=pix_fmts=yuva420p, fade=t=out:st=0:d=1:alpha=1[firstfadeoutalpha];
[firstfadeinclip]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[firstfadeinalpha];
[secondfadeoutclip]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[secondfadeoutalpha];
[secondfadeinclip]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[secondfadeinalpha];
[firstfadeoutalpha]fifo[firstfadeoutfifo];
[firstfadeinalpha]fifo[firstfadeinfifo];
[secondfadeoutalpha]fifo[secondfadeoutfifo];
[secondfadeinalpha]fifo[secondfadeoinfifo];
[firstfadeoutfifo][firstfadeinfifo]overlay[firstcrossfade];
[secondfadeoutfifo][secondfadeoinfifo]overlay[secondcrossfade];
[intro][firstcrossfade][video][secondcrossfade][outro]concat=n=5[output];
[0:a][1:a] acrossfade=d=1 [audio]"
-vcodec libx264 -map "[output]" -map "[audio]" "output.mp4"
这个巨大的命令工作正常。
但现在我要做的是在视频部分添加水印:
[1:v]trim=start=1:end=24,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[video];
我希望通过将此命令(水印)合并到上面的那个命令来实现:
ffmpeg -i "1080p.mp4" -filter_complex "
movie=logo-wm.png[watermark];
[watermark][0:V]scale2ref=(1917*iw/1920)/3.5:(322*iw/1920)/3.5[wm][v];
[v][logo]overlay=main_w-overlay_w-20:20" "output.mp4"
整个(1917*iw/1920)/3.5:(322*iw/1920)/3.5
使用scale2ref=
过滤器按比例缩放水印。 1917
是我的水印图片的宽度,322
是高度
它与main_w-overlay_w-20:20
但我无法使其工作我尝试通过将参数复制到[1:v]
输入的过滤器来添加它。并为水印添加另一个输入,如果我是正确的,则[3:v]
而不是使用movie=
过滤器。但我不能。
我知道我可以分两步完成,但我想立即执行,只需一个命令。
愿任何人帮我合并吗?提前谢谢!
答案 0 :(得分:1)
使用
ffmpeg -i intro.mp4 -i video.mp4 -i outro.mp4 -i watermark.png -filter_complex "
[0:v]trim=start=0:end=9,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[intro];
[0:v]trim=start=9:end=10,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[firstfadeoutclip];
[3:v][1:v]scale2ref=(1917*iw/1920)/3.5:(322*iw/1920)/3.5[wm][v1ol];
[v1ol]trim=0:25[v1];[v1][wm]overlay=W-w-20:20,split=3[1va][1vb][1vc];
[1va]trim=start=0:end=1,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[firstfadeinclip];
[1vb]trim=start=1:end=24,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[video];
[1vc]trim=start=24:end=25,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[secondfadeoutclip];
[2:v]trim=start=0:end=1,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[secondfadeinclip];
[2:v]trim=start=1:end=10,setpts=PTS-STARTPTS,scale=480x360,setsar=sar=16/9[outro];
[firstfadeoutclip]format=pix_fmts=yuva420p, fade=t=out:st=0:d=1:alpha=1[firstfadeoutalpha];
[firstfadeinclip]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[firstfadeinalpha];
[secondfadeoutclip]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[secondfadeoutalpha];
[secondfadeinclip]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[secondfadeinalpha];
[firstfadeoutalpha]fifo[firstfadeoutfifo];
[firstfadeinalpha]fifo[firstfadeinfifo];
[secondfadeoutalpha]fifo[secondfadeoutfifo];
[secondfadeinalpha]fifo[secondfadeoinfifo];
[firstfadeoutfifo][firstfadeinfifo]overlay[firstcrossfade];
[secondfadeoutfifo][secondfadeoinfifo]overlay[secondcrossfade];
[intro][firstcrossfade][video][secondcrossfade][outro]concat=n=5[output];
[0:a][1:a] acrossfade=d=1 [audio]"
-vcodec libx264 -map "[output]" -map "[audio]" "output.mp4"
(我还没有检查你的其余命令,但也许你打算使用setdar=16/9
)