題 如何使用FFmpeg調整視頻大小以使其更小


是否可以通過FFmpeg調整視頻大小以使其縮小?

我的原始視頻尺寸為1024x576,現在我想將視頻大小調整為720x480以滿足要求。

我怎樣才能做到這一點?


78
2017-11-30 06:38


起源


ffmpeg 可能會棄用,請參閱 這裡 和 這裡 - nutty about natty
@nuttyaboutnatty“已棄用”消息僅適用於舊的,死的,假的“ffmpeg“來自Libav的叉子,不是 ffmpeg 來自FFmpeg,於15.04返回。 - LordNeckbeard


答案:


最基本的例子是:

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

運用 scale 過濾 將提供更多靈活性:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

-1 將告訴ffmpeg自動選擇與提供的寬度相關的正確高度,以保持縱橫比。 -1 如果您提供給定的高度,也可以用於寬度。


使用時縮放的一個缺點 libx264 是這個編碼器需要偶數值和比例可能會自動選擇一個奇數值導致錯誤: width or height not divisible by 2。您可以告訴scale為給定高度選擇偶數值(在本例中為720):

scale="trunc(oh*a/2)*2:720"

...或給定寬度(本例中為1280):

scale="1280:trunc(ow/a/2)*2"

請注意,您的ffmpeg構建可能會抱怨無法識別 -c 要么 -filter 選項。它也可能不支持 scale。在這種情況下,你應該使用更新的ffmpeg,你 可以下載 作為靜態構建,或 自己編譯


129
2017-11-30 06:53



我試過了 ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv (在ffmpeg版本0.8.6-6:0.8.6-0ubuntu0.12.10.1)但是得到了錯誤 Unrecognized option 'filter:v' - doug65536
在經過幾次ffmpeg的手冊頁後,我發現了而不是 -filter:v,該選項似乎已更改為 -vf。 - doug65536
@ doug65536 -filter:v 和 -vf 都很好。您使用的Ubuntu版本已損壞且過時 - 它不是真正的FFmpeg ffmpeg,但由Libav(FFmpeg fork)提供的二進製文件名相同。 - slhck
@MightyPork可能你的ffmpeg構建已經過時 - 出現了什麼問題?無論如何,這對我有幫助(有 ffmpeg version 2.4.10)減少一些大型視頻的大小,以釋放一些空間 - 謝謝! - Wilf
'-c'是-codec的縮寫,':a'指定音頻流,'copy'指定複製編解碼器,它複製流(在這種情況下是音頻)而不重新編碼。基本上音頻流將通過。當您只操作視頻流時,這很常見。 - jimhark


我使用以下命令對視頻和圖像進行重新縮放。對於固定的寬度和高度 -

ffmpeg -i input.avi -vf scale="720:480" output.avi

如果你想保留縱橫比,只需將高度設為-1,它將根據寬度自動調整大小 -

ffmpeg -i input.avi -vf scale="720:-1" output.avi

如果要根據輸入大小Eg進行縮放。讓我們說減少寬度/高度你可以做的一半 -

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

注意 :

iw : input width
ih : input height

靜態構建可以從 - 下載 - https://johnvansickle.com/ffmpeg/

文件: https://ffmpeg.org/ffmpeg.html#filter_005foption


3
2018-02-24 06:57