2010-11-24 9 views
11

Ich habe eine AVMutableComposition mit einer Videospur und ich möchte ein Standbild in die Videospur hinzufügen, um für eine bestimmte Zeit angezeigt zu werden. Das Standbild ist einfach ein PNG. Ich kann das Bild als Asset laden, aber das ist es auch, denn das resultierende Asset hat keine Spuren und kann daher nicht einfach mit den Methoden insertTimeRange… eingefügt werden.Wie füge ich ein Standbild zu einer AVComposition hinzu?

Gibt es eine Möglichkeit, Standbilder zu einer Komposition hinzuzufügen? Es scheint, als ob die Antwort irgendwo in Core Animation ist, aber die ganze Sache scheint ein bisschen über meinem Kopf zu sein und ich würde ein Code-Sample oder einige Informationszeiger schätzen.

+0

Haben Sie der Spur, auf der die Fotos erscheinen, leere Zeitbereiche hinzugefügt? Berücksichtigen Sie beim Einrichten der Anweisungen den Track trotzdem so, als wäre dort Inhalt? (Übergang zu und von ihm) – box86rowh

+0

Ich ging nicht am Video Zusammensetzung + Core Animation Route am Ende, ich schuf eine Klasse, um ein Video aus Standbildern zu erstellen und das Video zu verwenden. – zoul

+0

Cool, ich arbeite an einem Projekt, bei dem der Benutzer Video und Fotos nach Belieben mischen kann, also muss der Kompilierungscode flexibel sein. Ich arbeite jetzt das Fotoende in den Code ein. – box86rowh

Antwort

12

OK. Es gibt ein tolles Video namens Bearbeiten von Medien mit AV Foundation von WWDC, die eine Menge erklärt. Sie können Bilder nicht direkt in die Timeline AVComposition einfügen, zumindest habe ich keine Möglichkeit gefunden, dies zu tun. Beim Exportieren oder Abspielen eines Assets können Sie sich jedoch auf eine AVVideoComposition beziehen. Das ist vielleicht kein perfekter Name für die Klasse, da es Ihnen erlaubt, zwischen verschiedenen Videospuren im Asset zu mischen, ähnlich wie AVAudioMix für Audio. Und die AVVideoComposition verfügt über eine animationTool -Eigenschaft, mit der Sie Core-Animation-Layer (CALayer) in den Mix werfen können. CALayer verfügt über eine contents-Eigenschaft, der ein CGImageRef zugewiesen werden kann. Ist in meinem Fall nicht hilfreich, könnte jemand anderem helfen.

+0

Ich beginne gerade mit Videobearbeitung. Wie korrigierst du mich nach deiner Antwort, wenn ich falsch liege, sagst du, dass man zwischen Live-Videoaufnahmen oder nach der Videoaufnahme Ebenen von Bildern wirft? – Nil

+0

Nachdem das Video aufgenommen wurde. 'AVVideoComposition' ist so etwas wie ein Videobearbeitungswerkzeug - eine Art programmierbarer Final Cut Pro, wenn Sie so wollen. Sie können also einige Videosegmente mit einigen Core Animation Layern zusammenfügen. – zoul

+0

Es ist mir gelungen, ein Bild in das aufgenommene Video einzufügen. Aber das ist ok für das Bearbeiten/Einfügen von statischen Objekten in das Video. Was wenn ich mit dem Farbton und der Sättigung und anderen Dingen spielen möchte? und gleichzeitig sieht der Benutzer das Ergebnis, während er aufnimmt. Etwas wie Video Star App im App Store. Ich denke, Echtzeit-Video-Verarbeitung ist die Antwort dafür, aber ich bin mir nicht sicher, ob die Bearbeitung von Frames/Kamera-Eingang eines Videos, bevor der Benutzer es sehen kann, eine gute Idee ist. QQQuite ressourcenintensiv. Jeder Link, auf den Sie für dieses Thema verweisen können? – Nil

0

Ich brauche auch noch Bilder in meiner Zusammensetzung. Meine Denkweise ist ein bisschen anders. Fügen Sie On-The-Fly-Filme von Schwarz anstelle von Bildern ein, wenn Bilder erscheinen sollten (möglicherweise würde ein solches Video ausreichen). Fügen Sie jedem Insert eine Wörterbuchreferenz hinzu, indem Sie die Kompositionszeitbereiche mit den gewünschten Bildern verknüpfen. Wenn der richtige Zeitbereich in meinem Vollzeit-Custom-Compositor eintrifft, ziehen Sie das gewünschte Bild heraus und malen Sie es in den Ausgabe-Pixel-Puffer, wobei Sie die eingehenden schwarzen Frames aus der Komposition ignorieren. Ich denke, das wäre eine andere Art, das zu tun.