Мы создаем приложение для голосового чата RTMFP с Cumulus .Хотя базовая передача голоса работает с помощью NetStreams довольно просто, у нас есть одна большая проблема:
Похоже, не существует способа манипулирования данными микрофона, которые отправляет NetStream, а также способа манипулирования даннымипрослушивающий NetStream получает до его воспроизведения.
Однако это именно то, что нам нужно.Мы не хотим передавать звук, записанный обычным микрофоном, но сначала передайте его, затем отправьте, затем воспроизведите.Или сначала пошлите это, затем передайте это, затем играйте это.Но кажется, что вся запись звука, кодирование speex, декодирование speex и воспроизведение аудио полностью заключены в класс NetStream.
Единственные способы достичь того, чего мы хотим (и все они полностью удаляют NetStream), по-видимому,be:
Отправка необработанных звуковых данных.Это работает, но, конечно, много данных для отправки и, вероятно, не будет работать достаточно быстро вне нашего тестирования локальной сети.
Передача аудиоданных, преобразование в ogg / mp3 с использованиемсуществующие кодеры для flash, отправки, декодирования ogg / mp3 и воспроизведения.Но это будет означать кодирование каждого образца пакета, полученного с микрофона, добавление заголовка и т. Д. Так что это, вероятно, даже не принесет такой большой выгоды по сравнению с необработанными аудиоданными.
2.1.На самом деле это было бы неплохо, если бы был флэш-кодировщик Speex .Но по иронии судьбы, нет ничего, кроме встроенного (который используется для кодирования / декодирования аудио в NetStreams), который не может быть явно использован.Да, большое спасибо за то, что не предложили это, Adobe ...
Отправьте данные на сервер Cumulus, отправьте (и, вероятно, конвертируйте) туда и отправьте получателю.Это, вероятно, даже не будет намного быстрее, чем 1., а также отбросит точную выгоду RTMFP, P2P-коммуникации.
Есть ли какое-либо решение этой проблемы, которое будет работать лучше, чемте, которые я перечислил здесь, возможно, способ фактически манипулировать данными микрофона перед их передачей в NetStream?