ffmpeg libx264 ohne Qualitätsverlust neu kodieren?

Gemäß der Dokumentation für die Codierung libx264 (h264) können wir eine Voreinstellung von sehr schnell, schneller, schnell, mittel, langsam usw. verwenden. https://trac.ffmpeg.org/wiki/Encode/H.264

...für eine Codierung mit konstanter Qualität sparen Sie einfach Bitrate, indem Sie eine langsamere Voreinstellung wählen.

Während also eine konstante Qualität verwendet wird, hat eine langsamere Voreinstellung keinen Einfluss auf die Videoqualität, aber sie kann die Dateigröße kleiner komprimieren.

Dies bedeutet theoretisch, dass es möglich sein sollte, ein mit der Voreinstellung „sehr schnell“ komprimiertes Video aufzunehmen und es mit „langsam“ erneut zu komprimieren – was zu einer kleineren Datei ohne Verlust der Videoqualität führt.

Hat das schon mal jemand gemacht oder weiß wie das geht?

Mir ist nicht klar, warum Sie komprimieren und erneut komprimieren würden - wenn "langsam" Ihnen die gewünschte Größe und Qualität liefert, warum dann in zwei Schritten? Was glauben Sie, was Sie durch den ursprünglichen „sehr schnellen“ Schritt gewinnen?
@JimMack Warum gehen Sie davon aus, dass wir neue oder originelle Videos komprimieren? Wir haben Hunderte älterer Videos, die mit weniger optimaler Komprimierung erstellt wurden, und es wäre gut, ihre Größe jetzt zu reduzieren.

Antworten (2)

Sie haben ein Missverständnis darüber, wie die Komprimierung funktioniert. Bei allen außer einigen wenigen spezialisierten Arten der verlustbehafteten Komprimierung verlieren Sie immer noch zusätzliche Qualität, wenn Sie etwas ein zweites Mal komprimieren, selbst in einer viel höheren Qualitätsstufe als bei früheren Codierungen.

Die Verwendung einer langsameren Codierung aus derselben Originalquelle mit konstanter Qualität führt häufig zu einer kleineren Datei mit ähnlicher Qualität. Wenn Sie jedoch die bereits komprimierte Version erneut codieren, erhalten Sie immer noch ein Video mit geringerer Qualität aufgrund von Qualitätsverlusten der zweiten Generation vom zweimaligen Komprimieren.

Ich bin neugierig, was sind diese spezialisierten Codecs, die Sie erwähnen? Ich habe noch nie einen verlustbehafteten Codec gesehen, der beim erneuten Komprimieren mit derselben Codierung nicht mehr Informationen preisgibt.
@ProfessorSparkles - Ich vergesse welche, ich bin mir nicht einmal sicher, ob sie für Videos verwendet werden und es ist eine begrenzte Anzahl von Dingen, die Sie ohne weiteren Qualitätsverlust tun können. Ich werde versuchen, etwas zu graben, um sie wieder zu finden. Ich weiß, dass sie nicht sehr häufig verwendet werden, weil die Komprimierung nicht so gut ist, aber ich weiß, dass sie existieren.
Der wichtige Begriff ist Idempotenz . Anscheinend schaffen einige JPEG- und JPEG-2000-Implementierungen dies tatsächlich für bestimmte Neukomprimierungen. Soweit ich weiß, macht das kein Algorithmus zu 100 %, aber einige können es manchmal.

Nur um ein bisschen zu der richtigen Antwort von AJ Henderson hinzuzufügen. Sie können mit h264 verlustfrei komprimieren, dies ist das verlustfreie Vorhersageprofil und wird durch Codierung mit einer CRF-Einstellung von 0 erreicht.

Obwohl Sie auf diese Weise eine verlustfreie h264-Komprimierung erhalten, erhalten Sie am Ende eine größere Datei als Ihre Quelldatei. Die verlustbehaftete Komprimierung kann nicht zweimal durchgeführt werden, ohne dass bei jeder Iteration mehr Informationen verloren gehen. Sie besagt bereits, dass sie an sich "verlustbehaftet" bei jeder Codierung Informationen verliert, daher werden nur bei einer verlustfreien Codierung alle Informationen erhalten, und das ist die CRF 0-Einstellung (wodurch riesige Dateien erzeugt werden).

Was Sie als konstante Qualität lesen, bedeutet nur, dass Sie eine konstante Bitrate haben und x264 die Bitrate nicht ändert, um mehr Informationen in bestimmten Frames zu erhalten oder weniger Platz zu verbrauchen, wenn nicht so viel Platz zum Speichern der angegebenen Informationen benötigt wird der Rahmen.

Davon abgesehen, wenn die Codierungen, die Sie haben, von hoher Qualität sind und keine sichtbaren Artefakte vorhanden sind, können Sie sie möglicherweise neu komprimieren, wenn der Speicherplatz hier von größter Bedeutung ist. Allerdings gehen dabei Informationen verloren, die möglicherweise in ferner Zukunft nützlich sein könnten, um Aspekte des Videos zu verbessern, die derzeit nicht relevant sind.