Wowza Community

videochat flash + AEC (Accoustic Echo Cancellation)

Hi everybody,

I’m looking to implement AEC in videochat application, it seems that it’s not possible directly in flash client, but maybe it’s possible to do that on the wowza server itself ?

Anybody have an idea ? How can I change voice stream on fly on server ?

Thanks a lot

This package shows how to intercept audio packets from an incoming stream:

http://www.wowza.com/downloads/forums/videopassthru/VideoPassThru.zip

This forum post shows an example of how to use the Publishing API:

https://www.wowza.com/docs/how-to-use-publisher-api-and-jspeex-to-publish-an-audio-stream-voip-integration)

Charlie

The idea is you use the video pass thru hooks to grab the incoming stream and the publisher api to create a new stream with the echo gone. We do not have an exact forumal or suggest path for this type of integration. These are the two ends of the solution. The video pass thru for grabbing the incoming stream and the publisher API for publishing a new stream with raw frames. There is a lot left to the reader.

Charlie

Try chaning packet.getTimecode() to packet.getTimecodeAbs().

Charlie

Geofflee posted a couple of options here:

http://www.wowza.com/forums/showthread.php?12024-Filtering-RTMP-audio-packets-through-third-party-AEC#10

Flash community is waiting for years for AEC to be built into the plug-in.

Richard

In order to implement echo cancellation I am currently trying to integrate the Speex library with Wowza, following the suggestions I found in this forum.

Has anyone succeeded and maybe willing to share ideas or the source code? That would be highly appreciated.

Waiting for the new flash client (10.3) is not an option…

Thanks Charlie,

I see the idea, but how can I get the live streaming ? in the example, it’s a file on the computer, not live stream.

Connect

||

V

Getting Live Stream

||

V

Process AEC

||

V

Reinject stream

||

V

Sending stream to other client

Dam’s

Are there any suggestions as to a library or software package that could handle the echo cancellation?

I have a problem related to this: when republishing a live stream to flash clients with an arrangement similar to the one described above by dgriessinger, I can successfully republish the video, but the audio (speex encoded) is completely nonsense (i.e. silence or short bursts of static). The original stream is still available and has correct contents. The only change on the client side is to change the name of the stream from the republished stream to the original stream. The audio packets do not seem to work with anything I have tried, including resending without alteration and reconstructing the packet from components [publisher.addAudioData(packet.getData(), packet.getTimecode())]. No changes were made to the encoded data for these tests, and packet sniffing shows that the packets are arriving at the client in a way that looks correct (packet data prefixed with 0xb2 speex header byte…) but there is still no sensible audio. Anyone have any ideas?

It worked, thanks. The method was packet.getAbsTimecode()… apparently the flash client thought those packets were maybe from the early 1970s and thought “ewwww, disco” or something.

It worked, thanks. The method was packet.getAbsTimecode()… apparently the flash client thought those packets were maybe from the early 1970s and thought “ewwww, disco” or something.

Can you please share your code for this same ?

We need a solution which can work at server side. Because still flash not have the option to manage the AEC on mobile devices.

Thanks,

Kind Regards,

Kapil