Измените звук в режиме реального времени с помощью SampleDataEvent для аудио в NetStream - PullRequest
5 голосов
/ 27 января 2011

Я транслирую аудио, используя NetConnection и NetStream.Я знаю, что вы можете изменять образцы данных в режиме реального времени с помощью объекта Sound, однако я не могу найти SampleDataEvent для воспроизведения звука с объектом NetStream.Есть ли способ передать звук из объекта NetStream в объект Sound и вместо этого изменить звук в этом объекте?

Редактировать: Я готов совершить любые безумные хакитак что любое решение в порядке!

Ответы [ 2 ]

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

В зависимости от качества, которое вы ищете, вы можете пожертвовать его моносигналом с низкой скоростью передачи битов, вы можете передать его в потоковом режиме, чтобы получить его как URLStream на стороне клиента, а затем передать данные этого URLStream в SampleDataEvent пустого объекта Sound, постепенно во время выполнения.

Дополнительная работа будет в основном выполняться на стороне сервера: распаковка MP3-файла в поток плавающих чисел Waveform (поток одноканального сигнала [mono] или их смесь в сочетании с mono), а затем нажатие это к вашему клиентскому приложению.

Когда URLStream загружается, добавьте загруженные байты в ByteArray, доступный в SampleDataEvent Sound (также дайте ему некоторое время буфера для загрузки достаточных данных формы сигнала). Для каждого моносэмпла, считанного из URLStream, вы должны дважды записать одно и то же значение в объект SampleDataEvent.data (один раз в левый канал, один раз в правый).

Все это говорит о том, что понижение WAV-подобного звукового потока до моно может быть недостаточным для сокращения полосы пропускания и охвата широкой целевой аудитории. Возможно, лучшим вариантом будет поиск библиотеки OGG для AS3 (которая должна существовать), и она, безусловно, должна поддерживать декодирование частично загруженных потоков.

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

вам нужен доступ к байт-коду звука, если вы используете netstream, это возможно только путем передачи его (запрашивая его) NetStream.send() / NetConnection.call() в дополнение к передаваемым данныминаче вам понадобится что-то вроде прямого URL для Sound или URLStream

...