Welche Video-Codecs können „adaptive Qualität“ bieten?

Hintergrund:

Ich versuche, verlustfreie Bluray-Tracks ohne großen Qualitätsverlust auf eine speicherfreundlichere Größe zu komprimieren.

Was ich bisher gemacht habe:

Erkunden von Komprimierungsoptionen mit ffmpeg. Hauptsächlich um h264 mit dem Argument -crf.

Beschränkungen:

Linux- und Open-Source-Tools. Bitte schlagen Sie nichts Apple/Microsoft-spezifisches vor.

Frage:

Die meisten Optionen, die ich in Bezug auf die Komprimierung sehe, betrafen Bitraten oder feste Ausgabegrößen. Ich suche einen Video-Codec, der eher eine "Qualitätsschwelle" hat. Es macht mir nichts aus, wenn komplexere Teile des Tracks mehr Bytes benötigen, um die gleiche visuelle Qualität zu liefern. Gibt es so etwas?

Bearbeiten:

Ich habe viel Glück mit dem Argument -qscale und libxvid. Wenn ich keine anderen Vorschläge bekomme, werde ich einfach damit gehen.

Was ist falsch an crf in x264?
Die Dokumentation besagt, dass crf die Laufzeitgeschwindigkeit für die Qualität opfert. Da ich diese Videos möglicherweise auf kleineren Rechnern ausführen könnte, wollte ich sie nicht zu sehr belasten.
Sie können nicht sowohl Qualität als auch Recheneffizienz erreichen. Es gibt einen Kompromiss.
Hast du dir Lagarith oder HuffYUV angeschaut? Ich verwende diese im Allgemeinen zum Speichern von Filmmaterial. Sie sind beide verlustfrei, aber die Komprimierung kann tatsächlich ziemlich gut sein, zugegeben, ich bin mir nicht sicher, wie sie mit h264 verglichen werden. Ich bin mir auch nicht sicher über die Linux-Unterstützung.
Es ist sehr unwahrscheinlich, dass Ihre Bluray-Quelle verlustfrei ist. Einfache Möglichkeit zur Überprüfung: ffplay -vf showinfo. Wenn es B-Frames hat, ist es kein verlustfreies h.264.

Antworten (2)

Mit und x264 (dem besten H.264-Encoder) sind Sie auf dem richtigen Weg -crf, und es sollte die "Qualitätsschwelle" bieten, nach der Sie suchen. CRF wird empfohlen, wenn Sie eine bestimmte Ausgabequalität wünschen und die Größe der Ausgabedatei weniger wichtig ist. Umgekehrt wird die Durchführung einer Zwei-Pass-Codierung mit -b:vempfohlen, wenn Sie auf eine bestimmte Ausgabedateigröße abzielen und die Qualität von geringerer Bedeutung ist.

Die Codierung von HEVC/H.265 mit x265 sollte denselben grundlegenden Richtlinien folgen. Sie erhalten im Allgemeinen eine bessere Komprimierung im Austausch für eine längere Codierungszeit.

1. Wählen Sie eine Voreinstellung

Eine Voreinstellung ist eine Sammlung von Optionen, die ein bestimmtes Codierungsgeschwindigkeit:Komprimierungsverhältnis bereitstellen . Eine langsamere Voreinstellung bietet eine bessere Komprimierung (Komprimierung ist Qualität pro Dateigröße). Die allgemeine Verwendung besteht darin, die langsamste Voreinstellung zu verwenden, für die Sie Geduld haben. Aktuelle Presets in absteigender Reihenfolge der Geschwindigkeit sind: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo. Ignorieren placebo, da es ein Witz und Zeitverschwendung ist (es hilft höchstens ~1%). Wenn die Codierung zu langsam ist, verwenden Sie eine schnellere Voreinstellung.

2. Wählen Sie einen CRF-Wert

Der Bereich für x264 ist 0-51, wobei 0 verlustfrei, 23 der Standardwert und 51 der schlechteste Wert ist. Ein niedrigerer Wert ist eine höhere Qualität. Ein subjektiv gesunder Bereich liegt zwischen 18 und 28. Betrachten Sie ~18 als visuell verlustfrei: Es sollte genauso aussehen wie die Eingabe, ist aber technisch nicht verlustfrei. Das Erhöhen des CRF-Werts um +6 entspricht ungefähr der halben Bitrate, während -6 ungefähr der doppelten Bitrate entspricht.

Allgemein ist es üblich, den höchsten -crfWert zu wählen, der noch eine akzeptable Qualität bietet. Das heißt, wenn die Ausgabe gut aussieht, versuchen Sie einen höheren Wert, und wenn sie schlecht aussieht, wählen Sie einen niedrigeren Wert.

3. Codieren

Verwenden Sie diese Einstellungen für den Rest Ihrer Videos. Sie sollten am Ende alle die gleiche Qualität haben.

Beispiel

ffmpeg -i input -c:v libx264 -preset slow -crf 22 -c:a copy output.mkv

Siehe auch

-ssim 1 -psnrin Ihrer ffmpeg-cmdline misst einige Videoqualitätsmetriken (die nicht immer mit der vom Menschen wahrgenommenen visuellen Qualität übereinstimmen). Kann nützlich sein, um eine Vorstellung davon zu bekommen, wie sehr Ihr Video verstümmelt wird.
Am Ende von 2.: „Allgemein ist es, die höchste Qualität zu wählen“ - sollte wahrscheinlich die niedrigste statt die höchste sein .
@MarianD Behoben, danke. Wow, diese Antwort ist 7 Jahre alt.
Ihre Antworten waren immer überlegen und hilfreich (ich erinnere mich auch an Ihren früheren Namen), danke dafür.

Vielleicht ist dies hilfreich . K-Lite Codec Pack Bei der Installation gibt es ein Paket mit Codecs, damit Sie auswählen können, was am besten zu Ihnen passt. Dies ist die Liste der Codecs: • DirectShow-Videodecodierungsfilter: - ffdshow [Version 1.2.4475] - LAV Video [Version 0.51.3] (- Decodierung von: H264, VC1 (nur progressiv), MPEG2, MPEG4-ASP, MS -MPEG4, MJPEG, VP8, RV40, WMV1/2/3) - On2 VP7 [Version 7.0.10.0] - DScaler5 MPEG-2-Decoder [Version 0.0.6.0 IVTC-Mod]

Ich sehe nicht, wie dies die Frage beantwortet.
K-Lite Codec Pack herunterladen, Optionen in Coder/Decoder finden und das war's. Es besteht die Möglichkeit, die Qualität und die Größe des komprimierten Videos auszuwählen. Die Antwort ist hier, aber ich kürze aus besonderem Grund. Aber gute Antwort von dir
Ihre Antwort wäre hilfreicher, wenn Sie vorschlagen würden, welcher der Codecs den Bedürfnissen des Fragestellers entsprechen würde.