【问题标题】:How to calculate ffmpeg output file size?如何计算 ffmpeg 输出文件的大小?
【发布时间】:2011-11-24 16:06:07
【问题描述】:

我正在使用 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. 为什么我的输入文件不“匹配”计算,但输出文件匹配?还有其他一些我没有考虑的变量吗?

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

【问题讨论】:

    标签: ffmpeg filesize


    【解决方案1】:

    您必须牢记的是,需要考虑的不同比特率测量方法很少:

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

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

    有损视频编码的工作原理是消除人眼难以看到的特征。这意味着,一个慢动作,一个说话的头,可以比旋转的全屏缩放/全景压缩得更远。

    为什么重要?标准确实指定了“最大”比特率是有原因的——这是播放器读取和解码符合标准的视频所需的速度。 DVD 的速度约为 9000kbps。

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

    例如,您可以拥有最大比特率 7000kbps 和平均比特率 5500kbps 的视频。最后,速率控制是用于决定编码器应该分配多少“空间”给不同片段的算法。如果您进行多通道编码,您将重复使用之前通道中的这些信息 - 提高质量和比特率分布。

    【讨论】:

    • 这是否意味着我可以使用最大比特率(在这种情况下,对于 DVD,9000kbps)作为编码后文件大小的上限?
    • 是的。这也意味着如果您需要更紧密地压缩它,您可以指定更严格的平均比特率。标准 DVD 的速度可以从 1150kbps 到 9000kbps,这意味着在单面单层磁盘上从 1h 到 8h。
    猜你喜欢
    • 2022-11-22
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多