Ich verwende den pixelBufferPool innerhalb eines AVAssetWriterInputPixelBufferAdaptor, um Pixel-Puffer zur Verwendung mit der append-Methode zu erstellen. Nach dem Erstellen von 4 Puffern wird die Eigenschaft pixelBufferPool zu NULL;
Ich habe meine Schreiber, Eingabe und Adapter wie folgt eingerichtet:
%Vor%und ich gebe Pixel-Puffer damit aus:
%Vor%Wenn ich den Pixel-Puffer übergeben habe, um pixelPuffer anzufügen, gebe ich den Pixel-Puffer mit CVPixelBufferRelease frei. Zu keinem Zeitpunkt, bevor dies NULL geht, rufe ich markAsFinished, endSessionAtSourceTime oder finishWriting auf. Außerdem geht der Adapter selbst nicht NULL.
Die meisten Posts, die ich lese, sprechen davon, dass der Pool aufgrund eines falsch konfigurierten Adapters von Anfang an abwesend ist, aber meiner ist da, aber nur für kurze Zeit. Hat noch jemand dieses Verhalten gesehen?
Ich hatte das gleiche Problem. Wie ich herausgefunden habe, passiert das, wenn einige der CMTime
s, die du in appendPixelBuffer:withPresentationTime:
gesetzt hast, gleich sind. Dies kann beispielsweise passieren, wenn Sie CMTimeMakeWithSeconds
mit einer zu groben Zeitskala verwenden.
Tags und Links iphone ios avassetwriter