2012-06-18 4 views
5

Как я могу извлечь информацию, такую ​​как частота дискретизации, скорость передачи битов и т. Д. Из файла AMR-NB. Строго говоря, мне нужна частота дискретизации или любые другие данные, которые могут изменить ее высоту или темп.Как читать и изменять данные аудиофайла amr?

Это было легко для WAV-файлов, но здесь я вынужден с форматом AMR-NB (J2ME Devices)

Я искал много на Google, но не могу получить что-нибудь на нем ...

AMR-NB фиксируется при 8 КГц? или это зависит от каждого образца?

ответ

2

Согласно формату файла AMR по адресу: http://developer.nokia.com/community/wiki/AMR_format Файлы AMR имеют 6-байтовый заголовок, а затем набор звуковых кадров, каждый из которых содержит 1 байтовый заголовок. Каждый звуковой кадр имеет длину 20 мс и имеет и частота дискретизации задается в заголовке каждого кадра. поэтому, чтобы прочитать частоту дискретизации для первого кадра, вам нужно прочитать 7-й байт в файле. Возьмите 7-й байт и сдвиньте его вправо 3 бита и замаскируйте более низкие 4 бит нового значения. В java это «((значение >> 3) & 0x0F)», где value - 1 байтовый заголовок для фрейма. Затем проверьте этот номер на таблицу ниже, чтобы определить битрейт для этого кадра. то, поскольку каждый кадр имеет длину 20 мс, вам необходимо умножить биттрейт (они дают его как kb/s, умножая это число на 1000 для получения бит в секунду) на 20 и делятся на ((8 бит на байт) * 1000 мс на second) = 8000, чтобы получить количество байтов для пропуска следующего заголовка кадра. Если вы хотите изменить содержимое фрейма, просто скопируйте кадры в новый файл, но замените новый кадр на старый. Для этого подходит временный файл. Я скопировал таблицу битрейта из исходной страницы ниже для справки.

0 - AMR 4,75 - Зашифровывает на 4.75kbit/с

1 - AMR 5,15 - Зашифровывает на 5.15kbit/с

2 - AMR-5.9 - Кодирование на 5.9kbit/с

3 - AMR 6.7 - Зашифровывает на 6.7kbit/с

4 - AMR-7.4 - Кодирование на 7.4kbit/с

5 - AMR 7,95 - Зашифровывает на 7.95kbit/с

6 - AMR 10,2 - Зашифровывает на 10.2kbit/с

7 - AMR 12.2 - Зашифровывает на 12.2kbit/с