如何计算ffmpeg输出文件的大小?

时间:2011-09-25 15:06:02

标签: ffmpeg filesize

我正在使用ffmpeg将家庭视频转换为DVD格式,并希望在进行转换之前计算输出文件大小。

我的输入文件的比特率为7700 kbps,长度为114秒。音频比特率是256 kbit(每秒?)输入文件是77MB。为了获得这些信息,我跑了:

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

因此理论上,输入文件应该(大致)文件大小为:

((7700/8)* 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. 为什么我的输入文件没有“匹配”计算,但输出文件呢?还有其他一些我不考虑的变量吗?

  4. 计算文件大小的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您必须记住的是,要考虑的比特率测量值很少:

  • 最大比特率 - 视频中操作最密集的片段的比特率
  • 平均(目标)比特率 - 使用公式精确计算的比特率

  • 速率控制(编码器对视频复杂性变化的反应速度)

有损视频编码的工作原理是消除人眼难以看到的功能。这意味着,慢速运动,一个说话头,可以比旋转的全屏变焦/全景图进一步压缩。

为什么重要?由于某种原因,标准确实指定了“最大”比特率 - 这是玩家读取和解码符合标准的视频所需的速度。 DVD的速度约为9000kbps。

最后,由于它是有损压缩,因此可以指定平均比特率。如果您需要在有限的空间或带宽内容纳内容(可能允许缓冲更强烈的片段),则使用此选项。

例如,您可以拥有最大比特率为7000kbps且平均比特率为5500kbps的视频。最后,速率控制是用于确定“空间”编码器应分配给不同片段的程度的算法。如果您进行多次传递编码,则会重复使用之前传递的信息 - 提高质量和比特率分布。