估计 mp3 压缩因子 (NAudio.Lame)
Estimate mp3 compression factor (NAudio.Lame)
我需要一种方法来根据以下参数对文件的未来大小进行估计:
- 每个样本位
- 频道数
- 采样率
- 样本数
- mp3 质量 (LAMEPreset)
我使用 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 行)。
我需要一种方法来根据以下参数对文件的未来大小进行估计:
- 每个样本位
- 频道数
- 采样率
- 样本数
- mp3 质量 (LAMEPreset)
我使用 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 行)。