Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Увеличить продолжительность звукового пула

Автор вопроса: Tom JacksonОтветов: 2

Итак, у меня есть звук длиной около 6,5 секунд, и когда я воспроизвожу его с помощью звукового пула, он воспроизводится всего около 5 секунд ... Я пытался использовать медиаплеер, но он слишком медленный для такого рода приложений. Код саундпула:

    SoundPool sp;
    OnCreate
    sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
dub1s = sp.load(this, R.raw.dub1, 1);
Button
    if (dub1s != 0)
            sp.play(dub1s, 1, 1, 0, 0, 1);
    }

androidjavasoundpool

Ответы

Ответ 1 · рейтинг 2 · Robin Chander

Попробуйте использовать следующую функцию загрузки.

public int load (FileDescriptor fd, long offset, long length, int priority)

Третий аргумент - длина звука. Скажем, вы читаете файл как

FileInputStream in = new FileInputStream(new File(soundFile));

load() должен выглядеть так

sp.load(in.getFD(), start, length, 0);

Ответ 2 · Thanasis M

Лучше поздно, чем никогда, так что на будущее: Soundpool имеет ограничение на размер буфера 1 МБ. за трек. Но это ограничение относится не к размеру файла, а к распакованным необработанным данным PCM.

SoundPool распаковывает загруженный звук в данные PCM, чтобы он был готов к немедленному воспроизведению без задержки декодирования. Если аудио, которое вы загружаете, сильно сжато, например MP3, то оно может сильно раздуться.

Вы можете использовать Soundpool для звуков длиннее 5 секунд (я воспроизводил звуки около 30 секунд). Но вам может понадобиться изменить ваши файлы. Вы можете попробовать преобразовать свой звуковой файл в ogg, кажется, он дает лучшие результаты с Soundpool.

Также внесите следующие изменения:

  • Измените частоту дискретизации вашего звукового файла на 16000 Гц.
  • Измените свой аудиоканал на моно вместо стерео.
  • Убедитесь, что размер вашего файла после этих процессов меньше 1 МБ.

Для этих изменений вы можете использовать онлайн-конвертер, например этот one.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы