![Высококачественное сжатие с помощью cuda](https://rvso.com/image/1615544/%D0%92%D1%8B%D1%81%D0%BE%D0%BA%D0%BE%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D0%B5%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20cuda.png)
Я хочу конвертировать
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 — нет. Вам необходимо выбрать битрейт или постоянный коэффициент скорости.