Вы можете получить доступ к основным аудиоданным с помощью Sound.extract ().Вы также можете динамически передавать семплы на объект Sound, добавив к нему прослушиватель SampleDataEvent и воспроизведя его без предоставления mp3.
Таким образом, по сути, процесс обычно выглядит следующим образом:
- Загрузите mp3 в объект Sound.
- Извлеките некоторые или все его образцы данных в ByteArray, чтобы вы могли проанализировать / изменить его.В зависимости от того, что вам нужно сделать, вы можете просто извлечь достаточно за раз, чтобы опередить вывод на желаемую величину.
- Создайте второй объект Sound для вывода - не предоставляйте этому объектуmp3.Добавьте слушателя для SampleDataEvents и затем воспроизведите его.Он будет отправлять SampleDataEvents регулярно, так как ему нужно больше звука (требуется 2048, 4096 или 8192 семплов за раз, 44100 - это одна секунда).Каждый раз, когда вы получаете SampleDataEvent, вы заполняете его свойство ByteArray с данными сэмплами, которые хотите воспроизвести следующим.
Хотя я не совсем понимаю, что именно вы пытаетесь сделать, оноЗвучит так, будто вы хотите, чтобы процесс извлечения продолжался на пару секунд раньше процесса воспроизведения - извлечение в буфер ByteArray, выполнение анализа, а затем копирование семплов из начала этого буфера BA каждый раз, когда выходной звук запрашивает больше семплов.