2011-09-25 131 views
4

我使用ffmpeg將家庭視頻轉換爲DVD格式,並希望在轉換之前計算輸出文件的大小。如何計算ffmpeg輸出文件大小?

我的輸入文件的比特率爲7700 kbps,長度爲114秒。音頻比特率是256 kbit(每秒?)輸入文件是77 MB。爲了得到這個信息,我跑:

mplayer -vo null -ao null -frames 0 -identify input.MOD

所以從理論上講,輸入文件應該有(大致)的文件大小:

((八分之七千七)* 114)/ 1024

也就是說,(7700/8)是千字節/秒,乘以114秒,然後轉換爲兆字節。這給了我107MB,遠遠超過了我的77.因此我對他的公式持懷疑態度。

這就是說,轉換視頻後:

ffmpeg -i input.MOD -y -target ntsc-dvd -sameq -aspect 4:3 output.mpg 

的數字似乎更有意義。比特率是9000 kbps,應用上面的公式,我得到125MB,而我的實際輸出文件大小爲126MB。

於是,兩個問題:

  1. 如何因素的音頻比特率到這個計算?它是添加劑(視頻文件大小+音頻文件大小)?

  2. DVD是否總是有9000千比特/秒的速度?這是DVD的定義嗎?或者可能會根據我的輸入視頻的視頻質量而改變? 「-target ntsc-dvd」對我的視頻有什麼保證?

  3. 爲什麼我的輸入文件不能「匹配」計算,但輸出文件呢?有沒有其他的變量我沒有考慮?

什麼是計算文件大小的正確方法?

回答

3

你必須記住什麼,是有一些不同的比特率的測量來考慮:

  • 最大比特率 - 視頻
  • 平均的大部分動作密集片段的比特率(目標)比特率 - 使用公式

  • 速度控制精確計算比特率(如何迅速反應編碼器在視頻的複雜變化)

有損視頻編碼通過消除難以讓人眼看到的功能。這意味着,一個說話的頭像慢動作可以被壓縮得比旋轉的全屏縮放/全景更遠。

它爲什麼重要?由於某種原因,標準確定了「最大」比特率 - 這是播放器讀取和解碼符合標準的視頻所需的速度。 DVD大約有9000kbps。

最後,由於是有損壓縮,所以可以指定平均比特率。如果您需要在有限的空間或帶寬內適合內容(可能允許緩衝更強烈的碎片),則會使用此選項。

例如,您可以製作一個視頻,最大碼率爲7000kbps,平均碼率爲5500kbps。最後,速率控制是用於決定多少「空間」編碼器應該分配給不同片段的算法。如果您進行多遍編碼,您將重複使用先前傳遞的信息 - 提高質量和比特率分佈。

+0

這是否意味着我可以使用最大比特率 - 在這種情況下,對於DVD,9000kbps - 作爲編碼後文件大小可能有多大的上限? – poundifdef

+1

是的。這也意味着如果您需要更緊密地壓縮它,您可以指定更嚴格的平均比特率。標準DVD可以在任何地方從1150kbps到9000kbps,這意味着從1h到8h在單面單層磁盤上。 – qdot