3 Stimmen

Die Aufnahme von Audio auf dem iPhone: Fehler mit setPreferredIOBufferDuration

Ich habe Apples Dokumentation gefolgt, um Audio auf dem iPhone mithilfe der Klasse AVAudioSession aufzuzeichnen. Ich kann mehrere Eigenschaften ohne Fehler festlegen (setActive, setCategory, setPreferredHardwareSampleRate), aber ich kann Apples Beispielcode für setPreferredIOBufferDuration nicht zum Laufen bringen.

Hier ist mein Code:

- (void) initX {
 NSError *setPreferenceError = nil;
 NSTimeInterval preferredBufferDuration = 0.005;

 [[AVAudioSession sharedInstance]
  setPreferredIOBufferDuration: preferredBufferDuration
  error: &setPreferenceError];

 if (setPreferenceError != nil) {
  NSLog( @"%@", setPreferenceError );
 }
}

Es produziert folgende Ausgabe:

Error Domain=NSOSStatusErrorDomain Code=561211770 "Vorgang konnte nicht abgeschlossen werden. (OSStatus-Fehler 561211770.)"

Ich rufe diese Methode aus dem Haupt-Applikationsdelegate auf, als Teil der Methode applicationDidFinishLaunching. Ich initialisiere zu diesem Zeitpunkt nur Dinge. Ich habe AVFoundation/AVFoundation.h importiert, nachdem ich AVFoundation.framework zum Projekt hinzugefügt habe.

1voto

lensovet Punkte 5059

Es scheint, dass dies ein Fehler im Code von Apple ist; Verwenden Sie stattdessen die reine C-Schnittstelle:

OSStatus propertySetError = 0;
Float32 preferredBufferDuration = 0.005;
propertySetError = AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(preferredBufferDuration), &preferredBufferDuration);

Dann zur Überprüfung von Fehlern verwenden Sie

if (propertySetError) NSLog(@"Fehler beim Setzen des kürzeren I/O-Puffers auf AVAudioSession, Code %d", propertySetError);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X