注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

金融IT小鸿的博客

致力于金融IT行业

 
 
 

日志

 
 
关于我

Organize the world's information I care about and share it with other people! Change the Financial Industry through Information Technology! 爱互联网,爱金融, 爱分享,爱运动, 也爱偶尔胡思乱想! 我是金融IT小鸿

网易考拉推荐

Flash中怎样在禁掉麦克风声音回放的情况下获得麦克风的activityLevel  

2011-01-03 20:06:25|  分类: AS & Flex |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        今天发现了FLash麦克风类中存在一个奇怪的问题:当通过设置Microphone的setLoopBack为false禁掉麦克风声音回放功能后,获得的麦克风activityLevel始终为-1。也就是说当禁掉麦克风回放后是无法获得麦克风检测音量的。

        这个在ActionScript 3的API中是没有提到的,只说“如果麦克风可用,但却因为尚未调用Microphone.getMicrophone 而未被使用,则此属性设置为 -1。”后来我做了个测试,就是如果将Microphone的setLoopBack设置为false,在加载Flash插件的时候是不会弹出“隐私”对话框,让用户选择是否允许访问麦克风。说明如果将setLoopBack设置为false时,相当于没有获得麦克风。

        那如果我想使用麦克风的activityLevel属性的值,又不想听到麦克风回放该怎么办呢?(因为回放有延时,所以在说话的时候总是听到自己的延迟声音,感觉很难受)

        随后Google了一下,找到了解决方案。关键是使用Microphone的soundTransform属性,具体代码如下:

        var microphone = Microphone.getMicrophone();  
microphone.setLoopBack(true);
        var transform:SoundTransform = microphone.soundTransform;
transform.volume = 0;
microphone.soundTransform = transform;

其实就是让麦克风回放,只是把回放的音量设置为0;

注:这种解决方法对麦克风音频的编码方式是有要求的,麦克风对象的codec属性必须为SoundCodec.NELLYMOSER时,才有效。不过麦克风对象的codec属性默认就是SoundCodec.NELLYMOSER,所以也就没有设。除了SoundCodec.NELLYMOSER编码外,从Flash Player 10开始支持Speex 编解码器。如果设置麦克风的音频编码方式为SoundCodec.SPEEX就无法使用此方案解决问题。
  评论这张
 
阅读(1742)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017