Нет активности микрофона с setLoopBack, установленным в false - AS3 - PullRequest
10 голосов
/ 30 мая 2010

Попытка выяснить, почему setloopback должен быть установлен в true для обнаружения активности микрофона.

Проблема в эхо-обратной связи при использовании MacBook со встроенным микрофоном.

Если у кого-то есть идеи по этому поводу, сообщите мне.

Прямо сейчас я экспериментирую с переключением усиления в зависимости от активности, имитирующей подавление эха. Хотя не оптимально.

@ lessfame

Ответы [ 2 ]

13 голосов
/ 17 февраля 2011

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

Так что это легко сделать:

var st:SoundTransform = new SoundTransform(0);
mic.soundTransform = st;

Я знаю, что вы задавали этот вопрос почти год назад, но подумали, что задам его всем, кто ищет ответ.
Cheers,
Будет

4 голосов
/ 07 марта 2013

Я знаю, что это старый вопрос, но только что столкнулся с проблемой.

Существует ошибка с кодеком 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;
    }
}

Переключение кодеков помогает уменьшить пропускную способность.

Надеюсь, это поможет кому-то сэкономить время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...