【问题标题】:ffmpeg watermark: scale2ref output can't be used in second overlayffmpeg 水印:scale2ref 输出不能用于第二次叠加
【发布时间】:2021-12-02 19:49:45
【问题描述】:

我能够在一个命令中将图像高度缩放到视频高度的十分之一,将水印添加到视频的 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 watermark video-editing video-watermarking


    【解决方案1】:

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

    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

    【讨论】:

    • 谢谢,它有效。我是ffmpeg的新手,我不知道我可以使用split。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2021-12-27
    • 2013-12-28
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多