Android не может воспроизвести какой-нибудь WAV-файл с Soundpool? - PullRequest
2 голосов
/ 21 февраля 2011

Некоторые файлы .wav, которые я не могу воспроизвести с помощью Soundpool. Я ничего не слышу. Некоторые файлы воспроизводятся просто отлично. Почему?

код

    AudioManager mgr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
    soundPool.play(soundPoolMap.get(sound), streamVolume, streamVolume, 1, 0, 1f);

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

У меня было много проблем со звуковым пулом и форматами файлов. Прочитайте мой оригинальный вопрос , это может быть полезно для вас.

В основном я перешел на использование MediaPlayer и у меня больше не было проблем.

1 голос
/ 06 июня 2016

Мой вывод об использовании файлов ресурсов .WAV с LG Optimus F3 под управлением Jellybean 4.1.2 заключается в том, что его библиотеке MediaPlayer не удается декодировать:

  1. Файлы с битрейтом более 256 Кбит / с и
  2. Файлы с длительностью менее 0,075 секунд

Симптом в logcat в любом случае:

V/SoundPool﹕ load: fd=49, offset=123932, length=536, priority=1
V/SoundPool﹕ create sampleID=3, fd=50, offset=536, length=123932
V/SoundPool﹕ doLoad: loading sample sampleID=3
V/SoundPool﹕ Start decode
V/MediaPlayer﹕ decode(50, 123932, 536)
V/SoundPool﹕ close(50)
E/SoundPool﹕ Unable to load sample: (null)

Скореечем генерация фатального исключения, вышеупомянутая ошибка заставляет SoundPool позже пытаться использовать эти «нулевые» звуки, что, в свою очередь, может привести к блокировке телефона и / или потере кадров. Снижение битрейта и использование эффекта Audacity «добавить тишину» для увеличения времени моих звуковых файлов решило эту проблему.

В отличие от приведенного выше симптома,успешная загрузка SoundPool выглядит в logcat следующим образом:

V/SoundPool﹕ load: fd=55, offset=765700, length=3534, priority=1
V/SoundPool﹕ create sampleID=7, fd=56, offset=3534, length=765700
V/SoundPool﹕ doLoad: loading sample sampleID=7
V/SoundPool﹕ Start decode
V/MediaPlayer﹕ decode(56, 765700, 3534)
V/SoundPool﹕ close(56)
V/SoundPool﹕ pointer = 0x5f464000, size = 6976, sampleRate = 8000, numChannels = 2

Если вы загружаете несколько звуков (что и является целью SoundPool), запишите значения sampleID, так как они сообщают, какой звуковой файл не удалось загрузить,первый загружен был sampleID=1 и так далее.Это помогло мне отличить «плохие» от «хороших» .WAV файлов.

Обратите внимание, что у меня не была эта проблема на нескольких других платформах от LG и Samsung под управлениемAndroid Kitkat, который успешно загружает битрейт и короткие звуковые файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...