Actionscript 3: мониторинг уровня активности нескольких микрофонов не работает - PullRequest
0 голосов
/ 10 августа 2009

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

Каждый микрофон указан с анимацией активности и его именем. Я могу просто перечислить все микрофоны (используя массив Microphone.names), но мне кажется, что я могу заставить просмотрщик активности работать только для одного микрофона. Другие микрофоны обнаруживаются с активностью «-1», которая (насколько я знаю) является Flex для «присутствует, но не используется». При отключении микрофона, который показывает активность , следующий (в моем случае, линия mic-in на моей материнской плате) показывает активность «0» (он не подключен, так что это имеет смысл).

Во время тестирования у меня есть в общей сложности 3 микрофона, неподключенный встроенный порт микрофона и два подключенных микрофона.

В целях тестирования я использую таймер, который отслеживает текущую активность микрофона каждые 100 мс, а также отображается график.

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

Код

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

Основное приложение.mxml

Примечание: продолжение - это VBox. я определен перед этим фрагментом кода.

var mics:Array = Microphone.names;
for(i=0; i < mics.length; i++){
   var mic:settingsMicEntry = new assets.settingsMicEntry;
   mic.d = {name: mics[i], index: i};

   cont.addChild(mic);
}

активы / settingsMicEntry.mxml

Таймер определен перед этим фрагментом кода. SoundTransform добавлен, чтобы замолчать воспроизведение локального микрофона. Исключение этого кода, к сожалению, не решает проблему (я пробовал). дисплей является объектом MXML Canvas.

mic = Microphone.getMicrophone(d.index);
if(mic){
    // Temporary: The Microphones' visualizer
   var bar:Box = new Box();
   bar.y = 50;
   bar.height = 0;
   bar.width = 66;
   bar.setStyle("backgroundColor", 0x003300);
   display.addChild(bar);

   var tf:SoundTransform = new SoundTransform(0);
   mic.setLoopBack(true);
   mic.soundTransform = tf;

   timer = new Timer(100);
   timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void{
      var h:int = Math.floor((display.height/100)*mic.activityLevel);

      bar.height = (h>-1) ? h : 0;
      bar.y = (h>-1) ? display.height-h : display.height;

      trace('TIMER: '+h+' from '+d.name);
   });
   timer.start();
}

Я вытащу свой слух сюда, поэтому любая помощь очень ценится!

Спасибо

-Dave

Ps .: простите за беспорядок в коде!

Ответы [ 2 ]

2 голосов
/ 06 апреля 2010

Вы можете установить фиктивное соединение NetStream, используя библиотеку OSMF .

Вам нужно будет импортировать классы из проекта NetMocker (в libs / adobe - org.osmf.netmocker) и классов NetConnectionCodes и NetStreamCodes (в framework / OSMF - org.osmf.net).

0 голосов
/ 11 декабря 2009

Убедитесь, что вам нужно создать один NetStream для каждого микрофона

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