2016-08-31 1 views
1

J'ai essayé de jouer avec AVAudioEngine pour des données de flux 16 bits.Paramètre AVAudioFormat pour connecter la fonction a plantage

Mais passer à la fonction de connexion AVAudioFormat fait toujours plantage.

codes comme ci-dessous:

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 (...) est la ligne s'écraser

J'utilise Xcode 8 beta 6, OS X El Capitan, Et, ce qui se passe se pose! à la fois du simulateur et des appareils.

Cela fait partie du message d'accident:

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 

Il n'y a pas de problème à jouer avec le tampon et le format de fichier audio.

Qu'est-ce qu'une erreur?

Merci.

Répondre

1

-10868, a.k.a. kAudioUnitErr_FormatNotSupported, donc il semble que votre PCMFormatInt16 n'est pas appréciée. Le changer pour .PCMFormatFloat32 fonctionne.

+0

Merci. Ça marche. –

+1

J'ai rencontré la même situation et utilisé Float32 pour le réparer. J'ai remarqué que l'AudioFormat par défaut dans outputNode est aussi Float32 sur 3 périphériques iOD différents. Cela signifie-t-il que l'appareil iOS ne prend en charge que la lecture dans Float32? –