如何在这个巨大的ffmpeg命令的视频部分添加水印,添加intro和outro与crossfade?

时间:2017-07-03 14:11:32

标签: video ffmpeg

我写了一个命令,交叉淡化合并一个介绍,一个outro,一个视频:

enter image description here

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=过滤器。但我不能。

我知道我可以分两步完成,但我想立即执行,只需一个命令。

愿任何人帮我合并吗?提前谢谢!

1 个答案:

答案 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