• as3 获取MicrophoneExample的activityLevel值而不产生本地回声(麦克风的声音不传送到本地扬声器)解决方法


    最近在做一个直播的项目,里面需要用到用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);
                    }
                }
            }
    
        }
        
    }
  • 相关阅读:
    更改EBSserver域名/IP
    iOS Dev (60) 怎样实现 UITextView 中的 placeHolder
    程序猿的量化交易之路(29)--Cointrader之Tick实体(16)
    美团面试中被问到的问题汇总
    汇报措辞:你懂得如何向领导汇报吗(审阅、审批、审阅、批示、查阅)?
    九月份总结
    Android 编程之第三方开发 MaoZhuaWeiBo微博开发演示样例-1
    OLE操作Excel编译错误处理
    在 VS2008 下操作 Excel 的方法总结
    vs2008 ole excel
  • 原文地址:https://www.cnblogs.com/chenhaib/p/3025912.html
Copyright © 2020-2023  润新知