FFmpeg: h264_qsv Encoder- und CF-Probleme

3

Ich habe gerade von FFmpeg erfahren, als ich das Gameplay 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 in verlustfreier Weise auf MP4 umcodieren

Der Grund, warum ich die Wrapper ändern möchte, ist, dass Adobe Premiere Pro CC 2017 AVIs nicht gut handhabt und beim Exportieren mit H.264 und MP4 als Wrapper das gesamte Video nur kaputt aussieht.

Also greife ich zu FFmpeg und versuche, mein Video mit dem folgenden Befehl zu transkodieren:

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 zuversichtlich, dass H.264 (Intel Quick Sync) CRF unterstützt, oder ich könnte mich sehr irren und H.264 (QSV) und libx264 verwechseln, was offensichtlich CRF unterstützt.

Irgendetwas um das herum? Ich habe FFmpeg ver. 20170921-183fd30, 64-Bit, statisch.

Edit: Workaround rn ist es, zu libx264 zurückzukehren und auszuführen faster, veryfastoder superfast, aber ich möchte trotzdem einiges an Zeit sparen, indem ich Intel Quick Sync verwende.

KennyG1092
quelle

Antworten:

5

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

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

Die Standardratensteuerung für x264 (FFmpegs Standard-h264-Implementierung) ist CRF. Dies ermöglicht Bitratenschwankungen, um ein Zielqualitätsniveau aufrechtzuerhalten. Der ICQ und der LA_ICQ von Media SDK passen am besten zu dieser Klasse von Algorithmen.


Um es aufzurufen, wird ein Befehl des Formulars benötigt:

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.

Gyan
quelle
Gut, danke. Zur Verdeutlichung ist eine global_qualityEinstellung von 0 verlustfrei, ähnlich der 0 CRF von h.264 ???
KennyG1092
Ich glaube nicht, dass dieser Encoder einen verlustfreien Modus hat.
Gyan