ffmpeg 水印:scale2ref 输出不能用于第二个叠加层

ffmpeg watermark: scale2ref output can't be used in second overlay

我能够在视频的 2 个位置(左上角和右下角)添加水印,并在一个命令中将图像高度缩放到视频高度的十分之一

ffmpeg -hide_banner -i /path/to/input.mp4 -i /path/to/watermark.jpg -filter_complex "[1:v][0:v]scale2ref=oh*mdar:ih/10[logo-out][video-out];[video-out][logo-out]overlay=10:10[flag];[1:v][flag]scale2ref=oh*mdar:ih/10[logo-out2][video-out2];[video-out2][logo-out2]overlay=W-w-10:H-h-10" -c:a copy /path/to/output.mp4

但是上面的命令太多余了,所以我去掉了第二个scale2ref

ffmpeg -hide_banner -i /path/to/input.mp4 -i /path/to/watermark.jpg -filter_complex "[1:v][0:v]scale2ref=oh*mdar:ih/10[logo-out][video-out];[video-out][logo-out]overlay=10:10[flag];[flag][logo-out]overlay=W-w-10:H-h-10" -c:a copy /path/to/output.mp4

但遗憾的是,出现错误

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb195013c00] Invalid stream specifier: logo-out.
    Last message repeated 1 times
Stream specifier 'logo-out' in filtergraph description [1:v][0:v]scale2ref=oh*mdar:ih/10[logo-out][video-out];[video-out][logo-out]overlay=10:10[flag];[flag][logo-out]overlay=W-w-10:H-h-10 matches no streams

我知道错误发生是因为第一个叠加层没有设置图像输出说明符,但我们似乎不能这样做?我只知道overlay可以设置视频流说明符

如何在第二个叠加层中使用从 scale2ref 输出的 [logo-out] 说明符?

过滤图中生成的输出只能使用一次。要重复使用,请先拆分它。

ffmpeg -hide_banner -i /path/to/input.mp4 -i /path/to/watermark.jpg -filter_complex "[1:v][0:v]scale2ref=oh*mdar:ih/10[logo-out][video-out];[logo-out]split=2[logo-left][logo-right];[video-out][logo-left]overlay=10:10[flag];[flag][logo-right]overlay=W-w-10:H-h-10" -c:a copy /path/to/output.mp4