Sie wollen UIView
zu überlagern ist, aber wenn man nicht CALayer
s nichts dagegen haben mit könnten Sie fügen Sie Ihre Overlay nach dem Export mit AVAssetExportSession
's AVVideoComposition
Eigenschaft. Es verfügt über eine Eigenschaft AVVideoCompositionCoreAnimationTool *animationTool
, mit der Sie animierende CALayer
s zu Ihrer Ausgabe hinzufügen können, obwohl ich denke, dass Sie Pech haben, wenn das Aussehen Ihres Overlays nicht von CABasicAnimation
beschrieben werden kann. Ihr Beispiel einer Anzeigenüberschrift kann möglich sein, obwohl ich mir etwas so einfaches vorstelle wie ein aktueller Zeitzähler nicht. Wenn Sie mit dieser Einschränkung leben können, ist das WWDC 2010-Codebeispiel "AVEditDemo" ein guter Ausgangspunkt.
Wenn Sie mehr Kontrolle benötigen, könnten Sie den Overlay machen UIView
auf die Capture-Frames, [view.layer renderInContext:contextToThenRenderToFrame]
verwenden und dann diese Frames schreiben Datei mit AVAssetWriter
(sobald Sie Frames Speicher erfassen können Sie nicht mehr AVCaptureMovieFileOutput
verwenden).
Warnung: Die Bilder, die Sie erfassen, können möglicherweise nicht mit einer gleichmäßigen Rate ankommen und hängen von der Umgebungsbeleuchtung und sogar von der Systemlast ab. Wenn sich Ihr Overlay schneller ändert als das Video, müssen Sie die Frames in der zweiten Lösung wiederholen. Dies wird für Sie von AVVideoComposition
in der ersten Lösung behandelt.
P.S. Lösung zwei ist fummelig, aber ohne ins Detail zu gehen, scheint iOS7 dies viel einfacher gemacht zu haben.
Hmmm gute Frage. Ich würde denken, dass Sie keine Ebene hinzufügen müssen, um eine Ansicht hinzuzufügen. Vielleicht beinhaltet dies auch eine gewisse Kompostierung der Überlagerung auf den Videoeingang.Will etwas denken ... – Cocoadelica
Ja, das scheint der Ansatz zu sein, fügen Sie sie in einen Puffer von einer Art (hohe FPS halten), wo Kompostierung der CALayers auftreten kann. nur nicht sicher, wo ich anfangen soll .. danke – theiOSDude
Ich bin daran interessiert, eine Antwort zu finden, da es mit etwas in Verbindung steht, an dem ich gerade arbeite. Wird aktualisiert, sobald ich Fortschritte mache. – Cocoadelica