Video 如何将水印添加到这个巨大的ffmpeg命令的视频部分,该命令使用crossfade添加了intro和outro?

Video 如何将水印添加到这个巨大的ffmpeg命令的视频部分,该命令使用crossfade添加了intro和outro?,video,ffmpeg,Video,Ffmpeg,我编写了一个命令,将一个介绍、一个输出与一个视频合并: 这个庞大的命令运行良好 但现在我想做的是在视频部分添加水印: [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

我编写了一个命令,将一个介绍、一个输出与一个视频合并:

这个庞大的命令运行良好

但现在我想做的是在视频部分添加水印:

[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\u w-overlay\u w-20:20

但是我无法使它工作,我试图通过将参数复制到
[1:v]
输入的过滤器来添加它。通过为水印添加另一个输入,如果我是对的,它将是
[3:v]
,而不是使用
电影=
过滤器。但我不能

我知道我可以分两步完成,但我想一次完成,只需一个命令

有人能帮我合并吗?提前谢谢你

使用

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

该命令有效,但水印在1或2秒后消失。。。看起来好像修剪持续时间没有正确应用。我使用setsar是因为在文档中我读到它也设置了dar。如果我在所有流中都使用了setsar,我不应该在流中使用相同的水印吗?我认为水印只应用于
[firstfadeinclip]
,而不是
[video]
和[
secondfadeoclip
]我正在尝试…更正。与源流不同,生成的流需要复制以供重用。
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"