Я хочу конвертировать
ffmpeg -i input.mp4 -maxrate 63317762 -bufsize 63317762 -map_metadata -1 -vcodec libx265 -c:a copy -crf 28 -color_range 2 output.mp4
в команду, которая использует cuda для ускорения процесса конвертации.
Я пытался
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
И это не сработало.
Я пытался
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
и это сработало, но при этом битрейт видео был установлен на 6M.
Я хочу, чтобы ffmpeg угадывал его на основе контента до 63317762 байт. Как хороший компромисс между качеством и битрейтом, но ниже 63317762 байт, но также без видимого блочного построения и размытия.
И с CUDA.
Какая команда это делает?
решение1
FFMpeg не контролирует скорость. Каждая реализация кодека имеет свой собственный контроль скорости. Ffmpeg просто передает параметры из командной строки в выбранный вами кодер. x264 поддерживает режим CRF с ограничением. Nvenc — нет. Вам необходимо выбрать битрейт или постоянный коэффициент скорости.