AVAudioSession AVAudioSessionCategoryPlayAndRecord Fehler

9

Ich möchte Videos mit Audio mit AVCaptureSession aufnehmen. Dafür benötige ich die AudioSessionCategory AVAudioSessionCategoryPlayAndRecord , da meine App auch Video mit Ton wiedergibt.

Ich möchte, dass Audio vom Standardlautsprecher hörbar ist und ich möchte, dass er mit anderen Audiodaten gemischt wird. Also brauche ich die Optionen AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers .

Wenn ich während der Wiedergabe von anderem Audio das Folgende mache, gibt es einen hörbaren Störimpuls im Audio von der anderen App:

%Vor%

Gibt es eine Möglichkeit, diesen Fehler loszuwerden?

Es scheint zu passieren, wenn ein AVAudioSessionRouteChangeReasonRouteConfigurationChange wie von AVAudioSessionRouteChangeReasonCategoryChange von keinem Mikrofoneingang an den Mikrofoneingang gemeldet wird.

Die Konfigurationsänderung (und Glitch) tritt auch auf, wenn die App in den Hintergrund wechselt (mit oder ohne Deaktivierung der Audiositzung). Wenn aus dem Hintergrund zurückgekehrt wird, ohne die Audiositzung zu deaktivieren, treten die Störimpulse auf, wenn die AVCaptureSession -Konfiguration geändert wird, d. H. Wenn die Kamera von vorne nach hinten umgeschaltet wird. In diesem Fall wird das Audio-Routing nicht berührt. Es tritt nur auf, wenn Sie vom Hintergrund zurückkehren, ohne die Audiositzung zu deaktivieren. Die Benachrichtigung, dass sich die Route ändert, wird zweimal ausgelöst. Einmal um das Mikrofon zu deaktivieren und einmal um es wieder zu aktivieren.

Beachten Sie, dass dieses Verhalten leicht reproduzierbar ist, indem Sie das AVCamManual-Beispiel von Apple herunterladen. Fügen Sie dem viewDidLoad von AAPLCameraViewController.m Folgendes hinzu:

%Vor%

Einige andere seltsame Dinge, die verwandt sein könnten:

Setzen Sie die Audio-Kategorie zuerst auf AVAudioSessionCategoryAmbient und aktivieren Sie sie:

%Vor%

und ändern Sie dann die Kategorie:

%Vor%

anderer Ton stoppt die Wiedergabe trotz des Options-Flags. Es werden keine Fehler ausgegeben.

    
Jorn van Dijk 23.12.2014, 00:36
quelle

1 Antwort

0

Wie von @Cbas in den Kommentaren hervorgehoben, hat ein Apple Staff bestätigt, dass es einen Fehler beim Umschalten von Ausgabe- auf Eingabe + Ausgabe-Routen gibt und dass es keine Problemumgehung für dieses Problem gibt. Eine mögliche Abhilfe besteht darin, den Wechsel vollständig zu vermeiden Verwenden Sie die Kategorie AVAudioSessionCategoryPlayAndRecord immer nur von Ausgabe- zu Eingabe-Ausgabe-Routen, auch wenn die App nicht aufzeichnet. Setzen Sie die Audio-Sitzungskategorie nicht erneut, wenn sie bereits auf AVAudioSessionCategoryPlayAndRecord eingestellt ist oder der Fehler auftritt.

    
Thanh Pham 05.02.2018 08:12
quelle