Ich möchte konvertieren
ffmpeg -i input.mp4 -maxrate 63317762 -bufsize 63317762 -map_metadata -1 -vcodec libx265 -c:a copy -crf 28 -color_range 2 output.mp4
in einen Befehl, der cuda verwendet, um den Konvertierungsprozess zu beschleunigen.
Ich habe es versucht
ffmpeg.exe -hwaccel cuvid -i input.mp4 -pix_fmt p010le -c:v hevc_nvenc -preset slow -rc vbr_hq -b:v 6M -maxrate:v 63317762 -bufsize:v 63317762 -c:a aac output.mp4
Und es hat nicht funktioniert.
Ich habe es versucht
ffmpeg.exe -hwaccel cuvid -i input.mp4 -c:v hevc_nvenc -preset slow -rc vbr_hq -b:v 6M -maxrate:v 63317762 -bufsize:v 63317762 -c:a aac output.mp4
und es hat funktioniert, allerdings wurde die Bitrate für Video auf 6 M eingestellt.
Ich möchte, dass ffmpeg es anhand von Inhalten bis zu 63317762 Bytes errät. Wie ein guter Kompromiss zwischen Qualität und Bitrate, aber unter 63317762 Bytes, aber auch ohne sichtbare Blockbildung und Unschärfe.
Und mit Cuda.
Welcher Befehl macht das?
Antwort1
FFMpeg führt keine Ratenkontrolle durch. Jede Codec-Implementierung hat ihre eigene Ratenkontrolle. Ffmpeg übergibt einfach die Parameter von der Befehlszeile an den von Ihnen gewählten Encoder. x264 unterstützt den begrenzten CRF-Modus. Nvenc nicht. Sie müssen die Bitrate oder den konstanten Ratenfaktor auswählen.