我想在耳机插入iOS设备时直接将录制的音频播放到扬声器。
我所做的是在AudioUnitRender
func中调用AURenderCallback
,以便将音频数据写入AudioBuffer结构。
如果未设置“IO缓冲区持续时间”或将其设置为0.020秒,则效果很好。如果通过调用setPreferredIOBufferDuration
将“IO缓冲持续时间”设置为较小的值(0.005等),AudioUnitRender()
将返回错误:
kAudioUnitErr_CannotDoInCurrentContext(-10863)。
任何人都可以帮忙弄清楚为什么以及如何解决它?感谢
答案 0 :(得分:1)
只是想补充一点,更改输出范围采样率以使其与我正在使用的OSx kAudioUnitSubType_HALOutput音频单元的输入的输入范围采样率相匹配,为我解决了此错误
答案 1 :(得分:0)
缓冲区已满,因此请等待后续渲染过程或使用更大的缓冲区。
AudioToolbox,AudioUnit和AUGraph使用了相同的错误代码,但仅为AUGraph记录。
为了避免在渲染线程中旋转或等待(一个坏主意!),很多 对AUGraph的调用可以返回: kAUGraphErr_CannotDoInCurrentContext。仅生成此结果 当您从其渲染回调中调用AUGraph API时。这意味着 它需要的锁是在那个时候由另一个线程保持的。如果 你看到这个结果代码,你通常可以再次尝试行动 - 通常是NEXT渲染周期(所以锁定的时间也是如此) 已清除),或者您可以将该调用委托给您应用中的另一个线程。 你不应该旋转或暂停渲染线程。
https://developer.apple.com/reference/audiotoolbox/kaugrapherr_cannotdoincurrentcontext