FFmpeg: h264_qsv encoder und crf probleme

2584
KennyG1092

Ich habe gerade über FFmpeg erfahren, als ich das Spiel auf Bandicam mit dem H.264-Codec (Intel Quick Sync) aufzeichnete. Leider wurde eines meiner Videos in einem AVI-Wrapper aufgenommen, und ich wollte es etwas verlustfrei in MP4 umcodieren

Der Grund, warum ich Wrapper wechseln möchte, ist, dass Adobe Premiere Pro CC 2017 AVIs irgendwie nicht gut handhabt, und wenn ich mit H.264 und MP4 als Wrapper exportiere, sieht das ganze Video einfach kaputt aus.

Also schnappe ich mir FFmpeg und versuche mein Video mit dem folgenden Befehl umzucodieren:

ffmpeg -i vid.avi -c:v h264_qsv -crf 10 -r 50 -c:a aac -b:a 192k -ac 2 vid.mp4 

Der Fehler, der in Gelb angezeigt wird, ist:

Codec AVOption crf (Select the quality for constant quality mode) specified for output file #0 (vid.mp4) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.

Ich bin ziemlich sicher, dass H.264 (Intel Quick Sync) CRF-Unterstützung hat, oder ich könnte sehr falsch sein und H.264 (QSV) und libx264 durcheinander bringen, was offensichtlich CRF unterstützt.

Irgendwas in der Nähe? Ich habe FFmpeg ver. 20170921-183fd30, 64-Bit, statisch.

Edit: Umgehung von rn ist, zurück zu libx264 zu gehen und auszuführen faster, veryfastoder superfast, aber ich würde trotzdem gerne etwas Zeit sparen, indem ich Intel Quick Sync verwende.

3

1 Antwort auf die Frage

4
Gyan

Der QSV-Encoder hat keinen Parameter namens CRF. Die äquivalente Ratecontrol-Methode ist LA_ICQ.

https://software.intel.com/en-us/articles/common-bitrate-control-methods-in-intel-media-sdk :

Die Standardratensteuerung für x264 (FFmpegs standardmäßige h264-Implementierung) ist CRF. Dies ermöglicht Bitratenfluktuationen, um ein Zielqualitätsniveau aufrechtzuerhalten. ICQ und LA_ICQ von Media SDK passen für diese Algorithmusklasse am besten.


Um es aufzurufen, ist ein Befehl des Formulars erforderlich:

ffmpeg -i in.mp4 -c:v h264_qsv -global_quality 10 -look_ahead 1 out.mp4 

look_aheadsollte sein 1. global_qualitykann zwischen 1 und 51 liegen. Ein niedrigerer Wert steht für eine bessere Qualität. ~ 25 sollte x264 CRF 23 entsprechen.

Gut, danke. Zur Verdeutlichung ist eine Einstellung von "global_quality" von 0 verlustfrei, ähnlich wie bei h.264s 0 CRF ??? KennyG1092 vor 6 Jahren 0
Ich glaube nicht, dass dieser Encoder einen verlustfreien Modus hat. Gyan vor 6 Jahren 0