Android-приложение не будет воспроизводить wav с кодировкой GSM 6.10?

Я разрабатываю приложение для Android, которое получает массив байтов, представляющий собой сжатый файл .wav стандарта GSM 6.10. Вот что я пробовал:

Воспроизведение с помощью AudioTrack не сработало, потому что AudioTrack не поддерживает сжатые wav-файлы стандарта GSM 6.10.

Сохранение byte[] и использование MediaPlayer для его воспроизведения не сработало. Это просто произвело статику.

Последняя идея, которую я пробовал, не работает для этого приложения, а была всего лишь попыткой выяснить, где проблема. Перед запуском приложения я сохранил wav на SD-карту. Затем я попытался воспроизвести этот уже сохраненный файл с помощью MediaPlayer. Это сработало. Затем я попытался прочитать этот же сохраненный файл в приложении, а затем снова сохранить его на SD-карту с другим именем (например, tempFile.wav). Когда я попытался воспроизвести новый сохраненный файл, все, что я получил, было статическим. Это наводит меня на мысль, что проблема может заключаться в сохранении byte[] как .wav.

Итак, мне нужно либо преобразовать сжатый формат GSM 6.10 в формат PCM, либо правильно сохранить его в формате wav на устройстве. Я новичок в разработке Android, поэтому любая помощь будет принята с благодарностью!


person Alex    schedule 05.07.2011    source источник


Ответы (1)


Похоже, решение этой проблемы — Android SoundPool. Сохранив byte[] wav на SD-карту и воспроизведя его с помощью SoundPool, все заработало нормально.

person Alex    schedule 07.07.2011
comment
Можете ли вы опубликовать пример? у меня такая же проблема сейчас. Я сохраняю байтовый буфер файла .wav, но ни MediaPlayer, ни SoundPool не хотят его загружать! - person Alvaro Luis Bustamante; 23.05.2012