Как читать и изменять данные аудиофайла amr?

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

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

Я много искал в гугле, но ничего не нашел...

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


person user1448559    schedule 18.06.2012    source источник


Ответы (1)


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

0 — AMR 4,75 — кодирует со скоростью 4,75 кбит/с

1 — AMR 5.15 — кодирует со скоростью 5,15 кбит/с

2 — AMR 5.9 — кодирует со скоростью 5,9 кбит/с

3 — AMR 6.7 — кодирует со скоростью 6,7 кбит/с

4 — AMR 7.4 — кодирует со скоростью 7,4 кбит/с

5 — AMR 7.95 — кодирует со скоростью 7,95 кбит/с

6 — AMR 10.2 — кодирует со скоростью 10,2 кбит/с

7 — AMR 12.2 — кодирует со скоростью 12,2 кбит/с

person S E    schedule 15.11.2012