Actionscript 3 as3中的GetMirror()仅在使用setLoopBack()时有效
我想用闪光灯(as3)监控麦克风音频输入 这只是我代码的一小部分,但实际上问题就在这里Actionscript 3 as3中的GetMirror()仅在使用setLoopBack()时有效,actionscript-3,flash,audio,microphone,Actionscript 3,Flash,Audio,Microphone,我想用闪光灯(as3)监控麦克风音频输入 这只是我代码的一小部分,但实际上问题就在这里 var mic:Microphone = Microphone.getMicrophone(); mic.setLoopBack(true); addEventListener( Event.ENTER_FRAME, loop ); function loop( event:Event ):void { trace( mic.activityLevel ); } 如果我按原样使用代码,我可以跟踪
var mic:Microphone = Microphone.getMicrophone();
mic.setLoopBack(true);
addEventListener( Event.ENTER_FRAME, loop );
function loop( event:Event ):void {
trace( mic.activityLevel );
}
如果我按原样使用代码,我可以跟踪activityLevel
,并且实际上可以看到一些值。。(我想是音量的问题?)
好吧,唯一的问题是,音频也被输出到扬声器,这是我不想要的。。。(mic.setLoopBack(true);
)
但是当我尝试mic.setLoopBack(false)时代码>,flash不再要求麦克风前置任务,跟踪的活动级别保持“-1
”
那么,我可以做些什么来禁用音频环回,或者只监视来自麦克风的音频数据呢
(当我说“音频数据”时,我指的是后期BPM检测所需的所有数据……我认为这是音频的字节数组,不是吗?作为使麦克风静音的临时解决方案,您可以尝试:
var st:SoundTransform = new SoundTransform(0);
mic.soundTransform = st;
您仍然可以看到活动级别。作为使麦克风静音的临时解决方案,您可以尝试:
var st:SoundTransform = new SoundTransform(0);
mic.soundTransform = st;
您应该仍然可以看到活动级别。不使用setLoopBack()
,您只需要从麦克风收听SampleDataEvent
。请注意中标题为“检测麦克风活动”的部分,特别是本说明,其中介绍了如何收听麦克风活动:
注意:麦克风对象仅在应用程序监视麦克风时发送活动事件。因此,如果不调用setLoopBack(true)、为示例数据事件添加侦听器或将麦克风连接到NetStream对象,则不会调度任何活动事件
这应该是一个更为优化的解决方案,因为只有当麦克风检测到声音时才会发送SampleDataEvent
,而不是当前在每一帧上工作的方法。而不是使用setLoopBack()
,您只需要从麦克风中收听SampleDataEvent
。请注意中标题为“检测麦克风活动”的部分,特别是本说明,其中介绍了如何收听麦克风活动:
注意:麦克风对象仅在应用程序监视麦克风时发送活动事件。因此,如果不调用setLoopBack(true)、为示例数据事件添加侦听器或将麦克风连接到NetStream对象,则不会调度任何活动事件
这应该是一个更为优化的解决方案,因为只有当麦克风检测到声音时,SampleDataEvent
才会被调度,而不是当前在每一帧上工作的方法