2015-03-21 11 views
8

mam ten komunikat, gdy próbuję odtwarzać audio z innym boisku: enter image description herewyjątek com.apple.coreaudio.avfaudio powód: błąd -50

I google dla tego błędu z nie uda. Jeśli ustawię punkty przerwania, to zatrzyma się tutaj: enter image description here

Testuję drukowanie wszystkich obiektów, aby zobaczyć, że wszystko jest nitem, ale nic nie znalazłem. Najbardziej tajemniczą rzeczą jest to, że dzieje się to tylko w moim iPhone6 ​​+, w innych telefonach testowałem to nie robiąc przerwy. Potem przeszukał projekt gdzie spojrzałem dodać to efekty dźwiękowe, które brzmi: https://github.com/atikur/Pitch-Perfect A jeśli go uruchomić to działa, dopóki nie zmieni ...

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, error: &error) 

Do:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: &error) 

A następnie boom (TYLKO W PRAWDZIWYM URZĄDZENIU PODŁĄCZONYM DO XCODE, działa w symulatorze):

2015-03-21 11: 56: 13.311 Pitch Perfect [1237: 607678] 11: 56: 13.311 BŁĄD: [0x10320c000] AVAudioFile.mm:496: - [AVAudioFile readIntoBuffer: fr ameCount: error:]: error -50 2015-03-21 11: 56: 13.313 Pitch Perfect [1237: 607678] * Zamykanie aplikacji z powodu nieprzechwyconego wyjątku "com.apple.coreaudio.avfaudio", powód: "błąd - 50' * pierwsze wezwanie rzut stosu: (0x18687a530 0x1978040e4 0x18687a3f0 0x1851ea6c0 0x185232d38 0x1852130f8 0x185212ccc 0x100584fd4 0x100584f94 0x10058fdb8 0x1005882c4 0x1005925d4 0x100592208 0x198037dc8 0x198037d24 0x198034ef8) libC++ abi.dylib: kończące się nieprzechwyconego wyjątkiem typu NSException

a Naprawdę bardzo dziwne jest to zdjęcie, z jakiegoś powodu po wydrukowaniu audioEngine, audioEngine.outputNode dostaje zero? weird bug

+1

Dostaję ten sam błąd. W terminalu, jeśli wpiszesz 'macerror -50', odpowiada:' Błąd Mac OS -50 (paramErr): błąd na liście parametrów użytkownika'. Jeszcze się nie dostałem. –

+0

to programowanie audio w iOS jest do bani! – Josh

Odpowiedz

0

Miałem ten sam błąd ... I stworzył „sound.swift” klasy, że mój widok kontroler będzie instancję ... postanowiłem wszystko uprościć i skupić się na tworzeniu prac dźwięku. Więc mam umieścić następujący kod w kontroler widoku i działa:

// pobieramy nagrany plik

var pitchPlayer = AVAudioPlayerNode() 
var timePitch = AVAudioUnitTimePitch() 
let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)[0] as! String 

var pathArray = [dirPath, String("son.wav")] 

filePath = NSURL.fileURLWithPathComponents(pathArray) 

audioFile = AVAudioFile(forReading: filePath.filePathURL, error: nil) 

audioEngine = AVAudioEngine() 

audioEngine.attachNode(pitchPlayer) 
audioEngine.attachNode(timePitch) 


//Create a session 
var session=AVAudioSession.sharedInstance() 
session.setCategory(AVAudioSessionCategoryPlayAndRecord,error:nil) 

//output audio 
session.overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker, error: nil) 

audioEngine.connect(pitchPlayer, to: timePitch, format: audioFile.processingFormat) 
audioEngine.connect(timePitch, to: audioEngine.outputNode, format: audioFile.processingFormat) 

pitchPlayer.scheduleFile(audioFile, atTime: nil, completionHandler: nil) 
audioEngine.startAndReturnError(&audioError) 

pitchPlayer.play()