2015-12-11 13 views
11

Bei der Wiedergabe eines Tons von einem iOS-Gerät, das über AirPlay mit Apple TV verbunden ist (unter Verwendung von iOS9.2), wird die erste Sekunde der Tonwiedergabe abgeschnitten. Dieses unerwünschte Verhalten ist nicht app-spezifisch, sondern systemweit (zB Apples offizielle Apps haben diesen Bug ebenfalls).Wie kann der Cutoff beim Abspielen von Audio mit Airplay reduziert werden?

Siehe https://forums.developer.apple.com/thread/28086

Gibt es eine Abhilfe, wo die volle audio file gespielt werden kann? Zum Beispiel blank sounds vor dem Abspielen der Datei hinzufügen? Oder ändern, wie der API heißt? Oder sollte ich auf Apple 's offizielle Reparatur warten?

+0

Sie sollten jedenfalls für das Update warten. Aber bedenkt diesen Hack. Wenn Ihr Audio für die ersten zwei Sekunden nicht ertönt, d. H., Fügen Sie ein leeres Audio mit einer Länge von zwei Sekunden zu Ihrem ursprünglichen Audio hinzu, so dass der zwischen der App und dem TV synchronisierte Schluckauf betrogen werden kann. Verwenden Sie Garage Band dafür. Oder verwende Threading in deiner App wie GCD. dispatch_async für asynchrone Operationen. –

+0

Ich habe gerade einen Test mit der neuesten Version (ab 20160217) von iOS 9.3 Beta 3 (13E5200d) durchgeführt. Der Cutoff erscheint nur beim ersten Mal und nicht bei der nachfolgenden Audiowiedergabe. Dies steht im Gegensatz zu iOS 9.2, das bei jeder Audiowiedergabe auftritt. –

Antwort

0
  1. Dieses Problem tritt anscheinend bei keiner aktuellen iOS-Version auf, daher besteht mein erster Vorschlag darin, ein Upgrade durchzuführen.
  2. Wenn Sie iOS 9.2 verwenden müssen, würde ich vorschlagen, eine leere Audiodatei für 2 Sekunden abzuspielen und dann Ihre vollständige Audiodatei zu starten.

Beispielcode:

audioPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

[[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(playEnded:) 
                name:AVPlayerItemDidPlayToEndTimeNotification 
               object:[audioPlayer currentItem]]; 

- (void)playEnded:(NSNotification *)notification 
{ 
    // Start the full audio file here 
}