Wofür wird -crf in ffmpeg verwendet?

19

Beim Konvertieren eines Arrays von JPEGs in eine Videodatei (Ogg-Format) habe ich die Option -crf verwendet. Was sind die gültigen Bereiche für -crf? Zur Zeit benutze ich 23.

Ich kann das Lesezeichen, das ich gelesen habe, nicht finden, um zu wissen, was diese Flagge bewirkt, und ich habe einige Zeit damit verbracht, herum zu googeln.

Dies sind die Argumente, die ich im Moment verwende:

-f image2 -r 10 -i " + _sourcePath + @"\img%05d.jpg -crf 18  -y -r 10 " + _destPath + "\\" + _filename + ".ogg"
Andrew Simpson
quelle
1
Ich weiß nichts über diesen Befehl, aber er ist hier sehr gut dokumentiert: ffmpeg.org/ffmpeg.html .
Ben Plont
1
Verwenden Sie libx264 (für H.264-Video) oder libvpx (für VP8-Video)? Bitte zeigen Sie Ihren Befehl ffmpeg und die vollständige Konsolenausgabe.
Llogan
Hallo, entschuldige die Verzögerung. Musste mit dem Hund spazieren gehen. Ich werde meine Frage ändern. Vielen Dank
Andrew Simpson
1
Die Frage ist also, ob Sie diese Frage für CRF eher allgemein halten möchten oder ob Sie ein bestimmtes Problem haben, bei dem Sie Hilfe benötigen. Im letzteren Fall müssten wir die vollständige Befehlszeilenausgabe (dh alles von "ffmpeg version ..." bis zum letzten Bit) und den tatsächlich verwendeten Befehl erhalten, aber die vorhandenen Antworten würden leider unbrauchbar. Möglicherweise möchten Sie eine neue Frage stellen, wenn Sie vor einem konkreten Problem stehen.
Slhck
@slhck Hallo, du hast absolut recht. Ich muss lernen, in Zukunft spezifischer und umfassender zu sein. Da es Ihre Antwort war, entsprach es meinen Bedürfnissen mehr als die aller anderen, aber alle anderen waren auch informativ. Ich werde in Zukunft vorsichtiger vorgehen :) Vielen Dank für Ihre Zeit. Sehr geschätzt.
Andrew Simpson

Antworten:

18

Das bezieht sich auf den Constant Rate Factor ( crf).

Wie andere bereits betont haben (Danke an alle), hängen die Werte davon ab, welchen Encoder Sie verwenden.

Für x264 ist Ihr gültiger Bereich 0-51:

Der Bereich der Quantisiererskala liegt zwischen 0 und 51 : Dabei ist 0 verlustfrei, 23 ist Standard und 51 ist am schlechtesten möglich. Ein niedrigerer Wert ist eine höhere Qualität und ein subjektiv vernünftiger Bereich ist 18-28. Betrachten Sie 18 als visuell verlustfrei oder fast verlustfrei : Es sollte genauso oder fast gleich wie die Eingabe aussehen, ist aber technisch nicht verlustfrei.

Für vpx ist der Bereich 4-63(wie @ sebastian-hoffner antwortete):

Standardmäßig kann der CRF-Wert zwischen 4 und 63 liegen, und 10 ist ein guter Ausgangspunkt. Niedrigere Werte bedeuten bessere Qualität.

In beiden Fällen ist niedriger besser . Nach meiner Erfahrung sehe ich x264 viel häufiger.

Slhcks schamloser Plug- Link (ein SU-Mod) scheint einige gute Informationen zu haben.

Nerdwaller
quelle
Bereich für VPX ist von 0-63 nicht 4-63, empfohlene Rate ist 15-30
Suhayb
3

Das crf-Flag gewährleistet eine variable Bitrate für konstante Qualität, wenn ich die unten verlinkte Seite richtig verstehe. Der Standardbereich liegt zwischen 4 und 63, kann jedoch weiter optimiert werden.

Werfen Sie einen Blick auf https://trac.ffmpeg.org/wiki/vpxEncodingGuide für weitere Informationen.

Sebastian Höffner
quelle
Ich bin ein wenig verwirrt darüber, wir verlinken beide auf dieselbe Site und jede Seite sagt etwas anderes (Bereiche, das heißt). Auf jeden Fall sehen beide für mich legitim aus, deshalb bin ich ein wenig verblüfft.
Nerdwaller
Hallo, danke dafür. Ich möchte die Qualität des Videostreams verbessern, damit ein niedriger CRF dies tut.
Andrew Simpson