Могу ли я добавить и / или заменить аудиоисточники в гобое без перезапуска аудиопотока? - PullRequest
1 голос
/ 07 января 2020

Мне нужно извлекать аудио активы на лету и загружать их во временную шкалу для воспроизведения.

Мне также нужно рендерить файлы различной длины, но у меня есть идея, которую я собираюсь Завтра попробую, что я думаю, если у кого-нибудь есть какие-нибудь советы, которые были бы хороши.

Я играл с гобой RhythmGame кодом, который является самым близким из гобой семплов к тому, что я пытаюсь сделать. Но это не радует, когда я пытаюсь добавить или изменить источники звука на лету.

Может ли это сделать гобой или мне нужно будет включать и выключать аудиопоток для каждого нового набора файлов?

1 Ответ

0 голосов
/ 07 января 2020

То, что вы предлагаете, определенно можно сделать без перезапуска аудиопотока. Аудиопоток будет просто запрашивать данные PCM при каждом обратном вызове. Работа вашего приложения состоит в том, чтобы предоставлять эти данные PCM.

В семпле RhythmGame сжатые аудиофайлы декодируются в память с использованием объекта DataSource. Затем объект Player оборачивает этот DataSource для управления воспроизведением с помощью методов set.

Если вам нужно воспроизвести аудиоданные из файлов на временной шкале, я бы создал новый класс временной шкалы, который копирует соответствующие разделы аудиоданных из DataSource s и последовательно помещает их в буфер. Тогда ваш аудиопоток может читать непосредственно из этого буфера при каждом обратном вызове.

...