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 ...
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.
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!
Tags und Links avassetexportsession ios10 avplayer