我需要一种方法来根据以下参数执行文件未来大小的估计:
我使用NAudio.Lame包。 C#,。Net
int GetBytesAmountMp3(int framesAmount, WaveFormat format, LAMEPreset quality)
{
var compressionFactor = 0.3;???
return framesAmount * format.BlockAlign * ?;
}
我需要一种粗略估计compressionFactor的方法。
答案 0 :(得分:1)
输出大小预测最好是近似值。在各种模式(ABR,CBR,VBR)中,仅CBR(恒定比特率)具有预测输出大小。 ABR(自适应比特率)在大多数时间都接近,但在某些情况下可能与预测完全不同。 VBR是基于质量的,无法真正预测。关于所有这些here,还有更多信息。
对于LAMEPreset
设置(直接从LAME标头翻译),ABR_*
设置很简单。每个都是一个数字的标签,与输出中的平均千比特每秒(Kbps)相关。那么这些的输出比是:
double ratio = ((double)quality * 128) / format.averageBytesPerSecond;
(其中quality * 128
是每秒平均字节数)
其余设置会在各个级别生成VBR。表here显示了数字(V0
到V9
)与近似输出比特率之间的关系。例如LAMEPreset.V2
产生大约190 Kbps的输出。该表还显示了一些命名预设 - STANDARD
与V2
相同,等等。如源注释中所述(请参阅source),在LAME中不推荐使用命名预设,我只是没有开始标记它们。
有关每个预设使用的设置的完整列表,请查看LAME Source,特别是apply_preset
方法(第320行)。