ffmpeg縮放視訊尺寸
FFmpeg有一個非常強大的 ofollow,noindex" target="_blank">縮放過濾器 ,可用於完成各種任務。其中一些列在這裡。更多資訊可以在 官方文件中 找到。
在所有示例中,起始影象(input.jpg)將是這一個(535⨉346畫素):
簡單重新縮放
如果您只需將視訊大小調整為特定大小(例如320⨉240),則可以使用最基本形式的縮放濾鏡:
ffmpeg -i input.avi -vf scale = 320:240 output.avi
同樣適用於影象:
ffmpeg -i input.jpg -vf scale = 320:240 output_320x240.png
生成的影象如下所示:
如您所見,縱橫比與原始影象不同,因此影象顯示為拉伸。
保持寬高比
如果我們想保持縱橫比,我們只需要指定一個元件(寬度或高度),並將另一個元件設定為-1。例如,這個命令列:
ffmpeg -i input.jpg -vf scale = 320:-1 output_320.png
將輸出影象的寬度設定為320畫素,並根據輸入影象的寬高比計算輸出影象的高度。生成的影象的尺寸為320×207畫素。
一些編解碼器要求寬度和高度的大小為 n 的倍數。您可以通過將寬度或高度設定為 -n 來實現此目的:
ffmpeg -i input.jpg -vf scale = 320:-2 output_320.png
輸出現在為320⨉206畫素。
使用變數
還有一些有用的變數可用於代替數字,以指定輸出影象的寬度和高度。
例如,如果要以這樣的方式拉伸影象以僅使輸入影象的寬度加倍,則可以使用類似這樣的內容( iw =輸入寬度, ih =輸入高度):
ffmpeg -i input.jpg -vf scale = iw * 2:ih input_double_width.png
輸出影象如下所示:
如果你想要圖片大小的一半,只需乘以.5或除以2:
ffmpeg -i input.jpg -vf“scale = iw * .5:ih * .5”input_half_size.png ffmpeg -i input.jpg -vf“scale = iw / 2:ih / 2”input_half_size.png
避免升級
有時您想要縮放影象,但如果尺寸太小,請避免放大影象。這可以使用 min 表示式完成:
ffmpeg -i input.jpg -vf“scale ='min(320,iw)':'min(240,ih)'”input_not_upscaled.png
輸出寬度將被評估為320的最小值和輸入寬度。如果您的輸入影象寬度僅為240畫素,則 min 函式的結果將為240 – 這將是您的目標值。
適合矩形/靜態大小的播放器
有時您需要縮放輸入影象以使其適合指定的矩形,例如在合併來自不同來源的材料時。
您可以使用 force_original_aspect_ratio 選項實現此 目的 。它有兩個可能的值:
- 減少 :如果需要,輸出視訊尺寸將自動減小。
- 增加 :如果需要,輸出視訊尺寸將自動增加。
這允許您強制影象適合320×240框,使用正確的寬高比縮小它:
ffmpeg -i input.jpg -vf scale = w = 320:h = 240:force_original_aspect_ratio =減少output_320.png
這產生了我們之前看到的320×207影象。
您可能有其他約束,例如新增黑條(柱狀和letterboxing)以在縮放到某個矩形時填充剩餘空間。您還可以使用 pad 過濾器新增黑色邊框:
ffmpeg -i input.jpg -vf“scale = 320:240:force_original_aspect_ratio = decrease,pad = 320:240:(ow-iw)/ 2:(oh-ih)/ 2”output_320_padding.png
更多的例子可以發現 在這個超級使用者答案 。
指定縮放演算法
您可以使用 -sws_flags 選項指定用於調整大小的演算法。例如,要使用雙線性而不是預設的雙三次縮放:
ffmpeg -i test.tif -vf scale = 504:376 -sws_flags bilinear out.bmp
有關詳細資訊,請參閱 縮放器文件 。要設定多個標誌,您可以將它們與 + 號組合。例如:
-sws_flags lanczos + full_chroma_inp
您還可以直接在 比例 過濾器中指定選項,例如:
-vf scale = 1920x1080:flags = lanczos