iOS 或 Android 中移动麦克风的跨平台库

Posted

技术标签:

【中文标题】iOS 或 Android 中移动麦克风的跨平台库【英文标题】:Cross platform library for mobile microphone in iOS or Android 【发布时间】:2016-05-11 05:08:15 【问题描述】:

我正在 android 中开发一个应用程序,该应用程序从麦克风录制声音并通过 WIFI 发送。对于录音,我使用 Audiorecord 和 Audiotrack。因为 Android 不提供低延迟,所以我一直在寻找一个音频库,它提供低延迟并且能够跨平台用于以后的 ios 实现。

现在我路过:

libpd portaudio OpenAL 软件

我的问题是:

    在我的情况下,哪些库最值得推荐或更容易实现?也许有任何实现示例?

    当我广播我通过 Audiorecord 录制的原始音频数据时,我如何过滤自己制作的音频数据包?我应该在每个音频包中发送一个 ID 并按 Auditrack 过滤吗?

谢谢 维克斯

【问题讨论】:

【参考方案1】:

我已经研究这个问题几天了,老实说,我发现在我研究低延迟 android 录制的所有地方,似乎所有 android 版本都没有一致的结果,甚至物理设备之间的一致性。

此article 于 2015 年 11 月发布,并且非常详细地详细说明了我在 Android 上通过低延迟录制能够找到的整体内容。

至于使用什么库,什么被认为是最简单的实际上是意见,而不是 SO 通常处理的。我个人在我的项目中使用 OpenAL,但延迟对我来说不是问题。如果是这样,我可能会选择 portaudio,因为它更容易集成 Steinberg 的 ASIO 驱动程序,这将使 Windows 开发更容易。对于 OSX,核心音频似乎不需要与 Windows 相同类型的低延迟驱动程序。

因此,为了回答您的问题,我不认为列出的任何库都可以为每个操作系统提供低延迟。无论您使用哪一个,您都可能必须支持特定于平台的功能。

我列出的文章确实表明有一个付费图书馆,但是,这可能有用,但由于我没有使用它,我无法对此发表意见。

【讨论】:

你好 Lesley,谢谢回复。能否提供openal + android的例子(如何集成和使用?)。我一直在尝试使用 libpd,但我不知道如何从输入中捕获音频缓冲区以及如何将缓冲区输出。只能从磁盘写入或读取。没有内存解决方案。 OpenAL Soft 是否提供捕获输入(麦克风)缓冲区并将缓冲区放入输出(耳机)的选项 OpenAL 无疑提供了一种内存解决方案。请参阅此 stack overflow question 以了解如何在 C++ 中执行此操作。至于让它与 Android 一起工作,this SO answer 有一些更好的输入。 Martin 的回答展示了如何使用 NDK 编译 OpenAL,而 AerialX 有他自己的 repo,可能会有一些用处。这取决于你想怎么做。

以上是关于iOS 或 Android 中移动麦克风的跨平台库的主要内容,如果未能解决你的问题,请参考以下文章

Github新的移动APP已经上架iOS和Android平台

移动端自动化自动化(Android&iOS)——Appium

Cordova学习总结

跨移动平台编程[关闭]

使用 Kotlin 多平台实现相机库

在移动设备上的 android 浏览器中访问麦克风