Отсутствие активности микрофона при установке setLoopBack на false - AS3
Попытка выяснить, почему setloopback необходимо установить на true
для обнаружения активности микрофона.
Проблема заключается в обратной связи эха при использовании macbook со встроенным микрофоном.
Если у кого-нибудь есть идеи об этом, дайте мне знать.
Сейчас я экспериментирую с переключением усиления, в зависимости от активности, для имитации сокращения эха. Не оптимально, хотя.
@lessfame
Ответы
Ответ 1
Я искал аналогичное решение для этого, тогда я обнаружил, что вы можете применить звуковое преобразование к микрофону для управления громкостью выведенного объема микрофонного ввода.
Итак, это можно сделать легко:
var st:SoundTransform = new SoundTransform(0);
mic.soundTransform = st;
Я знаю, что ты задал этот вопрос почти год назад, но подумал, что я поместил его для любого, кто ищет ответ.
Cheers,
Будет ли
Ответ 2
Я знаю, что это старый вопрос, но просто столкнулся с проблемой.
Существует ошибка с кодеком SPEEX, как указано здесь: Звук микрофонаТрансформация и ошибка кодека SPEEX
Эта ошибка в основном говорит о том, что использование кодека SPEEX игнорирует звуковое преобразование. В качестве работы для этого я настраиваю функцию переключения, чтобы переключать настройки для микрофона, чтобы отображать активность до того, как звук подключен к NetStream и обходится с ошибкой.
Примечание. Объект микрофона только отправляет события активности, когда ваше приложение контролирует микрофон. Таким образом, если вы не вызываете setLoopBack (true), добавьте слушатель для выборочных данных событий или присоедините микрофон к объекту NetStream, после чего события активности не будут отправлены. Документы AS3
Настройка микрофона: (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;
}
}
Коммутационные кодеки помогают сократить пропускную способность.
Надеюсь, что это поможет кому-то сэкономить.