2016-08-31 11 views
1

私は、歌った16ビットストリームデータに対してAVAudioEngineで再生しようとしています。関数に接続するAVAudioFormatを設定するとクラッシュする

しかし、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ベータ6、OS Xエルキャピタンを使用しています、そして、この出来事が起こりライン

をクラッシュされますシミュレータとデバイスの両方から。

これは、クラッシュ・メッセージの一部です:

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 

それは、オーディオファイルからバッファとフォーマットで遊んで問題ありません。

私は何をしていますか?

ありがとうございました。

答えて

1

-10868、a.k.a. kAudioUnitErr_FormatNotSupportedですので、PCMFormatInt16のように思われます。 .PCMFormatFloat32に変更すると機能します。

+0

ありがとうございます。それは働いている。 –

+1

私は同じ状況に遭遇し、それを修正するためにFloat32を使用しました。 outputNodeのデフォルトのAudioFormatも3つの異なるiODデバイスのFloat32であることに気付きました。これは、iOSデバイスがFloat32での再生のみをサポートしていることを意味しますか? –

関連する問題