我正在使用 ffmpeg 垂直堆叠两个视频。它们的大小可能不同,所以我需要将它们缩放到相同的大小。我找到了以下命令。
第一个适用于不同的尺寸(但不会缩放到合适的尺寸):
ffmpeg -i input1 -i input2 -filter_complex '[0:v]pad=iw:ih*2[int];[int][1:v]overlay=0:H/2[vid]' -map [vid] -c:v libx264 -crf 23 -preset veryfast output
Run Code Online (Sandbox Code Playgroud)
如果视频具有相同的宽度和相同的像素格式,则第二个有效:
ffmpeg -i input1 -i input2 -filter_complex vstack output
Run Code Online (Sandbox Code Playgroud)
如何在复杂过滤器参数中获取第一个输入的宽度,以便第二个输入可以缩放到相同的宽度?这样做的命令是什么?我更喜欢 vstack 过滤器,因为它应该比 pad 和 overlay 的组合更快。
Gya*_*yan 10
您需要使用scale2ref过滤器。
ffmpeg -i input1 -i input2
-filter_complex '[1][0]scale2ref[2nd][ref];[ref][2nd]vstack'
-map [vid] -c:v libx264 -crf 23 -preset veryfast output
Run Code Online (Sandbox Code Playgroud)
请注意,这仅在两个视频的纵横比相同时才有效。如果没有,并且您知道第二个视频的纵横比,请使用[1][0]scale2ref=iw:iw*(H/W)[2nd][ref]where (H/W) 应替换为第二个视频的高宽比。
通过构建 ffmpeg 的最新 git 版本,可以使用简化版本,
ffmpeg -i input1 -i input2
-filter_complex '[1][0]scale2ref=oh*mdar:ih[2nd][ref];[ref][2nd]vstack'
-map [vid] -c:v libx264 -crf 23 -preset veryfast output
Run Code Online (Sandbox Code Playgroud)
这将自动保留第二个输入的纵横比。
| 归档时间: |
|
| 查看次数: |
8647 次 |
| 最近记录: |