8

我必须在 Flex 视频会议应用程序中实现 AEC。我知道它不能直接在 Flash 中完成。我正在考虑编写一个在 Flex 之外执行 AEC 的本机应用程序或库。

据我所知,Adobe Connect Pro 正在使用一些执行 AEC 的外部库。我想按照这个方向做一些类似的事情。

在我的脑海里有两种可能:

1) 独立定制AEC过滤器。

自定义 AEC 过滤器将在后台运行,并将处理来自麦克风和声卡的所有数据并执行 AEC。回声信号将是要播放但在临时缓冲区中延迟的数据,如下所示:aec(input, delay_input, output)。

我不知道它是否有效,因为 Flash 麦克风输入不知道我的自定义输入,扬声器也是如此。但是在系统级别具有 AEC 的 WinXP/Vista 中是如何完成的呢?

2) AEC 过滤器与 Flex 的 NativeProcess 交互。

过滤器将由 NativeProcess 运行。Flex 应用程序会将麦克风声音、接收到的远程语音传递给过滤器并返回去除回声的语音,然后 Flex 会将其输出到扬声器。会正确吗?

如果 2) 方法没问题,那么我有以下问题:

  1. 我将从 Speex 的 AEC 开始,那么从 Flex 传递的数据应该采用什么格式?如果我选择 Flex Speex 编解码器进行声音压缩,我可以将它直接传递到 speex 库吗?
  2. 表现会好吗?我认为每个声音帧缓冲区调用 NativeProcess 库可能会很耗时。
  3. 为什么 AS3 中没有可以直接从 Flash 使用的 AEC 实现?据我所知,要进行 AEC,您必须拥有回声数据和麦克风数据(在 Flash 10 中,可以直接访问麦克风)。肯定有一些事情正在停止这样做,但我还不知道它是什么:)
  4. 除了 Speex 之外,我可以使用一些免费的 AEC 实现或 DSP 库吗?

PS 我现在是 Flash/Flex 专家,对于一些愚蠢的问题,我深表歉意 :)

在此先感谢您的帮助, ternyk

4

2 回答 2

2

好消息 - 它现在已内置到 Flash Player 10.3 中 :) 阅读发行说明并确保针对 Flex 4.5 SDK 进行编译

于 2011-05-19T23:14:51.087 回答
1

在 Java 中 AEC 是可能的,您可以使用 Merpi 在 AIR 中访问 Java 功能。也许你应该试试这个。

谢谢

于 2011-05-31T10:39:46.957 回答