为什么我得到kAudioUnitErr_FormatNotSupported(10868)错误?

时间:2012-02-05 22:39:48

标签: ios core-audio

这是我遇到的核心音频中最神秘的错误。当我在音频单元的输出上发送格式时,为什么会出现此错误?

是因为音频单元确实支持我正在使用的流格式,还是因为我所使用的平台(即iOS)不支持该格式?

如果是前者,每个音频单元是否仅支持特定格式?如果是这样,我在哪里可以找到这些信息?

我正在努力建立对音频单元和音频图形的直观理解。它主要是有意义的,但流格式是令人愤慨的神秘。

3 个答案:

答案 0 :(得分:3)

  

是因为音频单元确实支持我正在使用的流格式,还是因为我所使用的平台(即iOS)不支持该格式?

可能是AU - 返回错误代码是什么? AudioUnitSetProperty

  

...每个音频单元是否仅支持特定格式?如果是这样,我在哪里可以找到这些信息?

AU可以支持多种格式。您必须询问AU支持哪种格式(可能因版本而异)。为某个平台(例如OS X或iOS)构建的AU通常支持OS的“canonic”格式,并且可以支持其他平台。 canonic格式因平台而异。在OS X上,AU很少偏离canonic格式(deinterleaved float PCM);

同时验证您是否正确设置了格式 - 您是否可以使用该格式在iOS上初始化任何 AU,或者只是一个给您带来麻烦的?怎么定义?它是操作系统的标准格式吗?如果您确实需要所需的格式,则可能需要进行格式转换。

答案 1 :(得分:0)

音频单元支持不同平台上的不同格式。您可以通过尝试格式并检查不支持的格式错误来查询音频单元 消息。

答案 2 :(得分:0)

这是我的情况:

***由于未捕获的异常'com.apple.coreaudio.avfaudio'而终止应用程序,原因:'[[[busArray objectAtIndexedSubscript:(NSUInteger)element] setFormat:format error:&nsErr]:返回false,错误Error Domain = NSOSStatusErrorDomain Code = -10868“(null)”'

osstatus.com进行检查

kAudioUnitErr_FormatNotSupported

我不交错使用:

public var readFormat: AVAudioFormat {
    return AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 2, interleaved: false)!
}

代替

public var readFormat: AVAudioFormat {
    return AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 2, interleaved: true)!
}

,然后确定