H.264-Multipass-Codierung mit FFmpeg

1

Ich möchte ein Video in H.264 mit Multi-Pass kodieren. Ich habe es versucht :

ffmpeg -y -ss 00: 00: 12.0 -i "c: \ vid \ example.mkv" -vframes 420 -vcodec libx264 -preset veryslow -refs 8 -b: v 1200k -an -pass 1 -f h264 / dev / Null

ffmpeg -y -ss 00: 00: 12.0 -i "c: \ vid \ example.mkv" -vframes 420 -vcodec libx264 -preset veryslow -refs 8 -b: v 1200k -acodec copy -pass 2 "c: \ vid \ encoded.mkv "

aber es zeigt Fehlermeldungen an:

/ dev / null: Keine solche Datei oder kein solches Verzeichnis

ratecontrol_init: Statistiken können nicht geöffnet werden

Fehler beim Öffnen des Encoders für den Ausgabestream # 0: 0 - möglicherweise falsche Parameter   wie bit_rate, rate, width oder height

Habe ich etwas falsch gemacht? Ich bin mir nicht sicher, wie ich Multi-Pass mit FFmpeg verwenden soll. Irgendwelche Ideen, wie ich den Fehler beheben kann?

Happy Face
quelle
Müssen Sie wirklich zwei Durchgänge verwenden? Sofern Sie nicht auf eine bestimmte Ausgabedateigröße abzielen, verwenden Sie nur einen einzigen Durchgang mit -crf stattdessen. Sehen FFmpeg Wiki: H.264 Video Encoding Guide Weitere Informationen dazu. Warum hast du hinzugefügt -refs 8? Das Preset behandelt Refs. Zuletzt können Sie sich ändern -f h264 zu -f matroska da dies das Containerformat ist, das Ihr zweiter Befehl verwendet.
llogan
@LordNeckbeard Wenn ich spezifiziere -refs 8, wird das Preset es vermasseln? Und meinst du, crf ist besser als 2-Pass?
Happy Face
Versuchen Sie, auf eine bestimmte Dateigröße auszugeben? Sie haben nicht erklärt, warum Sie 2-Pass verwenden oder warum Sie hinzufügen -refs. Hinzufügen -refs sollte die vom Preset festgelegten Refs außer Kraft setzen, aber ich bin mir nicht sicher, warum Sie das überhaupt einstellen.
llogan
@LordNeckbeard Grundsätzlich möchte ich ein Video so verlustfrei wie möglich kodieren, ohne die gigantische Dateigröße zu haben -qp 0 oder -crf 0.
Happy Face
Verwenden Sie dann den höchsten crf-Wert, der noch eine akzeptable Qualität bietet, und die langsamste Voreinstellung, für die Sie Geduld haben. Eine der beiden Antworten hier sollte jedoch eine angemessene Lösung für den spezifischen Fehler bei der von Ihnen gestellten Frage sein.
llogan

Antworten:

0

Versuchen

ffmpeg -y -ss 00:00:12.0 -i "c:\vid\example.mkv" -vframes 420 -vcodec libx264 -preset veryslow -refs 8 -b:v 1200k -an -pass 1 -f matroska dummy

ffmpeg -y -ss 00:00:12.0 -i "c:\vid\example.mkv" -vframes 420 -vcodec libx264 -preset veryslow -refs 8 -b:v 1200k -acodec copy -pass 2 "c:\vid\encoded.mkv"

Löschen Sie die Dummy-Datei, die im ersten Durchgang nach dem zweiten Durchgang erstellt wurde.

Gyan
quelle
1
Anstatt eine temporäre Datei zu erstellen, können Windows-Benutzer verwenden NUL. Siehe @ LordNeckbeards Antwort.
slhck
Ich weiß, aber ich habe den Dateipfad verpasst und da es keine ausdrückliche Betriebssystemangabe gab, habe ich mich für die universell sichere Methode entschieden.
Gyan