这是我遇到的核心音频中最神秘的错误。当我在音频单元的输出上发送格式时,为什么会出现此错误?
是因为音频单元确实支持我正在使用的流格式,还是因为我所使用的平台(即iOS)不支持该格式?
如果是前者,每个音频单元是否仅支持特定格式?如果是这样,我在哪里可以找到这些信息?
我正在努力建立对音频单元和音频图形的直观理解。它主要是有意义的,但流格式是令人愤慨的神秘。
答案 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)!
}
,然后确定