flex4 中获取Microphone,抑制回声和使用Speex编码音频的方法

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

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解码





目录
相关文章
|
存储 缓存 负载均衡
【2022持续更新】大数据最全知识点整理-HBase篇
【2022持续更新】大数据最全知识点整理-HBase篇
1835 0
【2022持续更新】大数据最全知识点整理-HBase篇
|
9月前
|
前端开发 UED 开发者
React 19 Actions:表单处理从未如此优雅
React 19 Actions:表单处理从未如此优雅
443 84
|
前端开发 搜索推荐 开发者
【Web 前端】什么是语义化标签?
【4月更文挑战第22天】【Web 前端】什么是语义化标签?
|
云安全 安全 前端开发
《白帽子讲Web安全 第2版》正式出版!
历时近2年,《白帽子讲Web安全》第2版终于要跟读者见面了。在撰写这本书的过程中,我不禁回想起自己入门网络安全的经历,我深知一份好的指引能让初学者少走很多弯路。我把自己这些年对Web安全的理解写在这本书中,希望对网络安全的初学者能有所帮助。
|
负载均衡 算法 Java
SpringCloud OpenFeign
SpringCloud OpenFeign
456 0
|
传感器 Cloud Native 物联网
Micronaut在物联网中的应用探索:轻盈架构赋能万物互联新时代
【9月更文挑战第6天】Micronaut是一个现代、轻量级的Java框架,以其高效、易用及对云原生环境的支持,在物联网开发中展现出独特优势。它通过AOT编译技术优化应用,减少内存消耗,适合资源受限的设备。Micronaut支持反应式编程和HTTP/2,提升并发处理能力和网络传输效率。本文通过一个温度传感器数据收集服务的例子,展示了如何利用Micronaut简化物联网应用开发,使其成为该领域的理想选择。
346 3
|
人工智能 监控 安全
安全和鲁棒性
安全和鲁棒性
447 0
|
机器学习/深度学习 人工智能 自动驾驶
IJCV 亚洲之夜,机器之心与CV领域顶级期刊首位华人主编汤晓鸥聊了聊
CVPR(计算机视觉与模式识别会议)是计算机视觉领域的三大顶级会议之一,它的举办让七月的火奴鲁鲁更加热情似火。
1591 0
IJCV 亚洲之夜,机器之心与CV领域顶级期刊首位华人主编汤晓鸥聊了聊
|
C语言
C语言中通过INT_MAX判断两个非负整数相加是否溢出
C语言中通过INT_MAX判断两个非负整数相加是否溢出
452 0

热门文章

最新文章