<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

简介: flex4 中获取Microphone,抑制回声和使用Speex编码音频的方法,该方法经过本人测试可用。 一、如果你不关心请直接把代码复制,如果想要了解细节的请继续往下看 private function ...

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

3、 Flex客户端设置speex编码时Red5对音频数据的处理以及将speex解码





目录
相关文章
|
Web App开发 数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
可伸缩系统的架构经验 Feb 27th, 2013 | Comments 最近,阅读了Will Larson的文章Introduction to Architecting System for Scale,感觉很有价值。
2456 0
|
Web App开发 前端开发 算法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
基于大数据的精准营销与应用场景 2015年08月11日 大数据 大数据营销时代来临营销学领域过去半个多世纪的发展让我们见证了从“以产品为中心”到“以客户为中心”的转变。
1055 0
|
SQL Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
     如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
876 0
|
Web App开发 前端开发
|
数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
CentOS 6.5安装配置ldap 时间:2015-07-14 00:54来源:blog.51cto.com 作者:“ly36843运维” 博客 举报 点击:274次 一.
1009 0
|
Web App开发 前端开发 大数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一、概述   多维数据模型是最流行的数据仓库的数据模型,多维数据模型最典型的数据模式包括星型模式、雪花模式和事实星座模式,本文以实例方式展示三者的模式和区别。
853 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一个典型的星型模式包括一个大型的事实表和一组逻辑上围绕这个事实表的维度表。  事实表是星型模型的核心,事实表由主键和度量数据两部分组成。
618 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Runnable:一般指该线程正在执行状态中,该线程占用了资源,正在处理某个请求,例如有可能在对某个文件操作,有可能进行数据类型等转换。
706 0
|
Web App开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
                                                                                序列化对单例的破坏 本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏。
1013 0