FFmpeg 无法识别 hstack 命令中的正确输入高度

标签 ffmpeg video-processing ffprobe video-editing

hstack FFmpeg 命令的问题困扰着我。

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

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 -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。拆分过滤器可用于制作过滤器输出的多个副本。

关于FFmpeg 无法识别 hstack 命令中的正确输入高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66754875/

相关文章:

iphone - Skype 防抖视频录制背后的技术是什么?

video - 使用 ffmpeg 或 ffprobe 获取视频的像素位深度

python - 使用 pydub 访问 ffprobe

android - 如何在像 Vigo Video Hypstar 这样的摄像机上实时预览录像机的变化

php - 在路径 : on laravel 5. 6 处找不到文件

amazon-s3 - 如何将 h265 视频从 ffmpeg 流式传输到 amazon s3?

android - FFmpeg android 执行

python - 带有变量的python子进程check_output中的错误

opencv - 处理抢劫案夜间闭路电视录像?

ffmpeg - 寻找类似于 ffprobe 的程序来查询图像?