Comunidad de diseño web y desarrollo en internet online

Micrófono sin LoopBack

Citar            
MensajeEscrito el 11 Oct 2008 09:49 am
Buenas!!

Estoy haciendo pruebas con el micro y tengo un problema.
Si ejecuto el código que pongo más abajo, que lo he sacado directamente de la ayuda de flash, me funciona todo bien.

Pero si quito lo de: mic.setLoopBack(true);
Porque no quiero escucharme a mi mismo... ya no me sale la ventana que me pide permiso para usar el micro y no pasa nada. No salta el evento ACTIVITY ni nada.

Según he leído en la ayuda nada más hacer Microphone.getMicrophone(); debería saltar la ventana que pide permiso, pero a mi no me salta y supongo que por eso después el micro no va.

¿Alguien sabe como hacerlo sin el LoopBack?

He probado también hacer:
mic.setLoopBack(true);
mic.setLoopBack(false);
Se queda desactivado en cuanto pongo el LooBack a false.
También lo he probado poner a false la primera vez que recibe algún sonido y lo que hace es que ya se queda siempre activo.


código del ejemplo:

import flash,events.ActivityEvent;
import flash,events.StatusEvent;
import flash.media.Microphone;

var deviceArray:Array = Microphone.names;
trace("Available sound input devices:");
for (var i:int = 0; i < deviceArray.length; i++)
{
trace(" " + deviceArray);
}

var mic:Microphone = Microphone.getMicrophone();
mic.gain = 60;
mic.rate = 11;
mic.setUseEchoSuppression(true);
mic.setLoopBack(true);
mic.setSilenceLevel(5, 1000);

mic.addEventListener(ActivityEvent.ACTIVITY, this.onMicActivity);
mic.addEventListener(StatusEvent.STATUS, this.onMicStatus);

var micDetails:String = "Sound input device name: " + mic.name + '\n';
micDetails += "Gain: " + mic.gain + '\n';
micDetails += "Rate: " + mic.rate + " kHz" + '\n';
micDetails += "Muted: " + mic.muted + '\n';
micDetails += "Silence level: " + mic.silenceLevel + '\n';
micDetails += "Silence timeout: " + mic.silenceTimeout + '\n';
micDetails += "Echo suppression: " + mic.useEchoSuppression + '\n';
trace(micDetails);

function onMicActivity(event:ActivityEvent):void
{
trace("activating=" + event.activating + ", activityLevel=" +
mic.activityLevel);
}

function onMicStatus(event:StatusEvent):void
{
trace("status: level=" + event.level + ", code=" + event.code);
}

Por mi-go

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Feb 2010 04:21 pm
chee a mi me pasaba lo mismo y me puse a ver,, por lo que vi el LoopBack,,, pone lo que el mic tiene en los altavoces,, es decir,, caputra el microfono y lo envia a los parlantes y toma ese sonido que sale de los parlantes como sonido de microfono y asi sucesivamente,, eso creo que yo que es asi,,, asi que busque y vi que con los SoundTransform,, podes "jugar" con los sonidos del microfono,, entonces,,, la idea es usar LoopBack en true,, y usar un SoundTransform para que el sonido del mic sea 0,, o sea no tenga volumen entonces asi si funciona,, por lo menos ami,, me anda y no sale nada de los alta voces,,, aca te dejo el codigo, espero que te sirva:

esta es la Clase Microfono.as

package {
import flash.display.*;
import flash.events.*;
import flash.media.Microphone;
import flash.media.SoundTransform;
import flash.system.Security;
import flash.system.SecurityPanel;

public class Microfono extends Sprite {
//Creo una instancia de Microphone
var mic:Microphone
//Creo un Array para guardar los volumenes
var volumenes:Array = new Array();
var sndTran:SoundTransform = new SoundTransform(0,0);

public function Microfono() {
mic= Microphone.getMicrophone();
//Muestor el panel de seguridad de Flash. Para poder utilizar el micro hay que
//permitir a flash el acceso
Security.showSettings(SecurityPanel.PRIVACY);
//Redirige el sonido del micro al altavoz
mic.setLoopBack(true);
mic.setUseEchoSuppression(true);
mic.soundTransform = sndTran;
addEventListener(Event.ENTER_FRAME, dibujarVolumen);
}

private function dibujarVolumen(e:Event){
//En esta función voy almacenando los volumenes en un Array y luego pinto una raya
//para cada volumen guardado
volumenes.push(mic.activityLevel);
if(volumenes.length > 400){
volumenes.splice(0,1)
}
graphics.clear();
graphics.lineStyle(1, 0x000000);
graphics.moveTo(0,100)
for(var j = 0; j < volumenes.length; j++){
graphics.lineTo(j,100+volumenes[j]);
graphics.lineTo(j,100-volumenes[j]);
graphics.moveTo(j,100)
}
graphics.lineTo(volumenes.length,100);
graphics.lineTo(0,100);
}

}

}

como ves,, es sacada de otro lado,, grafica el sonido del microfono como ondas de audio,,proba,, sacale el sndTran y subi el volumen de la PC,, vas a ver que se escucha lo que decis,, dejale el sndTran y vas a ver que asi lo pongas en un amplificador =P,, no va a salir nada de la PC,, lo que concluyo es que flash solo toma el sonido si loopBack esta en TRUE,, o sea que no es solamente para ponerlo en los altavoces,,sino debe cumplir otra funcion,,,espero que te sirva

Por uchiha_dario

15 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.