【问题标题】:Building WebRTC Audio Processing code ONLY for iOS仅为 iOS 构建 WebRTC 音频处理代码
【发布时间】:2016-02-03 19:41:03
【问题描述】:

目标是将 WebRTC 音频处理模块代码集成到 iOS 中以在我的应用程序中使用。我遇到了一大堆问题,比如

  1. ASM 代码文件需要被删除而不是编译。
  2. Objective-C++ 不能很好地处理虚拟 AudioProcessing 类(所以我在尝试测试它时遇到了问题:https://stackoverflow.com/questions/33150058/using-webrtc-c-classes-in-objective-c-gives-exc-bad-access
  3. 似乎有几个引用线程功能让我担心如果我尝试使用它们,我的应用程序会崩溃。

我已经有一点经验让它在 x86_64 处理器的 C++ 上工作。让这个模块在 iOS 设备上正常工作并在 Xcode 中编译的步骤是什么?

【问题讨论】:

  • 适用于 iOS 的 WebRTC 是一团糟。不久前,我设法使用来自WebRTC website 的说明编译了它(全部)
  • 您是否能够提取音频处理模块并在您的应用中使用它?
  • @narduk 是的,我是。我想我刚刚删除了 x86、mips 和 neon ASM 文件。它们似乎是泛型类的专用版本。所以我删除了文件中对它们的引用,只使用了泛型类。我列出的其他错误实际上只是我的错。最后我让它工作得很好。如果我不得不从头开始,我实际上只是看一下 pjsip 代码以及它们是如何做到的(或者如果可能的话,逐字借用)。他们以我想要的方式集成了 webrtc 音频处理。此外,它们还支持 iOS。

标签: ios objective-c xcode build webrtc


【解决方案1】:

有几种方法可以为 iOS 编译 WebRTC API。到目前为止,最简单的方法是安装 cocoapods 并使用:

pod "libjingle_peerconnection"

另一种方法是自己做,使用provided guidelines。这可能有点难以管理,但它的优点是能够在编译之前修补代码以满足您的需求。鉴于您最终只想要音频处理模块,我会说这是适合您的方式。

第三种选择是使用为您实现底层 WebRTC 代码的各种可用 SDK 之一。它们的缺点通常是它们不是免费的。

【讨论】:

  • 在您使用 pod 提供的第一个选项中编译 WebRTC API 代码是否还会为音频处理模块提供访问和头文件?
  • @mikealeonetti 我不确定,我需要不时地编辑源文件。我认为你只能得到 headers+lib,但来源非常大......
  • 确实如此。对于第二个选项,我可以修改整个代码,如果有必要的话。我只需要按原样访问音频处理 API。因此,如果我具有所需的功能访问权限,那么第一个选项可能是最好的。我试试看。
  • @mikealeonetti 我不太确定您是否可以通过 lib 访问较低级别的 WebRTC API。您想将音频处理模块用于某事,对吗?我不认为你可以通过包含 WebRTC 库来使用它,即使你知道如何浏览它的命名空间。我真的认为您最好的选择是下载源代码并手动搜索文件。然后隔离它们及其依赖项并将它们包含在您的项目中。
【解决方案2】:

您可能应该使用目录 src/webrtc/build/ios/build_ios_libs.sh 下的构建脚本从 WebRTC-ios 源代码编译库。按照官方指南设置构建环境并运行构建脚本。然后你可以在 src/out_ios_libs 目录下找到 webrtc-ios 使用的所有库,在那里你应该找到你需要的音频处理库。 找到您需要与您的应用程序链接的特定标题和 *.a。

这里是 WebRTC 网站:https://webrtc.org/

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2018-09-11
    • 2016-01-10
    相关资源
    最近更新 更多