Beschneiden Sie ein Video mit einem sich bewegenden Beschneidungsbereich fester Größe

Ich habe 3840×2160 Videos wo ich eine sich bewegende Person auf der Bühne ausschneiden möchte (zB Musikvideo). Der Schnittbereich ist festgelegt (1080 x 1920). Das Problem ist, dass sich die Person bewegt. Nicht viel, aber in 3min. Video bewegte sich der Zuschneidebereich ein paar Mal.

Beispiel: Rahmen 0–889, Bereich (500,34,1080,1920) – Rahmen 950–1735, Bereich (800,10,1080,1920) – Rahmen 1820–2530, Bereich (600,40,1080,1920)

Ich habe oben einige Beispielnummern gegeben. Die Lösung sollte den Schnittbereich zwischen Frame 889 und Frame 950 interpolieren; Frame 1735 und Frame 1820. Idealerweise möchte ich diese Bereiche in einem visuellen Editor definieren, der es mir ermöglicht, ein Zuschneiderechteck mit fester Größe für die oben angegebenen Frames und Koordinaten zu verschieben.

Optional könnte ich die Zuschneidebereiche auch ohne visuelle Hilfe herausfinden und diese Daten dann verwenden, um das Video in etwas wie ffmpeg zuzuschneiden (obwohl ich nicht weiß, wie man das richtig macht, einschließlich des Interpolationsschritts).

Ich bin auf Linux und habe verschiedene Video-Editoren ausprobiert, aber ihre Zuschneidefilter sind nicht nützlich, um meine Aufgabe zu lösen. Ich habe Windows zur Verfügung, aber im Moment keine kommerzielle Schnittsoftware installiert.

Danke für die Hilfe!

Related video.stackexchange.com/questions/15417/moving-crop-in-video hat eine mühsame, aber praktikable ffmpeg-Befehlszeilenlösung

Antworten (2)

Ich empfehle AVISynth (ein skriptbasierter Videoeditor für VirtualDub) und das DeShaker- Plugin.

Sie können ein Minimum an AVISynth lernen und einfach DeShaker laden, es auf dem Körper der Person stabilisieren lassen und es wird ihnen reibungslos folgen, wenn sie sich bewegen.

Sie haben ein fertiges Produkt, das als Bonus stabilisiert ist.

Sie können auch mehr über AVISynth erfahren, präzise Ausschnitte erstellen, die animiert sind, um der Person zu folgen, und ein perfektes Ergebnis erzielen (basierend auf der Qualität der Eingabe). Sie können Ihre Moves frame- und pixelgenau einstellen, indem Sie Zahlen in das Skript eingeben und das Frame in VirtualDub neu laden.

Es könnte 5 Minuten wert sein. Durchsuchen Sie diese Links, um festzustellen, ob Sie einen anderen Video-Editor ausprobieren möchten.

Wenn einer der aktuellen Video-Editoren, die Sie installiert haben, eine Bildstabilisierung hat, können Sie es versuchen, aber DeShaker ist einer der besseren kostenlosen (seit einem Jahr), die ich verwendet habe.

Danke Rob. Ich hatte gehofft, vorzugsweise eine Lösung für Linux zu bekommen, da dies meine viel leistungsfähigere Maschine ist. Mein Windows-PC ist nicht wirklich für die Videobearbeitung geeignet. Trotzdem werde ich AviSynth überprüfen, wenn alles andere fehlschlägt. In der Zwischenzeit bitte weitere Sachen vorschlagen!
OK, obwohl es möglicherweise eine Portierung von AVISynth gibt, ist das Deshaker-Plugin für Linux nicht verfügbar. Können Sie die Stabilisierung in den vorhandenen Linux-Video-Editoren verwenden, die Person auswählen und auf das bewegte Bild zuschneiden?
Ich habe ein bisschen recherchiert. Grundsätzlich ist die Bildstabilisierung technisch das, was ich brauche, aber die Art und Weise, wie es gemacht wird (zum Beispiel in Blender: youtube.com/watch?v=DpIXqAepfxY ), ist eher ein automatisierter Ansatz. Wie gesagt, ich möchte ein festes Zuschneidefenster manuell verschieben, um eine Person auszuschneiden. Wenn sich die Person nicht bewegt, definiere ich einfach die Position des Schnittfensters für das erste Bild des Videos.
Wenn sich die Person viel bewegt, muss ich für mehrere Frames des Videos neue Schnittfensterpositionen definieren und das Zuschneiden wird zwischen den angegebenen Schnittfensterpositionen interpoliert. Es scheint wirklich einfach zu sein und ich kann es mit VIEL Aufwand nur mit ffmpeg machen. Die gleiche Aufgabe könnte in Sekundenschnelle erledigt werden, wenn man eine GUI hätte, die das Definieren und Verschieben eines festen Zuschneidefensters unterstützt.

Der beste und einfachste (und einzige) Weg, den ich gefunden habe, um dies unter Linux zu tun, ist die Verwendung von OBS mit der Fenstergröße, die auf die gewünschte Größe der Crop-Ausgabe eingestellt ist. Fügen Sie Ihre Videodatei als Eingabequelle hinzu, ordnen Sie die Videoausgabe relativ zum OBS-Fenster so an, dass das gewünschte Rechteck, das Sie anfänglich anzeigen möchten, mit dem OBS-Fenster ausgerichtet ist, und starten Sie die Aufnahme in OBS gleichzeitig mit dem Start der Wiedergabe das Video. Ziehen Sie das Video während der Wiedergabe mit der Maus in Echtzeit herum, sodass der Teil, den Sie sehen möchten, weiterhin mit dem OBS-Fenster ausgerichtet ist. Wenn Sie ein sich langsam bewegendes Motiv haben und nur ein paar langsame Schwenks innerhalb eines 3-Minuten-Fensters benötigen, funktioniert dies sehr gut. Es kann etwas ärgerlicher sein, wenn sich Ihr Erntebereich stark verschiebt.

Wenn Sie nur in einer Dimension zuschneiden müssen (z. B. 1920 x 1080 auf 1080 x 1080), können Sie Ihren Mauszeiger vorübergehend so sperren, dass er sich nur in eine Richtung bewegt, zumindest auf X (bei Wayland bin ich mir nicht sicher). Zum Beispiel:

xinput set-prop 'Microsoft Corporation Microsoft ® Laser Mouse 6000' 'Coordinate Transformation Matrix' 1 0 1 0 0 0 0 0 1

verwende ich mit meiner Hardware (die Idee dazu stammt von https://askubuntu.com/questions/1153697/screen-detection-and-mouse-reverse-xy-axis ). So stellen Sie die normale Mausbewegung wieder her:

xinput set-prop 'Microsoft Corporation Microsoft ® Laser Mouse 6000' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1

Natürlich unterscheiden sich die Details, wenn Sie eine andere Maus haben. Dies ist beim Aufzeichnen Ihres Zuschnitts nützlich, da Sie das Video nicht in eine andere Richtung als die Richtung ziehen können, in die Sie schwenken müssen.