FFMPEG - как определить узкое место в аппаратном транскодировании?

В приведенном примере я пытался перекодировать источник 4K h264 в выходной сигнал 1080p h264 с использованием ускорения Nvidia Harware.

Релевантная информация:

ffmpeg version git-2017-12-25-613f789 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 7.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-amf --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx
  libavutil      56.  7.100 / 56.  7.100
  libavcodec     58.  9.100 / 58.  9.100
  libavformat    58.  3.100 / 58.  3.100
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  7.100 /  7.  7.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100

Используемая команда:

ffmpeg -c:v h264_cuvid -i "4K_input.mp4" -c:v h264_nvenc -preset slow -s 1920x1080 -c:a copy output.mkv

Соответствующие характеристики ПК:

GPU: (Gigabyte) GeForce GTX 1070 Ti
CPU: Intel Core i7 7700K
Memory: 8GB DDR4 2400MHz Single Channel.
SSD: Crucial CT525MX3

Хотя запись на Nvidia Desktop не имеет абсолютно никаких проблем для записи живого видео h264 с битрейтом до 50 Мбит / с, это кодирование со скоростью ниже 2600 кбит / с было чрезвычайно медленным с использованием всего лишь 35% графического процессора. Мне не удалось использовать 100% графического процессора для каких-либо параметров видео.

Вот почему я мог бы использовать несколько советов относительно того, как определить (подозреваемое) узкое место?

1 ответ

Транскодирование "GPU" не работает таким образом. Существуют фиксированные функциональные схемы, предназначенные для кодирования h264 на графических процессорах Nvidia, которые не являются частью пула векторных модулей. Вот почему вы указываете h264_nvenc (nvenc специфичен для nvidia), а не универсальный gpu кодировщик.

TLDR, вы не достигнете 100% GPU, потому что он на самом деле не использует GPU. Он использует отдельный компонент, который поставляется с вашим графическим процессором.

введите описание изображения здесь

Другие вопросы по тегам