У меня NVIDIA Quadro P620. У меня много исследований о том, как ускорить перекодирование с помощью графической карты.
Я натыкаюсь на эту страницу
https://trac.ffmpeg.org/wiki/HWAccelIntro#Usewiththeffmpegcommand-linetool
Итак, я попробовал
ffmpeg -hwaccel cuda -i input.avi output.mp4
Не получилось быстрее, чем
ffmpeg -i input.avi output.mp4
На самом деле перекодирование заняло больше времени.
Я вижу, что он тратит столько же ресурсов ЦП на Resmon как без опции -hwaccel.
Я сделал что-то не так? Как я узнаю, что ffmpeg правильно использует мой графический процессор?
2 ответа
Согласно
Матрица поддержки видеокодирования и декодирования GPU, ваш графический процессор поддерживает аппаратное декодирование и кодирование, также называемое
NVENC.
Единственная проблема здесь — это список кодеков, поддерживаемых вашим графическим процессором, а именно: H.264 и H.265. Если ваши видео не кодируются с помощью этих кодеков, аппаратное ускорение может не сработать.
Для правильных кодеков и для справки, сообщение о переполнении стека
заставить ffmpeg выбрать Nvidia CUDA вместо Intel QSV
упомянул, что аппаратное ускорение работает с помощью следующей команды:
ffmpeg -hide_banner -hwaccel cuda -i "input.avi" -c:a copy -ac 1 -c:v h264_nvenc -preset hq -movflags faststart -qp 30 "output.mp4"
Вместо того, чтобы пытаться заставить это работать, я бы вместо этого посмотрел на проект под названием другое-видео-перекодирование пользователя DonMelton на github. Как я обнаружил, это дает отличные результаты при сжатии видео без потери качества. Он автоматически выбирает существующее оборудование для ускорения, и если его нет, у него также есть запасной вариант для программного кодирования. Я использую его для перекодирования копий DVD, сделанных с помощью MakeMkv, перед тем, как поместить их на свой NAS.
Я смотрел свой p620 spec. В нем говорится, что карта специализируется на кодировании H.264 и HEVC. Что делает сжатие лучше? Как мне также перекодировать HEVC в ffmpeg?
— user1978421
16 часов назад
Видеть Почему HEVC лучше H.264?
— harrymc
16 часов назад
Я обнаружил, что кодек для hevc называется libx265. Поэтому, когда я пытаюсь перекодировать файл, ffmpeg сказал мне: видео использует нестандартный и расточительный способ хранения B-кадров («упакованных B-кадров»). Рассмотрите возможность использования фильтра битового потока mpeg4_unpack_bframes без кодирования, но с копированием потока, чтобы исправить это. Невозможно преобразовать форматы, поддерживаемые фильтром Parsed_null_0 и фильтром auto_scaler_0. Ошибка повторной инициализации фильтров! Не удалось ввести кадр в сеть фильтров: функция не реализована Ошибка при обработке декодированных данных для потока № 0: 0 Как мне передать это?
— user1978421
16 часов назад
Попробуйте H.264, но проблема может быть в формате ввода.
— harrymc
16 часов назад
Проблема в том, что сжатие H264 никуда не годится. Размер файла такой большой.
— user1978421
16 часов назад
Показывать 1 больше комментариев