Как заставить FFMPEG использовать больше графического процессора при кодировании - PullRequest
0 голосов
/ 06 августа 2020

, так что ситуация следующая:

Я получаю 20/30 несжатого изображения в секунду. формат - PNG или Bitmap. Размер каждой отдельной фотографии составляет от 40 до 50 МБ (все имеют одинаковый размер после распаковки).

Я хочу закодировать их в видео без потерь 265 и передать их на http-сервер с помощью FFMPEG. Выходное видео имеет разрешение 1920x1080, так что есть некоторое понижение разрешения. Сжатие разрешено, но не может быть потеряно ничего, кроме понижающей дискретизации.

сейчас я все еще на стадии тестирования. у меня есть образец изображения 500. и пытаюсь закодировать их как можно эффективнее. Я использую такие команды, как:

ffmpeg -hwaccel cuvid -f image2 -i "0 (% 01d) .png" -framerate 30 -pix_fmt p010le - c: v hevc_nven c -preset lossless - r c vbr_hq -b: v 6M -maxrate: v 10M -vf scale = 1920: 1080 - c: a aa c -b: результат 240k. mp4

У меня мощный современный Quadro GPU и 6-ядерный процессор Intel и жесткий диск Nvme.

Использование графического процессора при кодировании составляет ровно 10%, CPU - около 30-40%

Как я могу получить Использование графического процессора до 80%? Машина, на которой я собираюсь запустить код, будет иметь как минимум квадро 4000 (может быть, сильнее), и я хочу использовать его в полной мере

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Если ваш ffmpeg был скомпилирован с --enable-libnpp, рассмотрите возможность использования фильтра scale_npp на основе графического процессора вместо scale, который является только CPU. Пример из FFmpeg Wiki: Аппаратное ускорение :

ffmpeg -hwaccel cuda -i input -vf scale_npp=1920:1080 -c:v h265_nvenc output.mp4

Вы можете увидеть улучшение производительности или использования графического процессора.

0 голосов
/ 06 августа 2020

Это не так. Графические процессоры не используют стандартные блоки векторной обработки для кодирования видео. (Ну, это немного для таких вещей, как преобразование цветов и масштабирование, но не для всего). Графический процессор имеет специальную схему для примитивов кодирования видео. Когда они заполнены, не имеет значения, сколько у вас ядер графического процессора, они будут простаивать. с большим количеством ядер NVEN C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...