【问题标题】:FFmpeg doesn't recognize correct input height in hstack commandFFmpeg 无法识别 hstack 命令中的正确输入高度
【发布时间】:2021-06-19 14:51:10
【问题描述】:

hstackFFmpeg 命令有一个问题让我很困惑。

input1input2 都是垂直 360x640 视频。我将input1 裁剪为一个正方形,将其与input2 垂直合并,然后从生成的视频的每一侧裁剪一个垂直条,并水平合并这三个视频(左条、中间垂直堆叠的视频、右条)。

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex [0:v]crop=360:360:0:140,fps=30[v0],[1:v]fps=30[v1],[v0][v1]vstack=inputs=2[m],[m]crop=101:ih:0:0[l],[m]crop=101:ih:259:0[r],[l][m][r]hstack=inputs=3[v];[0:a][1:a]amix[a] -map [v] -map [a] -preset ultrafast ./stackedOutput.mp4

当我运行这个时,我得到一个错误:

[Parsed_hstack_6 @ 0x7ff5394482c0] Input 1 height 640 does not match input 0 height 1000. [Parsed_hstack_6 @ 0x7ff5394482c0] Failed to configure output pad on Parsed_hstack_6

(完整的 FFmpeg 输出 here.)

但是[m]hstack 中的Input 1)的高度不是640,而是1000。当命令独立运行时,我已经验证了这一点。

为什么 FFmpeg 无法识别 [m] 的正确高度?非常感谢任何帮助或指示!提前致谢!

【问题讨论】:

    标签: ffmpeg video-processing ffprobe video-editing


    【解决方案1】:

    用途:

    ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v]crop=360:360:0:140,fps=30[v0];[1:v]fps=30[v1];[v0][v1]vstack=inputs=2,split=3[lc][m][rc];[lc]crop=101:ih:0:0[l];[rc]crop=101:ih:259:0[r];[l][m][r]hstack=inputs=3[v];[0:a][1:a]amix[a]" -map "[v]" -map "[a]" -preset ultrafast ./stackedOutput.mp4
    

    两个问题:

    1. 您的语法不正确。同一线性链中的过滤器用逗号分隔,不同的过滤器线性链用分号分隔。见filtering introduction

    2. 您不能多次重复使用过滤器的输出。在您的命令中,[m] 已被第一个作物消耗,因此它不再可用于以下作物和 hstack。拆分过滤器可用于制作过滤器输出的多个副本。

    【讨论】:

    • 太棒了,非常感谢!我从来不知道“拆分”选项,并感谢有关逗号与分号的澄清。 ?
    猜你喜欢
    • 2016-04-20
    • 2014-07-07
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多