2016-01-20 38 views
0

我需要以下参数的基础上执行文件的未来大小估计的方式:每个样品估计MP3压缩因子(NAudio.Lame)

  • 通道数
  • 采样率
  • 样品计数
  • MP3质量(LAMEPreset)

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

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

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

回答

1

输出尺寸预测最好是近似的。在各种模式(ABR,CBR,VBR)中,只有CBR(恒定比特率)具有预测输出大小。 ABR(自适应比特率)大部分时间都接近,但在某些情况下可能与预测大不相同。 VBR是基于质量的,不能真正预测。有关于这一切的更多信息here

对于LAMEPreset设置(直接从LAME标头中翻译)ABR_*设置很简单。每个数字都是与输出中每秒平均千比特数(Kbps)相关的数字的标签。这些输出比则是:

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

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

的设置的其余部分产生VBR各级。表here显示了数字(V0V9)与近似输出比特率之间的关系。例如,LAMEPreset.V2产生大约190Kbps的输出。该表还显示了一些已命名的预设 - STANDARDV2等相同。如源注释中所述(请参阅source),已命名的预设在LAME中已弃用,我只是没有考虑将它们标记为。

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