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

Итак, у меня есть звук длиной около 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);
    }

person Tom Jackson    schedule 30.11.2012    source источник


Ответы (2)


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

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);
person Robin Chander    schedule 30.11.2012
comment
Что, если мы передадим длину больше, чем звуковой файл - person Ali Imran; 30.11.2012
comment
ммм... что я должен ввести в FileDescriptor? - person Tom Jackson; 30.11.2012

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

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

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

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

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

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

person Thanasis M    schedule 09.01.2021