CoreAudio/OpenAL:如何获取传出的音频信号

Posted

技术标签:

【中文标题】CoreAudio/OpenAL:如何获取传出的音频信号【英文标题】:CoreAudio/OpenAL: How to get the outgoing audio signal 【发布时间】:2013-03-22 12:45:55 【问题描述】:

我目前正在尝试获取我的 ios 应用程序的传出音频信号,以便能够将其发送到 Audiobus。我需要传出的 AudioBufferLists 才能路由它们。我正在使用 OpenAL 进行音频播放。

最好的情况是我什至可以修改输出信号以对其施加影响。

【问题讨论】:

我发现这个问题也在寻找有关如何让 OpenAL 应用程序输出到 Audiobus 的信息。希望有人帮助 感觉非常好,其他人也尝试这样做,但在文档中找不到答案。我还在 Audiobus 论坛上发布了这个问题,但到目前为止没有答案:heroes.audiob.us/discussion/100/openal-send-to-audiobus#Item_1 编辑:我实际上正在使用 CocosDenshion,它是一个 OpenAL 包装器 - 如果这对某人有帮助的话。 【参考方案1】:

目前似乎没有公共 API 可以在 iOS 应用中访问 OpenAL 的输出。

如果您想要输出,则需要使用另一个音频 API 来播放声音,例如带有未压缩原始 PCM 音频的音频队列或 RemoteIO 音频单元,以便能够获取音频输出缓冲区。

【讨论】:

在 Audiobus 论坛上有人建议我这样做:***.com/questions/10756972/… - 我还没有时间测试它。 ObjectAL 具有录制功能,但显示“iOS 上不支持”。这是由于 OpenAL 还是没有实现? github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectAL/…【参考方案2】:

您可能想看看这个人是如何为 OpenAL 制作自己的音频混合对象的,以便他可以实现:

http://www.cuppadev.co.uk/openal-sucks-write-your-own-audio-mixer/

【讨论】:

谢谢,也许我会联系那个人并问他,因为他似乎只展示了他的基本想法。【参考方案3】:

您可以将 CoreAudio 与 3D 混合器音频单元 (kAudioUnitSubType_AU3DMixerEmbedded) 一起使用,而不是使用 OpenAL。然后,您可以控制输出的去向。显然这样做会牺牲一些可移植性(Mac OS X 可以,但 Windows、Linux 或 android 不行)。

【讨论】:

以上是关于CoreAudio/OpenAL:如何获取传出的音频信号的主要内容,如果未能解决你的问题,请参考以下文章

如何从顶点scala gremlin获取所有传入/传出边的所有顶点

如何从 Ant Media Server 中获取所有的传入和传出流名称?

iOS 音频系列之一:Core Audio简介

Core Audio 指定要解码的音轨

如何查找传出IP地址所属的应用服务?

拆分长度不正确的音轨 - FFMPEG