Stapelverarbeitung einzelner Frames in Video

Ich bin neu in der Videobearbeitung … und hoffe, dass mich jemand zu der besten Software für meine Bedürfnisse führen kann.

Läuft unter Windows OS. Ich muss ein Video aus Frames im tga-Format erstellen, sie in verschiedene Formate wie .mov oder .avi konvertieren und manchmal mit verschiedenen Komprimierungstypen (keine, Animation, JPEG).

Ich muss auch in der Lage sein, die Bildrate einzustellen und eine Audiospur hinzuzufügen.

Die Software, nach der ich suche, sollte in der Lage sein, die Jobs stapelweise zu verarbeiten, da ich viele Frames in verschiedenen Szenen/Ordnern habe.

Aus der Lektüre, die ich gemacht habe, würde ich sagen, dass Virtualdub der richtige Weg ist, aber ich würde gerne wissen, welche anderen Alternativen es gibt.

Ich hoffe, ich kann hier etwas mehr Einblick gewinnen.

Danke.

Antworten (4)

Hier sind einige Optionen:

  • VirtualDub kann Standbilder mit Videos verbinden. Wählen Sie einfach das erste Bild aus, wählen Sie eine Komprimierung und speichern Sie das Video. Das sind einige Mausklicks pro Ordner, aber keine automatische Stapelverarbeitung.
  • FFmpeg kann dasselbe tun, aber Sie müssen für jeden Ordner eine Befehlszeile schreiben, die dann automatisch im Stapel verarbeitet werden kann.

Zu FFmpeg siehe Wie kodiere ich einzelne Bilder in Filme? Zusätzliche Information:

  • Verwenden Sie einen aktuellen ffmpeg-Build. Die Entwicklung ist sehr aktiv und die Online-Dokumentation entspricht dem aktuellen FFmpeg-Code. Windows-Benutzer können es von Zeranoe FFmpeg-Builds erwerben .

  • Deklarieren Sie Ihre Bildrate ( -framerateOption) als Eingabeoption. Die Ausgabe verwendet dann dieselbe Framerate, oder Sie können sowohl eine Eingabe- als auch eine Ausgabe-Framerate mit -r; Zum Beispiel, wenn Sie die Eingabeframes mit einer bestimmten fps lesen müssen und eine Standardausgaberate benötigen. Beachten Sie, dass Frames bei nicht übereinstimmenden Eingabe- und Ausgabe-Frameraten einfach gelöscht oder dupliziert werden. Standard ist -framerate 25, wenn Sie diese Option weglassen.

  • Zusätzliche Streams (Audio, Video, Untertitel usw.) können einfach hinzugefügt werden, und ein vollständiger Befehl könnte folgendermaßen aussehen:

    ffmpeg -framerate 24 -pattern_type glob -i 'frames*.png' -i audio.aac -c:v libx264 -c:a copy -preset slower -crf 23 -movflags +faststart output.mp4
    
  • Siehe Using ffmpeg with decimal wildcard für zusätzliche Bild-zu-Video-Beispiele und FFmpeg Wiki: H.264 Encoding Guide und FFmpeg Wiki: AAC Encoding Guide , um eine gute Ausgabequalität zu erhalten.

Wahrscheinlich gut, um eine viel höhere Qualität als die Standardqualität für temporäre Dateien zu verwenden, die Sie einem NLE zuführen, bevor Sie eine endgültige Codierung zur Veröffentlichung vornehmen.
@PeterCordes Guter Punkt, aber ich habe in der Frage keinen Verweis auf ein NLE gesehen, aber wenn die Datei darin verwendet werden soll, empfehle ich ein komprimiertes verlustfreies Format wie UT Video . ffmpegkann es nativ decodieren und codieren, und Premiere kann es, nachdem UT Video installiert wurde.
Wie ist die Unterstützung für verlustfreies h.264 in der Nicht-ffmpeg-Welt der kommerziellen Software? Ich arbeite an einer Frage + Antwort zu guten verlustfreien Formaten für diesen Job, mit einigen Benchmark-Tests. Bisher sind verlustfreies x264 und utvideo die beiden guten Möglichkeiten, wie ich in meiner Antwort auf diese Frage vorgeschlagen habe.
@PeterCordes Ich bin mir über die aktuelle Situation nicht sicher. Ich habe es seit Ewigkeiten nicht mehr in einem NLE getestet und werde es wegen Reisen für mindestens 10 Tage nicht können.

Um die Antwort von Fred42vid zu erweitern (ich werde nicht auf VirtualDub eingehen, da 1. ich es nicht kenne und 2. es ein GUI-Tool ist und daher relativ einfach zu verwenden sein sollte): Wenn die Bilder image001.jpg heißen, image002 .jpg usw. können Sie ffmpeg wie folgt verwenden:

ffmpeg -f image2 -r 16 -i image%03d.jpg -c:v libx264 output.mp4

Kontrollieren Sie die Anzahl der Bilder pro Sekunde, indem Sie ändern -r 16: So erhalten Sie 16 Bilder pro Sekunde (Film verwendet 24 fps, PAL-Video verwendet 25, NTSC verwendet 29,97).

%03dbedeutet, dass ffmpeg nach inkrementellen Bildern sucht, beginnend bei 001 bis 999. %02dwürde Sie 01-99 erhalten.

Wenn Sie die so benannten Dateien nicht haben, können Sie Folgendes verwenden:

ffmpeg -f image2 -pattern_type glob -r 16 -i '*.jpg' -c:v libx264 output.mp4

Dadurch werden die JPG-Dateien in alphanumerischer Reihenfolge eingegeben.

Informationen zum Codieren des Videos mit x264 finden Sie in dieser Anleitung .

Im speziellen Fall der JPEG-Eingabe können Sie dies verlustfrei tun, indem Sie die Daten einfach in einen MJPEG-Stream muxen, was eine Menge CPU-Zeit spart.

Wie kann ich eine JPG-Bildsequenz verlustfrei in ein Video in ffmpeg codieren?

Sie führen wahrscheinlich eine Art Videobearbeitung an den Ergebnissen durch, sparen Sie also nicht an der Qualität der von Ihnen erstellten Dateien. Prob. Verwenden Sie am besten verlustfreies x264 ( ffmpeg -i input -c:v libx264rgb -preset ultrafast -qp 0) oder Utvideo für Ihre Nicht-JPEG-Eingaben.