Die AVPlayer-Wiedergabe schlägt fehl, während AVAssetExportSession ab iOS 10 aktiv ist

8

AVPlayer wird nach dem Zufallsprinzip nur Audio wiedergeben und nicht die Videospur anzeigen ...

Das korrekte Abspielen von Video mit AVPlayer , während eine aktive Komprimierungssitzung von AVAssetExportSession:exportAsynchronouslyWithCompletionHandler jetzt fehlschlägt. Es scheint, dass es eine gewisse Instabilität verursacht, die so lange anhält, bis die App in den Hintergrund tritt und zurückkommt.

Untersuchen von AVURLAsset , wenn die Videowiedergabe fehlschlägt, gibt es eine Videospur, obwohl keine Videoausgabe vorliegt. Ich bekomme auch keine Fehler vom Compressor oder den anderen Playback-Komponenten ... Das Problem tritt auch noch für eine Weile auf, nachdem die Kompressionssession zurückgekehrt ist.

Ich habe versucht, das Threading auf unterschiedliche Weise ohne Erfolg durchzuführen.

Es scheint, dass ab iOS 10 etwas unter der Haube passiert, was zu einem Konflikt zwischen beiden Prozessen führt ...

    
Andres Canella 18.09.2016, 17:06
quelle

2 Antworten

8

Gerade von Apple DTS gehört. Sie stimmen auch zu, dass dies auf einen Apple iOS Bug hinweist und forderten mich auf, es zu loggen.

Ich habe die Verwendung von AVAssetExportSession ganz weggelassen und das Problem gelöst. Also ruft AVAssetExportSession in Kombination mit anderen AV-Methoden auf, was die Instabilität von iOS verursacht.

In meinem Fall habe ich AVAssetExportSession für die Post-Capture-Komprimierung verwendet. Also habe ich stattdessen AVAssetWriter verwendet, um jeden Frame in Echtzeit auf das benötigte Format abzuspielen ...

Dies sollte bald von Apple hoffentlich behoben werden.

    
Andres Canella 21.09.2016 00:33
quelle
1

Ich habe eine Lösung für mein Problem gefunden. Wie Sami sagte, scheint das Problem in AVVideoCompositionCoreAnimationTool zu liegen, mit dem ich mein Video mit Wasserzeichen versehen habe. Ich wechselte zu einem CIFilter, der sowieso sauberer Code hatte.

Ich habe alles mit CoreAnimationTool entfernt und dieses verwendet (mixComposition ist meine AVMutableComposition):

%Vor%

und dann in der AVAssetExportSession hinzugefügt:

%Vor%

Hoffe, dass es jemandem hilft!

    
Ethan 30.09.2016 08:20
quelle