2016-01-20 12 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 (Adaptive Bit Rate) близок к большей части времени, но в некоторых случаях может сильно отличаться от прогноза. VBR основан на качестве и не может быть предсказан. Есть немного больше информации обо всем этом here.

Для настроек LAMEPreset (которые переводятся непосредственно из заголовков LAME) настройки ABR_* просты. Каждый из них является меткой для числа, которое относится к средним килобитам в секунду (Kbps) на выходе. Отношение выход для них является то:

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

(где quality * 128 обычное байт в секунду)

Остальные настройки производят VBR на различных уровнях. В таблице here показана взаимосвязь между номерами (V0 и V9) и примерной выходной скоростью передачи. LAMEPreset.V2, например, производит примерно 190 Кбит/с. В таблице также показаны некоторые из названных пресетов - STANDARD - это то же самое, что и V2 и т. Д. Как отмечено в исходных комментариях (см. source), указанные пресеты устарели в LAME, я просто не стал их отмечать как таковые ,

Полный список настроек, которые использует каждый пресет, смотрите на LAME Source, в частности на метод apply_preset (строка 320).

 Смежные вопросы

  • Нет связанных вопросов^_^