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 【问题描述】:我试图将音频输入设置为单声道并使用两个AudiostreamBasicDescription
s 为一个 RemoteIO AudioUnit 输出立体声,这是那里唯一的 AudioUnit。
然后我为输入 (kAudioOutputUnitProperty_SetInputCallback
) 和输出 (kAudioUnitProperty_SetRenderCallback
) 注册了两个单独的回调,并期望在我的输出回调中,AudioBufferList *ioData
,ioData->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 禁用自动播放