在Android上无需电缆即可将扬声器输出到麦克风输入?

Posted

技术标签:

【中文标题】在Android上无需电缆即可将扬声器输出到麦克风输入?【英文标题】:Speaker output to mic input without cable on Android? 【发布时间】:2013-08-25 09:37:00 【问题描述】:

我想在不使用任何物理电缆的情况下将扬声器输出连接到 android 手机上的麦克风输入。这样的路由应该对所有应用程序都是透明的。有了这个功能,我可以设计一堆有趣的应用程序,例如测量 voip 通话的往返延迟,自动回复来电等。

一些类似的问题可以在这里找到:

Background music for call

Outputting audio stream into microphone

目前Android上似乎没有解决方案,但是在Linux上运行的工具JACK是壁橱里的。有人可以为我提供一些脚本或代码来创建一个在 Linux 上实现这一点(扬声器-> 麦克风)的 JACK 客户端吗?将 JACK 服务器和客户端移植到 Android 有多难?

谢谢!

【问题讨论】:

【参考方案1】:

让 Linux 上的 Jack 将麦克风连接到扬声器:

    用 QJackCtl 启动 Jack。这并不像听起来那么容易:
      启动 QJackCtl。 点击“设置...”按钮。 从“驱动程序:”下拉列表中选择“alsa”。 从“输入设备”和“输出设备”下拉菜单中选择要使用的声卡/声卡。请注意,如果您有相对强大的声卡,则可能有许多可能的设备(我的 Audigy 2 ZS 有四个)。选择正确的方法超出了本教程的范围。 检查右下角的延迟。意识到杰克本身需要一些时间来处理声音。这为您提供了相关信息(我很抱歉,但我不知道它的确切含义)。运行 Jack 通常是在获得超低延迟和避免“xruns”之间进行权衡,这是 Jack 不得不放弃处理一段音频的地方。 Xruns 通常会发出“咔哒”声。 点击“确定”。
    点击“连接”按钮。 这将打开“连接”面板。这基本上是一个您可以将不同的 Jack 应用程序相互插入的地方,以便它们相互处理音频。 选择输入(左侧的“系统”)和输出(右侧的“系统”),然后单击“连接”。您可能需要查看一侧或两侧“系统”下列出的各种内容,以找到实际从麦克风/输出到扬声器的内容,在这种情况下。同样,这超出了本教程的范围; Google 是您的朋友,反复试验也是如此。 将麦克风靠近扬声器时享受反馈的噪音。

就将 Jack 移植到 Android 而言,您可以查看 this,这基本上似乎表明 Android 无法处理 Jack 的低延迟要求(这也可能导致您在尝试进行延迟测量)。您还可以查看this 和this,这可能会提供另一种方法来执行您正在尝试做的事情(我不确定它在延迟问题方面的立场,而且,我也从未使用过PD 或 libpd 我自己)。

【讨论】:

感谢您的回答! QJackCtl 实现了我在 Linux 上的需要。然而,将 JACK 移植到 Android 上似乎仍然是一项未完成的工作。您提供的大多数链接都在谈论生成扬声器输出,而我仍然不知道如何用扬声器输出(或其他任何东西)替换默认麦克风输入。对此有任何想法吗?

以上是关于在Android上无需电缆即可将扬声器输出到麦克风输入?的主要内容,如果未能解决你的问题,请参考以下文章

捕获音频输出

捕获音频输出

iOS中的麦克风输入到扬声器输出?

iOS SDK 禁用内置麦克风

iOS8 AVAudioEngine 如何将麦克风输入路由到(底部)扬声器输出?

NAudio 记录和保存麦克风输入和扬声器输出