Обратный аудио файл в Android - PullRequest
6 голосов
/ 12 января 2011

Я нахожусь на очень легком этапе разработки этого приложения, но, изучая его, я уже столкнулся с проблемой.Мне нужно иметь возможность воспроизводить аудиофайл задом наперед (вы знаете, как показывать скрытые сообщения;)).У меня нет опыта работы со звуком на Android, и я не знаю, возможно ли это вообще.

Я нашел здесь вопрос, который решает проблему в Java ( Нажмите здесь, чтобы задать вопрос )

Но здесь используется библиотека javax.sound, которую Android не поддерживает.Нужна ли мне эта библиотека для решения этой проблемы или есть другой способ реверсирования аудиофайла?

1 Ответ

6 голосов
/ 12 января 2011

Типичный файл WAV состоит из 44-байтового заголовка, за которым следуют фактические значения выборки.Размер «кадра» зависит от свойств файла WAV: стереофонический файл с 16-битной выборкой будет иметь размер кадра 4 байта (два байта для левой выборки и два байта для правой выборки).).

Таким образом, в коде вы должны создать второй WAV-файл, создав байтовый массив того же общего размера, что и исходный.Вы копируете 44-байтовый заголовок из оригинала в копию, а затем перебираете исходные кадры, начиная с последнего и продолжая до первого.Вы копируете каждый кадр в обратное место в массиве копирования (то есть последний исходный кадр копируется в массив копирования сразу после заголовка; второй-последний кадр копируется после первого кадра и т. Д.).Затем просто воспроизведите перевернутый файл.

Так что вам не нужна библиотека javax.sound для этого - вам просто нужно иметь возможность копировать и манипулировать байтами.К вашему сведению, не все файлы WAV являются «каноническими», как это (канонический означает 44-байтовый заголовок плюс примерные значения и ничего больше).Формат WAV на самом деле является форматом RIFF, а это означает, что теоретически вам необходимо выполнить более сложное извлечение значений выборки.На практике (особенно, если вы сами создаете файлы WAV), вы обычно можете воспользоваться гораздо более простым подходом, как я описал здесь.

ПРИМЕЧАНИЕ.более сложная задача, поскольку данные сэмпла не сохраняются в виде сэмплов в файле MP3.Если вы используете MP3, один из способов обратить их обратно - преобразовать их в WAV, а затем перевернуть файл WAV.

...