将预先录制的音频播放到语音通话中

Posted

技术标签:

【中文标题】将预先录制的音频播放到语音通话中【英文标题】:Play pre-recorded audio into a voice call 【发布时间】:2012-04-04 07:30:39 【问题描述】:

之前有人问过这个问题(How to play an audio file on a voice call in android、play an audio file on a voice call 等),但我还是会问:是否可以在正在进行的语音通话中播放音频文件。我知道简短的回答是“不”,但我还没有弄清楚为什么这是不可能的。

我知道 SDK 不支持它,但是是否有可能以某种方式编写您自己的代码来处理这个问题,也许在 C/C++ 代码的帮助下(使用 NDK)?有谁知道如何解决这个问题?还是严格的回答“不,您不能”?

我并不关心该解决方案是否不适用于所有设备,只要我能找到一些支持该解决方案的设备,如果需要,我可以考虑获取 root 访问权限。

【问题讨论】:

使用 root 访问权限 + NDK 这绝对是可能的......但我建议不要走那条路...... 好的,感谢您的评论。在我放弃之前,我会稍微研究一下这个问题。现在我正在查看 OpenSLES API 以及是否可以通过某种方式更改 OutputMix/OutputDevice。 @user675862 你找到解决办法了吗? @Yahia ,您知道实施此解决方案的任何其他替代方案 我还没有找到通用的解决方案,但我注意到在 Nexus S 和 Galaxy Nexus 上是可以做到的。只需使用 SDK 中的 AudioTrack 并使用 STREAM_VOICE_CALL 作为 streamType。这种方法不适用于我测试过的其他手机(HTC Desire 和一些 SE 手机) 【参考方案1】:

在我的一加(测试设备)上进行语音通话期间,我使用 Audiotrack 播放流设置为 STREAM_VOICE_CALL 的音频,它运行良好,但是我说话的音频听得很清楚,播放的音乐听不到。可能是因为应用了降噪功能。我为此使用了基于 Lollipop 的 Rom。所以答案是肯定的,我们可以玩。

【讨论】:

问题是关于在语音通话期间播放音乐以便在远端(即通话对方)听到的问题,而不是只有您可以听到的本地播放。我使用过的大多数设备都支持后一种情况。 “问题是关于在语音通话期间播放音乐以便在远端听到”在发起方播放音乐并在接收方收听对吗? @迈克尔 太好了,你能分享一些我正在尝试创建一个必须插入音频流的模块的代码..

以上是关于将预先录制的音频播放到语音通话中的主要内容,如果未能解决你的问题,请参考以下文章

ANDROID:接听电话后播放音频

android webRTC语音通话

WebRTC 一对一语音通话中音频端到端分段延迟分析

Android通话录音未录制来电语音

在android中流式传输通话语音?

如何模拟通话以将蓝牙音频流式传输到车辆中?