2014-11-27 20 views
5

Mój kod działał dobrze do iOS 8 kAudioFormatMPEG4AAC, ale teraz tworzy pusty plik. Nie zgłoszono błędów. Kiedy zmieniłem go na kAudioFormatLinearPCM, to działa. To jest mój kod:AVAudioRecorder w iOS 8 nie obsługuje kAudioFormatMPEG4AAC

recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey, 
    [NSNumber numberWithInt: kAudioFormatLinearPCM], AVFormatIDKey, 
    [NSNumber numberWithInt:16], AVEncoderBitRateKey, 
    [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, 
    [NSNumber numberWithFloat:32000.0], AVSampleRateKey, 
    nil]; 

Odpowiedz

3

Proszę usunąć AVEncoderBitRateKey kluczyk ze słownika ustawienia i będzie pracować nad systemów iOS 8 z kAudioFormatMPEG4AAC.

Może to być określona korelacja między AVEncoderBitRateKey i AVNumberOfChannelsKey. Ale nie grałem parametrami, ale użyłem domyślnej wartości bitrate, aby uzyskać pracę rejestratora.

3

Ten bitrate wygląda podejrzanie niski, nawet dla kAudioFormatMPEG4AAC (16 bajtów na sekundę), może spróbuj 16000 lub 64000 lub więcej.

p.s. próbować nowych literały Objective-C za swoimi NSDictionarys, NSArrays i NSNumbers, myślę, że jesteś lepszy: zapis

recordSettings = @{ 
    AVEncoderAudioQualityKey : AVAudioQualityMin, 
    AVFormatIDKey : @(kAudioFormatLinearPCM), 
    AVEncoderBitRateKey : @16000, 
    AVNumberOfChannelsKey : @1, 
    AVSampleRateKey : @32000 
}; 
+0

Z kAudioFormatLinearPCM, mój AVAudioRecorder nie działa. –