2012-03-27 3 views
3

Мы создаем приложение RTMFP для голосового чата с Cumulus. В то время как базовая передача голоса работает довольно просто с использованием NetStreams, у нас есть одна большая проблема:Речевой чат с управляемым голосовым звуком с RTMFP

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

Однако это именно то, что нам нужно. Мы не хотим передавать нормальный микрофон, записанный звук, но сначала сделаем его, затем отправьте, а затем воспроизведите. Или сначала отправьте его, затем подайте его, а затем воспроизведите. Но кажется, что вся аудиозапись, кодировка speex, декодирование speex и воспроизведение звука полностью завершены в классе NetStream.

Единственные способы достичь того, что мы хотим (и все они полностью удалить NetStream) кажутся:

  1. Отправить сырой стан аудиоданных. Это действительно работает, но, конечно, много данных для отправки и, скорее всего, не будет работать достаточно быстро за пределами локального тестирования локальной сети.

  2. Pitch audio data, convert to ogg/mp3 с использованием существующих кодеров для флэш-памяти, отправки, декодирования ogg/mp3 и воспроизведения. Но это будет означать кодирование каждого образца пакета, который получен от микрофона, добавления материала заголовка и т. Д. Таким образом, это, вероятно, даже не принесет такой большой пользы по сравнению с исходными аудиоданными.

    2.1. Это было бы действительно хорошим способом, если бы кодер/декодер Speex для вспышки. Но по иронии судьбы, есть не что иное, как встроенный (который используется для кодирования/декодирования аудио в NetStreams), который не может быть явно использован. Да, спасибо за то, что не предложили его, Adobe ...

  3. Отправьте данные на сервер Cumulus, отправьте (и, возможно, конвертируйте) туда и отправьте получателю. Это, вероятно, даже не будет намного быстрее, чем 1. а также выбросить точное преимущество RTMFP, P2P связи.

Есть ли решение этой проблемы, которая будет работать лучше, чем те, которые я перечислил здесь, возможно, способ фактически манипулировать данными микрофона, прежде чем он передается NetStream?

ответ

3

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

Я уже разработал декодер/кодировщик ogg vorbis во flash, используя Alchemy, он потреблял всегда меньше 10% процессора! Это возможно.

Если вы предпочитаете формат speex, я думаю, что с постоянным усилием можно получить то же самое, создавая код speex с алхимией.

Если я могу дать вам более далее, свяжитесь со мной, чтобы [email protected] ;-)

+0

Эй, спасибо за ответ! К сожалению, мы уже нашли некоторые кодеры/декодеры, но заметили, что даже с этим мы не смогли достичь скорости «нормального» голосового чата. И учитывая, что у наших пользователей не будет нашего хорошего оборудования, и поэтому будет еще медленнее, чем наше тестирование, мы просто полностью пропустили эту идею. Или до тех пор, пока Adobe не предложит функциональные возможности для управления голосовыми данными до отправки/использования пользовательских кодеров вместо их Speex и т. Д. – TheSHEEEP