FFMPEG 和输入视频 - 有没有办法动态检索高度和宽度?

FFMPEG 和输入视频 - 有没有办法动态检索高度和宽度?

我想要做的是设置一个脚本,检查高度与宽度的比率,然后确定要缩放哪个尺寸以适合高清 (1920x1080)。使用标准 FFMPEG 命令可以做到这一点吗?

如果结果尺寸分别大于 1080 或 1920,我还需要裁剪高度或宽度。

我已经读过了 使用 ffmpeg 将不同宽度的视频调整为固定高度并保持宽高比

所以如果您事先知道源视频的哪个尺寸较大,我就知道如何缩放。

答案1

我将使用 ffprobe 读取现有视频的宽度和高度,并在 bash 中进行计算以找出哪个是限制因素。

(您提到您想要设置一个“脚本”,所以我希望这意味着 bash 是可以接受的。)

#!/bin/bash

W=$( ffprobe input.mp4 -show_streams |& grep width )
W=${W#width=}

H=$( ffprobe input.mp4 -show_streams |& grep height )
H=${H#height=}

# Target a 1920x1080 output video. 
TARGETW=1920
TARGETH=1080

# I'm not familiar with the resizing parameters to ffmpeg, 
# so I'm writing the below code based on the question you linked to. 

if [ $(( $W * $TARGETH )) -gt $(( $H * $TARGETW" )) ]; then
    # The width is larger, use that
    SCALEPARAM="scale=$TARGETW:-1"
else
    # The height is larger, use that
    SCALEPARAM="scale=-1:$TARGETH"
fi

ffmpeg -i input.mp4 -vf $SCALEPARAM output.mp4

相关内容