В соответствии с форматом файла 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