Я знаю, что это старый вопрос, но только что столкнулся с проблемой.
Существует ошибка с кодеком SPEEX, как указано здесь: Ошибка преобразования звука микрофона и кодека SPEEX
Эта ошибка в основном говорит о том, что использование кодека SPEEX игнорирует преобразование звука. В качестве обходного пути для этого я настроил функцию переключения, чтобы переключать настройки для микрофона для отображения активности перед подключением звука к NetStream и для устранения ошибки.
Примечание. Объект Microphone отправляет события Activity только тогда, когда ваше приложение отслеживает микрофон. Таким образом, если вы не вызываете setLoopBack (true), добавляете прослушиватель для примеров событий данных или присоединяете микрофон к объекту NetStream, то события активности не отправляются. AS3 Docs
Настройка микрофона: (m - переменная экземпляра)
m = Microphone.getMicrophone();
m.setSilenceLevel(0);
m.gain = 75;
m.setUseEchoSuppression(true);
m.rate = 16; //rate only applies to NELLYMOSER Codec - but 16 kHz matches SPEEX default setting
m.setLoopBack(true); //necessary to get activity
m.codec = SoundCodec.NELLYMOSER; //this is default
m.soundTransform = new SoundTransform(0); //mute so you don't get crazy echo!
Переключение для мониторинга активности «в автономном режиме» и «онлайн»
protected function audioMeterToggle(switch:String) {
if(switch == "offline") {
m.setLoopBack(true);
m.soundTransform.volume = 0;
m.codec = SoundCodec.NELLYMOSER;
} else {
m.setLoopBack(false);
m.soundTransform.volume = 1;
m.codec = SoundCodec.SPEEX;
}
}
Переключение кодеков помогает уменьшить пропускную способность.
Надеюсь, это поможет кому-то сэкономить время.