估计 mp3 压缩因子 (NAudio.Lame)

Estimate mp3 compression factor (NAudio.Lame)

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

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

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

我需要一种粗略估计压缩因子的方法。

输出大小预测至多是近似值。在各种模式(ABR、CBR、VBR)中,只有 CBR(恒定比特率)具有预测输出大小。 ABR(自适应比特率)大部分时间都很接近,但在某些情况下可能与预测有很大不同。 VBR 为 quality-based,无法真正预测。有关这一切的更多信息 here.

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

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

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

其余设置会产生不同级别的 VBR。 table here shows you the relationship between the numbers (V0 to V9) and the approximate output bit rate. LAMEPreset.V2 for instance produces roughly 190 Kbps output. The table also shows some of the named presets - STANDARD is the same as V2, etc. As noted in the source comments (see the source) 命名预设在 LAME 中已弃用,我只是没有抽出时间将它们标记为这样。

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