最近在做一个直播的项目,里面需要用到用as程序发布音视频。发布音频的时候需要看到麦克风音量输入的动画,因此用activityLevel属性做了个动画,但是发现本地音响能听到自己麦克风的声音,研究了许久终于找到了解决办法,解决办法如以下代码:
package { import flash.display.Sprite; import flash.media.Microphone; import flash.utils.Timer; import flash.events.TimerEvent; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; public class MicrophoneExample extends Sprite { private var _mic:Microphone; private var _timer:Timer; private var _ncon:NetConnection; private var _ns:NetStream; public function MicrophoneExample() { //获取麦克风对象 _mic = Microphone.getMicrophone(); if(_mic != null) { _mic.setLoopBack(false);//设置此属性为true是为了获取麦克风的音量(activityLevel),activityLevel属性一般用来制作检测麦克风的动画。 } //时刻输出麦克风音量计时器 _timer = new Timer(100); _timer.addEventListener(TimerEvent.TIMER, timerHandler); _timer.start(); //创建空连接为了解决本地能听到自己麦克风的声音 _ncon = new NetConnection(); _ncon.client = this; _ncon.addEventListener(NetStatusEvent.NET_STATUS, nconStatusHandler); _ncon.connect(null); } private function timerHandler(e:TimerEvent):void { if(_mic != null) { trace("当前麦克风音量:" + _mic.activityLevel); } } private function nconStatusHandler(e:NetStatusEvent):void { if(e.info.code == "NetConnection.Connect.Success") { _ns = new NetStream(_ncon); var mic:Microphone = Microphone.getMicrophone(); if(mic != null) { mic.setLoopBack(false); _ns.attachAudio(mic); } } } } }