2010-12-20 31 views

回答

68

ffmpeg提供此功能。所有你需要做的是運行像

ffmpeg -i <inputfilename> -s 640x480 -b 512k -vcodec mpeg1video -acodec copy <outputfilename> 

成纔對於您需要更改-b-b:v的ffmpeg的新版本:

ffmpeg -i <inputfilename> -s 640x480 -b:v 512k -vcodec mpeg1video -acodec copy <outputfilename> 

輸入視頻文件轉換爲視頻大小爲640 x 480和512千比特/秒的比特率使用MPEG 1視頻編解碼器,並且僅複製原始音頻流。當然,您可以插入任何您需要的值,並隨着大小和比特率的變化來實現您正在尋找的質量/尺寸折中。在documentation

運行ffmpeg -formatsffmpeg -codecs中也有大量的其他選項,描述了所有可用格式和編解碼器的列表。如果您不需要針對最終輸出的特定編解碼器,則可以使用像H.264這樣的先進編解碼器,以最小的質量損失實現更好的壓縮比。

+2

非常感謝你讓我節日快樂:) – Vignesh 2010-12-20 18:12:20

+7

-b必須-b:v對於VID比特率 – 2012-10-09 19:11:11

+4

@MrAH,感謝您的更新。自從我發佈該界面後,界面似乎發生了變化。它曾經是視頻比特率的'-b',音頻比特率是'-ab',但它已經變成'-b:[流說明符]'。 – 2012-10-09 19:55:23

20

除了使用H.264編解碼器選擇固定比特率,您還可以選擇不同的預設,如https://trac.ffmpeg.org/wiki/x264EncodingGuide中所述。我還發現Video encoder comparison at KeyJ's blogarchived version)是一個有趣的閱讀,它將H.264與Theora等進行了比較。

以下是我嘗試過的各種選項的比較。錄製的視頻最初尺寸爲673M,採用RecordMyScreen在iPad上拍攝。它的持續時間約爲20分鐘,分辨率爲1024x768(其中一半視頻爲空白,所以我裁剪到768x768)。爲了減小尺寸,我將分辨率降低到480x480。沒有音頻。

結果,取相同的1024×768作爲鹼(和應用裁剪,縮放和a filter):

  • 由於沒有特殊的選項:95M(編碼時間:1m19s)。
  • 僅添加-b 512k,尺寸降至77M(編碼時間:1m17s)。
  • 由於只有-preset veryslow(沒有-b),它成爲70M(編碼時間:6m14s)
  • 與這兩個-b 512k-preset veryslow,尺寸變爲77M(100K不僅僅是-b 512k小)。
  • 隨着-preset veryslow -crf 28,我得到了一個39M的文件,它需要5m47s(與我沒有視覺質量差異)。

N = 1,所以把結果與一粒鹽,並執行自己的測試。

25

如果你想保持相同的屏幕尺寸,你可以考慮使用CRF因素:https://trac.ffmpeg.org/wiki/Encode/H.264

這裏是爲我工作的命令:(在Mac上,你需要添加-strict -2能夠使用AAC音頻編解碼器。

ffmpeg -i input.mp4 -c:v libx264 -crf 24 -b:v 1M -c:a aac output.mp4