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

相關內容