gpt4 book ai didi

android - 如何同步 AudioRecord 和 AudioTrack

转载 作者:太空狗 更新时间:2023-10-29 14:34:23 26 4
gpt4 key购买 nike

有没有办法在Android中同步采集和播放音频数据?

我需要进行一些信号处理(回声消除等),需要在样本级别进行同步。

即每次硬件捕获音频帧时,我都需要通过扬声器高精度播放的相应帧。

非常感谢任何帮助或提示。提前致谢。

-flesym

最佳答案

我能够在我的 Arm5 (WM8650) 处理器上使用回声消除功能。以下是我采取的步骤:

  1. 在将 PCM 帧发送到编码器之前,我用 JNI 封装了 Speex 并调用了回显处理例程。无论我尝试了何种 Speex 设置,都没有回音被取消。

  2. 因为 Speex 对播放和回声帧之间的延迟非常敏感,所以我实现了一个队列并将所有发送到 AudioTrack 的数据包排队。队列的大小应大致等于内部 AudioTrack 缓冲区的大小。这样,当 AudioTrack 将数据包从其内部缓冲区发送到声卡时,数据包就会大致发送到 echo_playback。使用这种方法消除了延迟,但仍然没有取消回声

  3. 我用 JNI 包装了 WebRtc 回声消除部分,并在将数据包发送到编码器之前调用了它的方法。回声仍然存在,但图书馆显然试图取消它。

  4. 我应用了 P2 中描述的缓冲技术,它终于开始起作用了。但是,需要针对每个设备调整延迟。另请注意,WebRtc 具有回声消除的移动版和完整版。完整版会大大降低处理器速度,可能只能在 ARM7 上运行。手机版可以,但画质较差

我希望这会对某人有所帮助。

关于android - 如何同步 AudioRecord 和 AudioTrack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com