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

7

Hintergrund:

Ich versuche, verlustfreie Blu-ray-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 im Zusammenhang mit der 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 der Spur mehr Bytes benötigen, um die gleiche visuelle Qualität zu erzielen. Gibt es so etwas?

Bearbeiten:

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

Jacks_Gulch
quelle
1
Was ist los mit crf in x264?
Gyan
Die Dokumentation besagt, dass crf die Laufzeitgeschwindigkeit für die Qualität opfert. Da ich diese Videos möglicherweise auf kleineren Computern abspielen könnte, wollte ich sie nicht zu sehr belasten.
Jacks_Gulch
2
Sie können nicht sowohl Qualität als auch Recheneffizienz erzielen. Es gibt einen Kompromiss.
Gyan
Haben Sie sich Lagarith oder HuffYUV angesehen? Ich verwende diese normalerweise zum Speichern von Filmmaterial. Sie sind beide verlustfrei, aber die Komprimierung kann tatsächlich recht gut sein, vorausgesetzt, ich bin mir nicht sicher, wie sie mit h264 verglichen werden. Ich bin mir auch nicht sicher, ob Linux unterstützt wird.
Glenneroo
Es ist sehr unwahrscheinlich, dass Ihre Unschärfequelle verlustfrei ist. Einfache Möglichkeit zu überprüfen: ffplay -vf showinfo. Wenn es B-Frames hat, ist es nicht verlustfrei h.264.
Peter Cordes

Antworten:

6

Mit -crfund x264 (dem besten H.264-Encoder) sind Sie auf dem richtigen Weg 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 von geringerer Bedeutung ist. Umgekehrt -b:vwird empfohlen , eine Codierung mit zwei Durchläufen mit durchzuführen , wenn Sie auf eine bestimmte Größe und Qualität der Ausgabedatei abzielen.

Das Codieren von HEVC / H.265 mit x265 sollte denselben grundlegenden Richtlinien folgen. Im Allgemeinen erhalten Sie 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 Verhältnis von Codierungsgeschwindigkeit zu Komprimierung bereitstellen . Eine langsamere Voreinstellung sorgt für eine bessere Komprimierung (Komprimierung ist die Qualität pro Dateigröße). Im Allgemeinen wird die langsamste Voreinstellung verwendet, für die Sie Geduld haben. Aktuelle Voreinstellungen in absteigender Reihenfolge der Geschwindigkeit sind : ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo. Ignorieren, placeboda 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 liegt zwischen 0 und 51, wobei 0 verlustfrei, 23 standardmäßig und 51 am schlechtesten ist. Ein niedrigerer Wert ist eine höhere Qualität. Ein subjektiv vernünftiger 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 +6 ist ungefähr die Hälfte der Bitrate, während -6 ungefähr die doppelte Bitrate ist.

Im Allgemeinen wird der höchste -crfWert gewählt, der noch eine akzeptable Qualität bietet. Wenn die Ausgabe gut aussieht, versuchen Sie es mit einem höheren Wert. Wenn sie schlecht aussieht, wählen Sie einen niedrigeren Wert.

3. Codieren

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

Beispiel

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

Siehe auch

llogan
quelle
3
-ssim 1 -psnrAuf Ihrem ffmpeg misst cmdline einige Videoqualitätsmetriken (die nicht immer mit der vom Menschen wahrgenommenen visuellen Qualität übereinstimmen). Kann hilfreich sein, um eine Vorstellung davon zu bekommen, wie stark Ihr Video verstümmelt wird.
Peter Cordes
Am Ende von 2.: „Im Allgemeinen wird die höchste Qualität gewählt“ - sollte wahrscheinlich die niedrigste statt die höchste sein .
MarianD
@MarianD Behoben, danke. Wow, diese Antwort ist 7 Jahre alt.
Llogan
Ihre Antworten waren immer überlegen und hilfreich (ich erinnere mich auch an Ihren vorherigen Namen), danke für sie.
MarianD
-3

Vielleicht ist dies hilfreich. K-Lite Codec Pack Bei der Installation gibt es ein Codec-Paket , mit dem Sie auswählen können, welches 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]

Mors Violenta
quelle
1
Ich sehe nicht, wie dies die Frage beantwortet.
Llogan
Laden Sie das K-Lite Codec Pack herunter, finden Sie Optionen im Codierer / Decodierer und fertig. Es besteht die Möglichkeit, die Qualität und die Größe des komprimierten Videos auszuwählen. Die Antwort ist hier, aber ich verkürze insbesondere den Grund. Gute Antwort von Ihnen
Mors Violenta
1
Ihre Antwort wäre hilfreicher, wenn Sie vorschlagen würden, welcher der Codecs den Anforderungen des Fragestellers entspricht.
Stib