已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
声音在Flash Player中回声消除的最佳做法原文查看必备知识需要先进的知识,在ActionScript中,Adobe Flash播放器和Adobe Flash Builder或Adobe Flash Professional中的音频。用户级别中级所需产品l Flash Builder中(下载试用版)l Flash播放器Adobe Flash Player 已经成为非常受欢迎的音频和视频的播放 ;事实上,大多数的互联网视频是使用 Flash Player 来查看的。Flash 播放器提供这两个一个丰富的观看体验和高效率、 高质量的视频播放,如纳入技术先进的音频和视频压缩方案 (H.264、 MP3 和 AAC 编解码器)、 多才多艺的媒体功能 (多比特率流、 播放列表、 寻求,和其他功能) 和有效回放机制 (硬件解码和直接渲染)。在桌面计算机上它无处不在的渗透和其在移动设备上的日益普及,已大量使用 Flash Player 的实时音频和视频通信感兴趣。视频广播相比,然而,实时通信具有完全不同的要求。最重要的要求包括:通信的终结点之间的最小化滞后时间高质量、 有弹性错误语音编解码器回声取消耳机免费体验虽然 Flash Player 自 2002 年以来已有音频/视频功能和已用于 web 会议解决方案,例如Adobe 连接和大的蓝色按钮,在作为例子,真正改变游戏规则的事件发生与版本的 Flash 播放器 10 2008 年推出的低延迟传输协议和新的声音编解码器,使 Flash Player 非常适合用于实时通信。在本文中,我将简要地描述实时通信和 Flash Player 如何满足这些需要的要求。我还会引入新的 ActionScript API 的使用增强的音频、 为您提供最佳做法和限制,并给你看一个示例应用程序。实时通信的要求2002 年,Flash 播放器 6 介绍了实时消息传递协议(RTMP) 和Nellymoser声音编解码器。Flash 通信服务器 MX 的帮助下,一个能开发实时通信应用程序操作两个或多个 Flash Player 终结点之间。RTMP 基于传输控制协议(TCP),它提供可靠的数据传输的价位的无界时滞 这意味着它可以是任意的高。无错误的传输接受的方式是通过重复丢失的数据包。如果数据包不迷路,延迟可能会非常高,因为丢失的数据包需要得到本处。Nellymoser 是一种专有的编解码器,提供低压缩效率和有限的行业的支持。由于 RTMP,音频邮件将永远不会丢失,但可能会因网络或服务器问题排队。打击滞后时间积累,所谓追赶的机制被受雇于 Flash Player,其中音频播放出比其自然采样速率更快。这种渐进延迟减少引入只有最小的音频失真不改变音调。虽然 RTMP 非常适合广播和网络广播的应用程序 (那里没有严格的延迟要求),它具有有限适用性的实时通信,数百个毫秒的延迟,可能导致谈话无法使用。在实时通信中,它是更重要的是尽量减少延误除了继续保持无差错传输。大多数的音频和视频编码技术 (如H.264视频编解码器和Speex语音编解码器) 的设计与网络传输错误的想法,可以处理它们。Flash 播放器 10 介绍了实时媒体流协议(RTMFP)。与不同的 RTMP,RTMFP 基于用户数据报协议(UDP)。RTMFP 启用要么可靠地发送数据 (使用重传) 或不可靠地。通过使用不可靠的传输,可以最小传输延迟。此外,RTMFP 使直接的对等连接,不仅可以减少服务器的要求,可以进一步降低通信的终结点之间的延迟。Flash 播放器 10 还介绍了Speex编码解码器。Speex 是一种开放源代码、 免版税的编解码器,得到业界广泛支持。Flash 支持 Speex 编码在 16 kHz。此外,当 Speex 用于实时通信,使用 RTMFP 传输延迟最小化。RTMFP 将 Speex 的所有邮件都传递到一个更高的层,只要他们在收到。Flash 播放器使用自适应 Speex抖动缓冲区播放出消息时。Adobe 还实施了 Speex 噪声抑制和语音活动检测,保持沉默期间尽量减少传输带宽。这些功能使实际开发使用 RTMFP 和 Speex 的实时通信应用程序。为可以接受的用户体验,与会者应戴耳机以防止回声。当从计算机的扬声器的声音会反馈到麦克风声学回声时发生。使用耳机可能在企业环境中,可以接受,但在消费空间中,用户通常使用网络摄像头或内置笔记本电脑麦克风是显然不可取。为实现普遍适应,声学回声消除 (AEC) 是绝对必需的 IP 语音 (VoIP) 应用程序要求。AEC 是信使应用程序 (如 Skype 和 Google Talk) 和软电话 (如 Xlite) 中可用。Adobe Flash 播放器 10.3 和 Adobe 空气 2.7 推行增强的音频,其中包括声学回声消除和降噪制止。增强的音频是 Flash Player 和 AIR 所支持的所有桌面平台上可用。增强的音频 API我们已添加一个新 API 到 Flash 平台启用增强的音频。所有支持的 Flash Player 和 AIR 的桌面平台上提供此功能。新的 API 才可用在 ActionScript 3。你必须在你的创作环境、 目标 Flash 播放器 10.3 或空气 2.7 (或以后) 和 SWF 版本 12,您必须更新你的 playerglobal.swc。下面的类会受到影响: Microphone: 一种新的静态方法添加到此类来创建增强麦克风和读/写属性用于配置增强的麦克风选项。 MicrophoneEnhancedOptions: 这个新的类允许您配置增强的麦克风设置。 MicrophoneEnhancedMode: 此新类枚举增强的麦克风操作模式。将音频发送到另一个闪存终结点或 Flash 媒体服务器可以与只有几行代码的执行:var netConnection:NetConnection = new NetConnection();netConnection.connect(rtmfp://rtc);var netStream:NetStream = new NetStream(netConnection);var microphone:Microphone = Microphone.getMicrophone();netStream.attachAudio(microphone); 使用增强的音频同样很简单: 您可以获得使用的Microphone.getEnhancedMicrophone()静态方法增强的麦克风:var microphone:Microphone = Microphone.getEnhancedMicrophone();netStream.attachAudio(microphone); 除了声学回声消除,增强的音频还提供噪声抑制。以前,Flash Player 仅提供 Speex 音频噪声抑制。新的噪声抑制计划适用于所有捕获音频样本。噪声抑制由现有noiseSuppressionLevel类的属性,麦克风控制,默认启用的。将noiseSuppressionLevel设置为 0 将禁用噪声抑制。增强的音频有两方面的局限性: 您不能在同一时间使用增强型和非增强音频。 在任何给定时间只能使用一个单一的增强音频捕获。Flash 播放器的派单麦克风状态事件Microphone.UNAVAILABLE当麦克风停止提供音频数据因为上述的理由。这是一个未成年的限制时相比,非增强的音频,但实际的实时通信的应用程序,有一个正在工作的话筒应该足够。增强音频的操作是由您的麦克风对象和MicrophoneEnhancedOptions类的enhancedOptions属性来控制的。类具有以下属性: MicrophoneEnhancedOptions.mode选择增强音频的操作模式。可能的值,请参阅MicrophoneEnhancedMode类。默认值是MicrophoneEnhancedMode.HALF_DUPLEX否则 USB 捕获设备和MicrophoneEnhancedMode.FULL_DUPLEX 。 MicrophoneEnhancedOptions.echoPath指定的回声路径长度 (以毫秒为单位)。较长的回声路径意味着更好的回声消除,但也引入了更长的延迟和需要更多的处理能力。默认值是 128 ;可能的值就只是 256。 MicrophoneEnhancedOptions.nonLinearProcessing指定是否使用非线性处理来抑制残余的回声。使用时间域技术 ;默认值是enabled.在 MicrophoneEnhancedMode 类中枚举可用的增强的麦克风操作模式。支持以下值: MicrophneEnhancedMode.FULL_DUPLEX: 完整双面打印处理提供最佳质量回声取消。双方在同一时间可以发言。此模式要求高质量的输入和输出设备和最计算力。这是与内置扬声器和麦克风设备的膝上型计算机的理想选择。 MicrophoneEnhancedMode.HALF_DUPLEX: 半双工使用全双工比简单处理,因此需要较少的计算能力。它假定只有一方讲一次。半双工是 USB 麦克风设备的默认模式。 MicrophoneEnhancedMode.HEADSET: 回声消除运行在低回声模式中,假设这两个当事方都使用头戴式耳机。这种模式下从扬声器中可能会泄漏的最小回声移除到麦克风。此模式需要最少的处理。 MicrophoneEnhancedMode.SPEAKER_MUTE: 回声消除处于关闭状态,但其他语音处理功能 (如减少噪音) 被启用。 MicrophoneEnhancedMode.OFF: 所有增强的音频功能处于关闭状态。MicrophoneEnhancedOptions 的构造函数将设置以下默认属性:var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();options.mode = MicrophoneEnhancedMode.FULL_DUPLEX;options.echoPath = 128;options.nonLinearProcessing = true; 要查询增强的麦克风选项实际上在使用中,请使用以下内容:var microphone:Microphone = Microphone.getEnhancedMicrophone();var options:MicrophoneEnhancedOptions = microphone.enhancedOptions; 当你只想要修改某些增强音频参数时,请确保没有创建一个 MicrophoneEnhancedOptions 对象,该对象使用的构造函数,因为你可能会无意中覆盖以及其他参数。当使用具有增强音频麦克风数据生成 API (示例数据事件),您将收到回声取消和噪声抑制的样本。实时通信的最佳做法为 VoIP 应用程序提供最佳的用户体验,你应该使用 RTMFP 的 Speex 以及增强音频编解码器。在接收器,确保使用无缓冲的实时流媒体模式通过正确设置您的视频的 NetStream 对象的 bufferTime属性。这将确保音频邮件将会以最低延迟不可靠地进行传输。我强烈建议你使用对等连接,只要有可能尽量减少传输延迟。这可能不是可行多方通信或当 RTMFP 是不可能的 (请参见我的文章,使用 Flash 媒体服务器的实时协作的最佳做法).通过使用全双工模式获得最佳质量回声抵消。如果您有 USB 网络摄像机连接到您的便携式计算机,则应使用内置麦克风。您还可以实现一个用户界面,允许用户选择他或她选择的麦克风。如在上一节中所述,您可以通过使用下面的声明增强的麦克风:var microphone:Microphone = Microphone.getEnhancedMicrophone(); 上面的代码使用用户在他或她的本地设置管理器中选定的默认麦克风。Adobe 建议使用的麦克风增强的默认选项。(增强的麦克风模式的默认值否则是全双工和半双工的 USB 设备 ; 回声路径是 128 ms 和启用非线性处理。)Adobe 也强烈建议你使用 Speex 编码解码器。Speex 捕获和压缩只支持 16 khz 频率 (播放也支持 8 kHz),所以您不需要指定的采样率:microphone.codec = SoundCodec.SPEEX; Speex 操作帧的样本 ;每个帧的 20 ms 长 (320 样品在 16 kHz)。您可以指定您希望在消息中发送的帧数。默认值是 2,最大值是 8。为了尽量减少延迟,您可能想要发送的每封邮件的单个帧:microphone.framesPerPacket = 1; 显然,在邮件中发送多个帧减少了传输开销 ;为每个消息的开销字节数可多达 50 个字节 (RTMFP/UDP/IP 标头)。这种开销是很大,不能被忽略。您可能会考虑延迟和开销 (尤其是在一个无线或 3 G 方案) 之间的权衡,但在大多数情况下,最小化滞后时间是非常可取。它是非常重要的沉默级别设置为 0。当沉默级别为非零时,将出现不连续的传输。这可能会对 Speex 抖动缓冲区和声学回声取消算法的负面影响。此外,Speex 执行语音活动检测,并在检测到没有讲话时只使用 4 Kbps 的带宽:microphone.setSilenceLevel(0, 2000); 将沉默级别设置为零的后果之一是您将不再接收活动事件。如果您的应用程序一直依赖麦克风活动事件来检测用户是否说,你将需要选择另一种方法。请设置麦克风增益时,大家体谅。Flash 播放器不会修改系统捕捉或回放音量级别 ;它只是执行乘法的音频采样。Speex 和声学回声消除,超载的水平可以导致性能下降。设置增益到 50 不修改示例值,这可能就是最好的办法:microphone.gain = 50; 不正确的系统麦克风和回放水平可能导致降低音频质量。您可能希望通知用户要调整其硬件音频级别。麦克风类支持回声抑制用setUseEchoSuppression()方法。该算法是很简单: 当那里传出的声音,麦克风输入样本的规模除以 2。这会导致可能是不可取的某些应用程序中的不同麦克风声音级别。当使用增强的音频时,将忽略此回声抑制功能。使用增强的音频的限制AEC 是消耗大量计算资源。目前,只有桌面平台支持 Flash Player 和 AIR。虽然 AEC 为 SIMD 体系结构进行了优化,它可能会占用相当大一部分的低功耗上网本计算机上的 CPU 电源。当 AEC 不受支持时, Microphone.getEnhancedMicrophone()返回null.多党回声抵消是一个很难的问题。虽然从 API 的角度来看,没有什么可以防止创建一个多方通信应用程序,两个参与者的优化性能的增强音频。回声消除工作,您必须使用无缓冲的音频 ;就是订阅的视频的 NetStream 对象的bufferTime属性必须设置为 0。音频制作的NetStream对象与缓冲时间大于 0,将不包括在回声消除。全双工模式提供最佳质量回声取消和还支持模棱两可(同时在说这两个缔约方)。然而,它需要最的处理能力和良好的硬件。它不能用于 USB 捕获设备因为扬声器的 USB 捕获设备和声卡之间的同步当前不支持。当您使用非增强的音频,和你有多个音频捕获设备,下面的代码按预期方式工作:ns1.attachAudio(Microphone.getMicrophone(0);ns2.attachAudio(Microphone.getMicrophone(1); ns1和ns2在哪儿发布的两个不同视频的 NetStream 对象。每个视频的 NetStream 对象发布从各自非增强麦克风捕捉到的音频。这是目前不支持时采用增强的音频 ;在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手风琴零件制作工安全宣贯知识考核试卷含答案
- 小型家用电器制造工安全生产基础知识评优考核试卷含答案
- 园林修剪工安全技能测试模拟考核试卷含答案
- 半导体器件和集成电路电镀工安全生产意识知识考核试卷含答案
- 金属材热处理工岗前岗位适应能力考核试卷含答案
- 自然保护区环境巡护监测工岗中安全行为考核试卷含答案
- 分子筛脱蜡装置操作工客户关系管理水平考核试卷含答案
- 液氯气化处理工岗前基础理论考核试卷含答案
- 纺织面料设计师安全教育考核试卷含答案
- 快件派送员可持续发展强化考核试卷含答案
- 天域全国名校协作体2027届高三10月联考英语试卷(含答案)
- 自考13635工程力学(机械)高频考点重点
- GB/T 48132.9-2026绿色矿山建设规范第9部分:水泥用灰岩矿山
- JEDEC-JESD51-中文版详细解读
- 初中七年级英语跨学科项目化学习-Seasonal Poetry Pamphlet 创作工坊(第一课时)
- 精算师考试风险管理试题汇编(带解析)
- 2026年山东中考化学真题【含答案解析】
- 广东省深圳市2026中考语文作文真题解读及范文
- SpaceX IPO Roadshow 上市路演课件
- 中级注册安全工程师《化工实务》案例100问
- 工业人工智能导论 课件 第7-13章 群智能优化算法与生产调度- 智能机器人与应用
评论
0/150
提交评论