CoreAudio,iOS:无法通过 RemoteIO 使用单声道输入和立体声输出

Posted

技术标签:

【中文标题】CoreAudio,iOS:无法通过 RemoteIO 使用单声道输入和立体声输出【英文标题】:CoreAudio, iOS: Failed to use mono Input and stereo output with RemoteIO 【发布时间】:2013-06-05 22:53:13 【问题描述】:

我试图将音频输入设置为单声道并使用两个AudiostreamBasicDescriptions 为一个 RemoteIO AudioUnit 输出立体声,这是那里唯一的 AudioUnit。

然后我为输入 (kAudioOutputUnitProperty_SetInputCallback) 和输出 (kAudioUnitProperty_SetRenderCallback) 注册了两个单独的回调,并期望在我的输出回调中,AudioBufferList *ioDataioData->mNumberBuffers 应该是 2。

但是,令我惊讶的是,它仍然是 1。

是不是RemoteIO不支持输入输出不同的通道号?

【问题讨论】:

【参考方案1】:

我似乎已经想通了: 我使用的是有符号整数示例格式,并且使用该格式, RenderCallback 的输入参数AudioBufferList *ioData 中只有一个带有交错音频样本的AudioBuffer(两个输出通道缓冲区连接为一个),即AudioBufferList::mNumberBuffers 是一个。它唯一的AudioBuffer 成员又具有mNumberChannels 属性,该属性对应于真实的通道数。就我而言,该字段是两个。

另一个支持上述情况的发现:Signed-integer format cannot be interleaved (tested with Xcode4.6 on OSX Mountain Lion),即属性kAudioFormatFlagIsNonInterleaved在设置格式标志时不能与kAudioFormatFlagIsSignedInteger结合ASBD。

如果使用浮点加非交错采样格式,RenderCallback 的AudioBufferList *ioData 在缓冲区列表中有两个AudioBuffer,每个都有mNumberChannels 字段作为一个。

【讨论】:

以上是关于CoreAudio,iOS:无法通过 RemoteIO 使用单声道输入和立体声输出的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Spotify iOS App Remote SDK 禁用自动播放

iOS 音频开发之CoreAudio

混合声波(iOS 上的 CoreAudio)

iOS,CoreAudio:一个奇怪的'CADebugPrintf.h:没有这样的文件或目录......'错误

iOS 5/6:首次使用 CoreAudio 后音量变小

Core Audio - 远程 IO 混乱