Was sind die besten Codecs und Kodierungsoptionen für ein Bildsequenzvideo?

Ich versuche, aus einer Bildsequenz ein Video zu machen - wobei jeder Frame eine Sekunde dauert.

Die Bildsequenz enthält dasselbe Objekt, das aus unterschiedlichen Entfernungen aufgenommen wurde. Ich vermute, dass die meisten Standard-Videokonverter für Bewegung optimiert sind, aber in diesem Szenario muss ich die geringste Dateigröße erhalten, ohne die Bildrate zu ändern.

Welcher Codec (H.264, VP8, VP9) bietet mir das beste Verhältnis von Größe zu Qualität?

Gibt es auch Flags für H.264, die ich aktivieren kann, um für diesen Fall zu optimieren?

Welche Software verwendest du und in welchem ​​Format sind deine Dateien?
@LetTheWritersWrite Ich verwende VirtualDub, um ein Video aus dem Video zu machen, und codiere dann mit der Handbremse, um es aktuell .avizu codieren . Als Format benötige ich entweder oder.avi.mp4mp4webm

Antworten (2)

Ich mache gelegentlich ein Video aus Diabildern. Ich finde, dass ich die beste Qualität und Komprimierung erhalte, indem ich die Bilder in die Timeline in Ihrem bevorzugten Video-Editor (ich verwende Vegas Pro 13) einfüge, als Bewegungs-JPEG* speichere und dann ffmpeg verwende, um das in H264 zu konvertieren. Ich verwende -crf 28, was in Handbrake wahrscheinlich als "konstante Qualität" bezeichnet wird. Bei einer Auflösung von 1024 x 768 bekomme ich leicht Bitraten unter 100 kbps und sie sehen großartig aus. Sie können den crf-Wert erhöhen, um eine stärkere Komprimierung zu erzielen, oder ihn verringern, um eine bessere Qualität zu erzielen, sodass Sie eine Feinabstimmung nach Ihrem Geschmack vornehmen können.

Mit dieser Methode oben würde ich wetten, dass H264 und VP8 vergleichbar sind. VP9 wird wahrscheinlich besser sein, aber es funktioniert nicht mit allem und das Codieren dauert viel länger.

Meine Theorie warum das funktioniert:

Motion JPEG ist nur eine Intra-Frame-Komprimierung. Jeder einzelne Frame wird als Bild komprimiert und dann dem Stream hinzugefügt; es gibt keine Inter-Frame-Komprimierung (Komprimierung zwischen Frames). Es hat keine I-Frames oder ähnliches kompliziertes Zeug. Für eine volle Sekunde in Ihrem Video sind also alle Frames identisch, nicht nur "sehen gleich aus". Sie sind technisch identisch.

H264 hat dann viel Kraft, um das Bewegungs-JPEG zu komprimieren. Es sieht eine Reihe identischer Frames, speichert dann das erste Frame vollständig und verwendet dann nahezu datenlose "Referenzframes" für den Rest.


*Motion JPEG ist eine relativ große Datei. Wenn ich eine Folienpräsentation aufzeichne, kodiere ich zufälligerweise zunächst als bewegtes JPEG, da der größte Teil der Präsentation aus statischen Folien bestehen wird.

VP9 bietet Ihnen das beste Verhältnis von Qualität zu Größe, aber Sie können auch mit H.264 ziemlich gute Ergebnisse erzielen.

Um die Effizienz der Komprimierung zu maximieren, stellen Sie, wenn jedes Bild genau eine Sekunde lang aktiv ist (oder genau zwei Sekunden oder genau drei Sekunden oder genau usw.), die Bildrate auf 1,00 FPS ein und weisen den Encoder an, P nicht zu verwenden -Frames oder B-Frames (auch bekannt als "Referenzframes") und setzen Sie Ihren GoP auf 1. Führen Sie danach die Codierung mit konstanter Qualität aus und verwenden Sie einen Ratenfaktor, der Ihnen ein akzeptables Qualitätsniveau bei einer akzeptablen Dateigröße bietet.

Weisen Sie den Encoder an, keine P-Frames oder B-Frames (AKA "Referenzframes") zu verwenden --> I-Frames sind die kanonischen Referenzframes. P- und B-Frames sind vorhergesagte Frames und können in modernen Codecs auch als Referenz für andere P- und B-Frames dienen. Bei einer GOP von 1 gibt es keine Bewegungsschätzung/-kompensation und die Komprimierung wird schlechter. Außerdem können einige Player ein Video mit 1 FPS nicht verarbeiten. 5tendenziell das sichere Minimum. Zumindest bei x264 nehmen identische vorhergesagte Frames sehr wenig Platz ein, daher ist das Erhöhen der Framerate kein großes Problem.
Ein FPS von 1 dürfte, wie schon gesagt, nicht abgespielt werden, würde dann auch nicht viel bringen gegenüber so etwas wie 15. Wenn 15 Frames identisch sind, lässt sich die richtige Einstellung sehr gut komprimieren.