Vorhersage der Dateigröße eines Huffyuv-Codec-Videostreams

Ich mache gerne viele Vergleiche und Überprüfungen, bevor ich einen Codec auswähle und seine Einstellungen auswähle.

Es gibt nur wenige Einstellungen mit HuffYUV, aber noch wichtiger ist, dass ich Probleme habe, die Größe von Videodateien zu bestimmen.

Ist es bei gegebener Pixelbreite, -höhe und Pixelformat möglich, eine Dateigröße für ein mit dem verlustfreien HuffYUV-Codec codiertes Video vorherzusagen?

Ich möchte einen einfachen Konverter vorbereiten, um abzuschätzen, wie viel Speicherplatz Stunden, Minuten, Sekunden benötigt;)

Welche Formel kann ich verwenden? Mir geht es gut, auch wenn Sie mir ein komplexes Modell vorwerfen, ich bin irgendwie ein Mathe-Typ.

ps: Ich weiß, mein Englisch ist schlecht und ich bin auch etwas spät dran. Wenn ihr also denkt, dass diese Frage besser bearbeitet werden könnte, könnt ihr das gerne tun; D

Antworten (2)

Die Antwort ist nein. Neben den Rahmenabmessungen kommt es auf die inhaltliche Komplexität an. Ohne das Video zu scannen und sozusagen einen ersten Durchgang durchzuführen, ist es nicht möglich, die Ausgabegröße vorherzusagen. Ein Video, das aus einer Diashow mit sehr einfachen Textfolien besteht, lässt sich viel einfacher komprimieren als Szenen aus dem geschäftigen Stadtleben usw.

Am nächsten kommen Sie einer Vorhersage, wenn Sie einige repräsentative Segmente aus der Quelldatei codieren und diese Bitraten vergleichen. Wenn zwischen den Bitraten der verschiedenen codierten Segmente kein großer Unterschied besteht, können Sie für die endgültige Ausgabe eine Bitrate in diesem Bereich annehmen. Natürlich kann diese Methode keine anomalen Segmente im Video mit sehr hoher oder niedriger Komplexität im Vergleich zum Rest berücksichtigen, daher ist die Auswahl der Stichprobe wichtig.

Ich verstehe, also denke ich, dass in diesem Fall ein anderer Ansatz erforderlich sein wird: Nehmen Sie Tonnen von Segmenten von Videos unterschiedlicher Art, alle in derselben Größe, z. B.: Full HD wäre ein guter Ausgangspunkt. Konvertieren Sie sie alle mit huffyuv für eine kurze Zeit, sagen wir nicht länger als 3 Minuten, führen Sie eine statistische Analyse der Dateigrößen durch, um einen einfachen Durchschnitt, ein Maximum und eine Art "aromatisierten Durchschnitt" für Videos mit Text zu erhalten, schwer Medien und verschiedene Inhaltskategorien. Holen Sie sich Ihre Koeffizienten, bereiten Sie einen einfachen Rechner vor, der auf diesen Koeffizienten basiert. :)
Mein Ansatz erfordert das Codieren mehrerer Segmente derselben Dauer innerhalb desselben Videos, um a) die resultierenden Bitraten und b) die Varianz der Bitrate über die Segmente hinweg zu überprüfen. HuffYUV verwendet die Intraframe-Komprimierung, sodass keine Segmentgröße von 3 Minuten verwendet werden muss. Machen Sie es in der Tat näher an ein paar Sekunden.
Danke für den Vorschlag, ich bin versucht, einige Medien hierher zu bringen und die Tests zu machen. Ja, Ihr Ansatz ist der richtige, um das Ergebnis eines einzelnen Videos zu erhalten und besser zur ursprünglichen Frage zu passen. Mein letztes Ziel war jedoch zu verstehen, wie ein Huffyuv-Video im Durchschnitt dauert.
Wäre nett, wenn Sie mir beim Einrichten der Testumgebung helfen könnten, was ist Ihre Empfehlung? 5 Sekunden könnten funktionieren? oder 10, um mehr Frames abzutasten? Gibt es eine Möglichkeit, hier einen Chat zu starten, oder muss ich etwa 7-8 Kommentare erreichen?
5 Sekunden sind gut. Ich bin kein Programmierer, aber wenn Sie es sind, können Sie ein Skript schreiben, um N Zufallszahlen von 0 bis D-5 auszuwählen, wobei D die Dauer Ihrer Eingabedatei ist. Führen Sie dann einfach ffmpeg -ss T -t 5 -i input -c:v huffyuv -an "input-T.avi" aus, wobei T die Zahlen sind, die Sie nacheinander generiert haben. Es liegt an Ihnen, welche statistische Analyse Sie mit den resultierenden Dateien durchführen möchten, aber Mean und SD kommen mir in den Sinn. Konsultieren Sie vielleicht die Statistik SE.
Sie sprechen also davon, eine einzelne Datei zu verwenden, aber viele Male zufällig 5 Sekunden zu schaben, um ein konsistentes Ergebnis zu erzielen? Ich habe über so etwas nachgedacht, ich meine, zu vermeiden, nehmen wir sagen wir 100 Filme, aber die ersten 5 Sekunden, weil in den meisten Fällen nur geschriebener Text und schwarzer Hintergrund wegen der anfänglichen Credits bestehen. PS: Ja, ich kann etwas codieren ;)
Der 100-Dateien-Ansatz scheint nicht sinnvoll zu sein - es ist, als würde man den Nährwert eines Lebensmittels berechnen, indem man den Nährwert von Obst, Fleisch, Getreide, Nüssen usw. mittelt. Sogar bei Früchten gibt es einen signifikanten Unterschied im Zuckergehalt, daher ist es einfach nicht so nützlich.
Was ich erreichen möchte, ist ein etwas breiterer Durchschnitt dessen, was Huffyuv pro Minute benötigt. Einige Leute sprechen von etwa 400 MB in Full HD. Ich möchte diese Theorie überprüfen und diese mathematischen Informationen verwenden, um ein Worst-Case-Szenario für Speicheranforderungen vorherzusagen.
Das Worst-Case-Szenario ist ein Video mit viel Rauschen. Nehmen Sie ein beliebiges Video auf, fügen Sie zufälliges Rauschen mit dem ffmpeg-Filter hinzu und codieren Sie es in HuffYUV. Eine Textdiashow ist das beste Szenario. Ein statisches Kameravideo mit sprechendem Kopf ist ein niedrig-moderates Szenario.

Für 1080p bleibe ich oft bei ... (80 Sekunden) - entspricht nahe der 4-GB-Grenze.

Es ist realistisch anzunehmen, dass bei 1080p etwa 3,0 - 3,2 GB pro Minute liegen, denke ich.