Я должен внедрить AEC в приложении Flex для видеоконференций. Я знаю, что это не может быть сделано непосредственно во Flash. Я подумываю написать собственное приложение или библиотеку, которая будет выполнять AEC вне Flex.
Насколько я знаю, Adobe Connect Pro использует некоторую внешнюю библиотеку, которая поддерживает AEC. Я хотел бы следовать этому направлению и сделать что-то похожее.
В моей голове появляются две возможности:
1) Независимый пользовательский фильтр AEC.
Пользовательский фильтр AEC будет работать в фоновом режиме и будет обрабатывать все данные с микрофона и звуковой карты и выполнять AEC. Эхо-сигнал будет данными, которые должны быть воспроизведены, но задержаны во временном буфере, что-то вроде этого: aec (input, delayed_input, output).
Я не знаю, работает ли он, потому что микрофонный вход Flash не знает о моем пользовательском входе и не совпадает с динамиками. Но как это сделать в WinXP / Vista, когда AEC находится на системном уровне?
2) Фильтр AEC взаимодействует с NativeProcess Flex.
Фильтр будет запускаться NativeProcess. Приложение Flex передает звук с микрофона, полученный удаленный голос на фильтр и возвращает голос с удаленным эхом, а затем Flex выводит его на динамики. Будет ли это правильно?
Если метод 2) в порядке, у меня есть следующие вопросы:
- Я начну с AEC Speex, так в каком формате должны передаваться данные из Flex? Если я выберу кодек Flex Speex для сжатия звука, могу ли я передать его непосредственно в библиотеку speex?
- Будет ли исполнение в порядке? Я думаю, что вызов библиотеки NativeProcess для каждого буфера звукового кадра может занять много времени.
- Почему в AS3 нет реализации AEC, которую можно использовать непосредственно из Flash? Насколько я знаю, для выполнения AEC у вас должны быть данные эха и данные микрофона (во Flash 10 есть прямой доступ к микрофону). Определенно есть что-то, что перестает делать это, но я пока не знаю, что это:)
- Есть ли какая-нибудь бесплатная реализация AEC или библиотека DSP с in, кроме Speex, которую я могу использовать?
PS Я теперь эксперт по Flash / Flex, извините за некоторые глупые вопросы:)
Заранее благодарен за помощь,
ternyk