crash - 设置 AVAudioFormat 连接功能崩溃

标签 crash avfoundation swift3 avaudioengine

我一直在尝试使用 AVAudioEngine 播放 16 位流数据。

但是传递给 AVAudioFormat 连接函数总是会导致崩溃。

代码如下:

let AUDIO_OUTPUT_SAMPLE_RATE    = 44100
let AUDIO_OUTPUT_CHANNELS       = 2
let AUDIO_OUTPUT_BITS           = 16
var audioEngine: AVAudioEngine?
var audioPlayer: AVAudioPlayerNode?

...

    audioEngine = AVAudioEngine()
    audioPlayer = AVAudioPlayerNode()

    audioEngine?.attach(audioPlayer!)

    let mixer = audioEngine?.mainMixerNode
    mixer!.outputVolume = 1.0
    let stereoFormat = AVAudioFormat(commonFormat: .pcmFormatInt16, sampleRate: Double(AUDIO_OUTPUT_SAMPLE_RATE), channels: 2, interleaved: false)
    audioEngine!.connect(audioPlayer!, to: mixer!, format: stereoFormat)

...

audioEngine!.connect(...) 崩溃了

我正在使用 Xcode 8 beta 6、OS X El Capitan,而且,这种情况发生在模拟器和设备上。

这是崩溃消息的一部分:

ERROR:    >avae> AVAudioNode.mm:751: AUSetFormat: error -10868
*** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'error -10868'

...
3   AVFAudio  0x000000011e0a5630 _Z19AVAE_RaiseExceptionP8NSStringz + 176
4   AVFAudio  0x000000011e0f270d _ZN19AVAudioNodeImplBase11AUSetFormatEP28OpaqueAudioComponentInstancejjP13AVAudioFormat + 213
5   AVFAudio  0x000000011e0f2630 _ZN19AVAudioNodeImplBase15SetOutputFormatEmP13AVAudioFormat + 46
6   AVFAudio  0x000000011e0f9663 _ZN21AVAudioPlayerNodeImpl15SetOutputFormatEmP13AVAudioFormat + 25
7   AVFAudio  0x000000011e099cfd _ZN18AVAudioEngineGraph8_ConnectEP19AVAudioNodeImplBaseS1_jjP13AVAudioFormat + 2377
8   AVFAudio  0x000000011e09d15f _ZN18AVAudioEngineGraph7ConnectEP11AVAudioNodeS1_mmP13AVAudioFormat + 355
9   AVFAudio  0x000000011e0fc80e _ZN17AVAudioEngineImpl7ConnectEP11AVAudioNodeS1_mmP13AVAudioFormat + 348

从音频文件中使用缓冲区和格式播放没有问题。

我做错了什么?

谢谢。

最佳答案

-10868,又名 kAudioUnitErr_FormatNotSupported,因此您的 PCMFormatInt16 似乎不受欢迎。将其更改为 .PCMFormatFloat32 确实有效。

关于crash - 设置 AVAudioFormat 连接功能崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39245231/

相关文章:

android - 如何从 ApplicationErrorReport 类获取崩溃信息?

button - Github 桌面窗口同步按钮消失,历史选项卡不工作

ios - SKScene中的AVAudio Player错误

ios - 在展开 Optional 值时意外发现 nil? swift 4

swift - 向图像添加触摸手势并执行代码

visual-studio - Visual Studio在与Web相关的项目上始终崩溃

c - C中的二叉树崩溃

ios - 如何在 Swift 3 + Optional + NSOrderedSet + Generic 中优雅地使用 Core Data

iOS - Chromecast 与 MPNowPlayingInfoCenter 集成以提供锁屏控制

swift - 如何从 HTTPURLResponse 保存 Cookie