Действительно ли ffmpeg использует мою видеокарту для кодирования?

У меня 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 ответа
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"

  • Я смотрел свой 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 часов назад

Вместо того, чтобы пытаться заставить это работать, я бы вместо этого посмотрел на проект под названием другое-видео-перекодирование пользователя DonMelton на github. Как я обнаружил, это дает отличные результаты при сжатии видео без потери качества. Он автоматически выбирает существующее оборудование для ускорения, и если его нет, у него также есть запасной вариант для программного кодирования. Я использую его для перекодирования копий DVD, сделанных с помощью MakeMkv, перед тем, как поместить их на свой NAS.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *