0

我需要一种方法来根据以下参数估计文件的未来大小:

  • 每个样本位
  • 频道数
  • 采样率
  • 样本数
  • mp3 质量(LAMEPreset)

我使用 NAudio.Lame 包。C#、.Net

int GetBytesAmountMp3(int framesAmount, WaveFormat format, LAMEPreset quality)
{
     var compressionFactor = 0.3;???
     return framesAmount * format.BlockAlign * ?;
}

我需要一种粗略估计compressionFactor 的方法。

4

1 回答 1

1

输出大小预测充其量是近似的。在各种模式(ABR、CBR、VBR)中,只有 CBR(恒定比特率)具有预测输出大小。ABR(自适应比特率)在大多数情况下都很接近,但在某些情况下可能与预测大不相同。VBR 是基于质量的,无法真正预测。这里有更多关于这一切的信息。

对于LAMEPreset设置(直接从 LAME 标头转换而来),ABR_*设置很简单。每个都是与输出中的平均每秒千位 (Kbps) 相关的数字标签。这些的输出比率是:

double ratio = ((double)quality * 128) / format.averageBytesPerSecond;

(其中quality * 128是每秒平均字节数)

其余设置会产生不同级别的 VBR。此处的表格显示了数字 ( V0to V9) 与近似输出比特率之间的关系。 LAMEPreset.V2例如产生大约 190 Kbps 的输出。该表还显示了一些命名预设 -STANDARD与 相同V2,等等。如源注释中所述(请参阅源代码),命名预设在 LAME 中已弃用,我只是没有将它们标记为这样。

有关每个预设使用的设置的完整列表,请查看LAME Source,特别是apply_preset方法(第 320 行)。

于 2016-01-22T02:56:47.443 回答