flex4 中获取Microphone,抑制回声和使用Speex编码音频的方法,该方法经过本人测试可用。
一、如果你不关心请直接把代码复制,如果想要了解细节的请继续往下看
private function getMicrophone(codec:String):Microphone { var mic:Microphone = null; mic = Microphone.getEnhancedMicrophone(); if (mic) { var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions(); options.mode = MicrophoneEnhancedMode.FULL_DUPLEX; options.autoGain = false; options.echoPath = 128; options.nonLinearProcessing = true; microphone.enhancedOptions=options; mic.setUseEchoSuppression(true); } else { mic = Microphone.getMicrophone(); } if (mic == null) { trace("No microphone! <o>"); } else { mic.addEventListener(StatusEvent.STATUS, onMicStatusEvent); mic.setLoopBack(false); mic.setSilenceLevel(0, 20000); mic.gain = 60; if (codec == "SPEEX") { mic.encodeQuality = 8; mic.codec = SoundCodec.SPEEX; mic.framesPerPacket = 2; mic.rate = 16; trace("Using SPEEX wideband codec"); } else { mic.codec = SoundCodec.NELLYMOSER; mic.rate = 8; trace("Using Nellymoser codec"); } } return mic; } protected function onMicStatusEvent(event:StatusEvent):void { trace("New microphone status event"); //trace(ObjectUtil.toString(event)); switch (event.code) { case "Microphone.Muted": break; case "Microphone.Unmuted": break; default: break; } }二、针对上面的参数进行说明.
1、Microphone提供了 getEnhancedMicrophone 方法(最好是升级到flex4.6以上,flex3肯定是没有这个api的),能够返回一个“增强麦克风",ADOBE声称可以用来创建不用头戴式耳机麦克风的音视频应用程序,用这个效果比之前的Microphone.getMicrophone()都要很多改善,包括获取音频和音频编码,还有抑制回声等.
2、mic.setLoopBack(false); 设置为false 就是禁止将麦克风捕获的音频传送到本地扬声器.如果不设置为false,你会听到自己说话的声音的。默认值是true。
3、mic.setUseEchoSuppression(true);指定是否使用音频编解码器的回音抑制功能。除非用户已经在 Flash Player 的“麦克风设置”面板中选择了“降低回音”,否则默认值为
false
。三、参考资料文献,
1、Adobe Flex 4 Beta 语言参考 http://www.fising.cn/docs/AS3_Reference/flash/media/Microphone.html
2、参照bigbluebutton远程教育系统的源码 https://github.com/bigbluebutton/bigbluebutton/blob/master/clients/flash/common-library/src/org/bigbluebutton/lib/voice/services/VoiceStreamManager.as
flex4 中获取Microphone,抑制回声和使用Speex编码音频的方法
时间: 2025-01-21 03:03:40
flex4 中获取Microphone,抑制回声和使用Speex编码音频的方法的相关文章
WordPress中获取所使用的模板的页面ID的简单方法_php实例
什么是模板呢?默认情况 WordPress是使用主题目录下page.php来作为模板显示页面的,但是有时候我们需要不同的模板来显示页面,比如登录.注册和投稿页面等,这些页面跟普通的页面是有所区别,这时候WordPress提供了页面模板让开发者可以自定义WordPress页面外观甚至功能.页面模板php文件的匹配 WordPress中是通过自定义栏目来记录页面所使用的模板的,自定义栏目名称:_wp_page_template,值为模板的文件名: 如果是默认模板page.php,那么 _wp_pag
解析Android游戏中获取电话状态进行游戏暂停或继续的解决方法
对智能手机有所了解的朋友都知道其中一个应用广泛的手机操作系统Android 开源手机操作系统.那么在这一系统中想要实现通话的监听功能的话,我们应当如何操作呢?在这里就为大家详细介绍了Android监听通话的相关实现方法. 开发应用程序的时候,我们希望能够监听电话的呼入,以便执行暂停音乐播放器等操作,当电话结束之后,再次恢复播放.在Android平台可以通过TelephonyManager和PhoneStateListener来完成此任务. TelephonyManager作为一个Service接
.NET中获取电脑名,IP地址
ip地址 在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其它好的方法,可以回复一起整理: 1. 在ASP.NET中专用属性: 获取服务器电脑名: Page.Server.ManchineName 获取用户信息: Page.User 获取客户端电脑名:Page.Request.UserHostName 获取客户端电脑IP: Page.Request.UserHostAddress 2. 在网络编程中的通用方法: 获取当前电脑名: static Sy
contentprovider-从“canonical_addresses”表中获取地址
问题描述 从"canonical_addresses"表中获取地址 在android程序中,我从下面的 uri 中获取 recipient_id . content://mms-sms/conversations?simple=true 现在我想使用 recipient id 从"canonical_addresses"表中获取地址.但是如何查询"canonical_addresses"表呢? 解决方案 Canonical 表中有两列,_id 和
c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了?
问题描述 c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了? 自己做写了一个管理数据源的DBManager,构想中从数据源里面获取的Connection使用完之后执行close()方法,然后把Connection对象闲置回连接池中. 但是测试出来的结果好像每次执行close()之后connection就销毁了. 代码如下: DBManager.java package ben.DBUtils; import java.sql.Connection; impo
android-如何从电话的联系表中获取email?
问题描述 如何从电话的联系表中获取email? 我想从手机的联系列表中获取不同的电子邮件地址,比如工作,家庭住址等.我用的下面的代码,但是发现返回的结果是0.怎么回事啊? Cursor email = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI null Data.CONTACT_ID + "" ="" + id null null); while (email.moveToNext())
ios-IOS中获取到数组,每一次获取到的不一样,把这些数组拼接成一个数组
问题描述 IOS中获取到数组,每一次获取到的不一样,把这些数组拼接成一个数组 OC获取数据,循环放入数组中,让这些数据拼接成数组,这些数据也可能是一个数组,把数组拼接成一个数组 解决方案 //构造不同数组 NSArray *array1 = @[@"1",@"2",@"3",@"4"]; NSArray *array2 = @[@"5",@"6",@"7",@&quo
Linux系统中获取路径的文件名的方法
这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下 代码如下: [root@dabu.info ]#basename /root/aaa/bbb/dabu.txt 显示: 代码如下: dabu.txt #获取路径的文件名 shell脚本中如何获得脚本文件所在路径? 方法一: 代码如下: [root@dabu.info ]#DIR=$(cd "$(dirname "$0")"; pwd) [root@dabu.info
在Java中获取系统属性
在Java中获取系统属性 大庆油田有限责任公司 苏洋 01-5-22 上午 11:12:51 -------------------------------------------------------------------------------- Java语言以其面向对象.跨平台.可移植性好.安全性高等优点,受到众多编程人员的青睐,越来越多的人将其作为应用软件开发语言的首选. 在Java应用程序运行时,特别是需要在跨平台工作环境下运行时,需要确定操作系统类型.用户JDK版本和用户工作目