Гид по технологиям

Как настроить NVENC на Ubuntu и пересобирать ffmpeg для аппаратного кодирования

• 6 min read • Видео • Обновлено 23 Nov 2025
NVENC на Ubuntu: как включить в ffmpeg
NVENC на Ubuntu: как включить в ffmpeg

Важно: команды в примерах требуют прав root; внимательно проверьте пробелы в командах при копировании.

Что такое NVENC и зачем он нужен

NVENC — это аппаратный энкодер, встроенный в графические процессоры NVIDIA. Коротко: он перекладывает тяжёлую часть кодирования видео с CPU на GPU. Это полезно для быстрой конвертации файлов, записи и трансляций (OBS и др.), когда нужно снизить нагрузку на процессор и уменьшить задержки.

Определение: NVENC — аппаратный блок кодирования в GPU NVIDIA, который обеспечивает ускоренное кодирование H.264/H.265 без полной загрузки CPU.

Требования и подготовка

  • Видеокарта NVIDIA с поддержкой NVENC (производительность и доступность кодировщика зависят от поколения GPU).
  • Установленные драйверы NVIDIA (проверяйте nvidia-smi для подтверждения работы драйвера).
  • Доступ к сети и возможность включить исходники в источниках пакетов Ubuntu/Mint.
  • Право sudo для установки пакетов и записи в системные каталоги.

Полезные команды для проверки перед началом:

nvidia-smi
ffmpeg -encoders | grep nvenc

Если ffmpeg пока не показывает nvenc, значит нужно пересобрать с поддержкой NVENC (ниже — подробная инструкция).

Шаг 1 — Скачать NVIDIA Video Codec SDK и скопировать заголовки

  1. Зарегистрируйтесь и скачайте NVIDIA Video Codec SDK с официального сайта NVIDIA.
  2. Распакуйте ZIP-архив локально.
  3. Откройте папку Samples/common/inc внутри распакованного архива и скопируйте все файлы в /usr/local/include:
sudo cp -r /путь/к/Video_Codec_SDK/Samples/common/inc/* /usr/local/include/

Это нужно, чтобы сборка ffmpeg увидела заголовочные файлы NVENC во время компиляции.

nvenclinux-softwaresources

Alt текста изображения: Панель настроек Ubuntu — управление источниками ПО и исходниками пакетов.

Шаг 2 — Включите исходники кода в настройках пакетов

Ubuntu: Откройте «Настройки системы» → «Программы и обновления», перейдите на вкладку «Ubuntu Software» и отметьте «Исходные коды».

Linux Mint: Откройте Менеджер обновлений → Редактировать → Источники программного обеспечения и включите «Enable source code repositories» (пометка может отличаться по окружению рабочего стола).

Это нужно, чтобы apt мог загрузить исходники пакетов с серверов вашего дистрибутива.

Шаг 3 — Установка зависимостей и получение исходников ffmpeg

Установите зависимости для сборки ffmpeg и кодек AAC (libfdk-aac):

sudo apt-get update
sudo apt-get build-dep ffmpeg
sudo apt-get install libfdk-aac-dev
dpkg-source -x /var/cache/apt/archives/ffmpeg_*.dsc

Альтернативно можно получить исходники простыми командами:

sudo apt-get source ffmpeg

После выполнения найдите каталог с именем наподобие ffmpeg-<версия> в текущем каталоге (обычно в вашей домашней папке или в каталоге, куда apt поместил исходники).

nvenclinux-ffmpeg

Alt текста изображения: Проводник показывает папку исходников ffmpeg с номером версии.

Шаг 4 — Получение текущих флагов сборки ffmpeg и подготовка конфигурации

  1. Откройте терминал в каталоге исходников, например:
cd ~/ffmpeg-
  1. Посмотрите, как была собрана текущая установлена версия ffmpeg (это даст вам список флагов). На установленной версии выполните:
ffmpeg -buildconf
  1. Скопируйте строку конфигурации, которая выводится после слова “configuration:”. Вставьте её в текстовый редактор.

  2. В конец этой строки добавьте флаги для NVENC и AAC:

--enable-nonfree --enable-nvenc --enable-libfdk-aac

Пояснение: –enable-nonfree требуется для libfdk-aac, поскольку он имеет лицензионные ограничения. Без этого ffmpeg откажется собираться с libfdk-aac.

Шаг 5 — Запуск конфигурации, сборка и установка

В каталоге исходников выполните:

./configure <вставьте-вашу-модифицированную-строку-опций>
make -j$(nproc)
sudo make install

Где:

  • ./configure — скрипт настройки сборки в каталоге исходников;
  • make -j$(nproc) — сборка с параллелизмом по количеству ядер CPU;
  • sudo make install — установка собранного бинарника в систему.

Замечания:

  • Если у вас уже установлен пакет ffmpeg из репозитория, сборка может перезаписать системный ffmpeg; при желании сохраните оригинал или используйте альтернативную установку (/usr/local vs /usr).
  • Если ./configure выдаёт ошибки о нехватке библиотек, установите соответствующие -dev пакеты через apt.

Шаг 6 — Тестирование NVENC в ffmpeg

Проверка доступных энкодеров NVENC:

ffmpeg -encoders | grep nvenc

Простой тест кодирования с копированием звука и использованием NVENC:

time ffmpeg -i /home/miguel/Desktop/test.mkv -acodec copy -vcodec h264_nvenc /home/miguel/Desktop/test.mp4

Или для HEVC (если ваша карточка и сборка поддерживают):

ffmpeg -i input.mp4 -c:v hevc_nvenc -preset p1 -rc vbr_hq -cq 19 -b:v 0 output_hevc.mp4

Подсказка: чтобы увидеть доступные опции конкретного энкодера, выполните:

ffmpeg -h encoder=h264_nvenc

nvenclinux-encoding

Alt текста изображения: Терминал ffmpeg показывает процесс аппаратного кодирования с помощью NVENC.

Критерии приёмки

  • ffmpeg отображает энкодеры h264_nvenc или hevc_nvenc в выводе ffmpeg -encoders.
  • Тестовая команда с опцией -vcodec h264_nvenc успешно завершает кодирование без ошибок NVENC.
  • Время кодирования и загрузка CPU заметно уменьшились по сравнению со сборкой без NVENC (сравните значения вручную).

Частые ошибки и способы их решения

  1. “header files not found” — проверьте, что вы скопировали файлы из Video Codec SDK в /usr/local/include и что права на файлы позволяют чтение.
  2. Ошибки ./configure о libfdk-aac — установите libfdk-aac-dev и убедитесь, что используете –enable-nonfree.
  3. Конфликт версий — если у вас параллельно есть пакетный ffmpeg, возможны конфликты. Решение: удалите пакетный ffmpeg перед установкой или установите собранную версию в альтернативный префикс.
  4. NVENC не виден в ffmpeg — проверьте версию драйвера NVIDIA и поддерживается ли ваша карта; запустите nvidia-smi для диагностики.
  5. Проблемы с root-доступом при копировании заголовков — используйте sudo при копировании.

Альтернативные подходы

  • Использовать статические сборки ffmpeg с поддержкой nvenc, которые иногда публикуются в сообществе (быстро, но убедитесь в доверии к источнику).
  • Применить Intel Quick Sync или AMD VCE/VCN, если у вас соответствующий GPU.
  • Для стриминга использовать OBS с драйвером NVIDIA без необходимости локальной пересборки ffmpeg (OBS использует собственные плагины/бинарники).

Когда NVENC не подходит (ограничения и контрпримеры)

  • Качество: аппаратные энкодеры иногда дают более заметные артефакты на одинаковом битрейте в сравнении с x264/x265 на медленных профилях; для максимального качества иногда предпочтительнее CPU-кодеки.
  • Лицензирование: использование libfdk-aac требует флага –enable-nonfree и может быть несовместимо с политиками дистрибутива.
  • Совместимость: старые GPU могут не поддерживать современные профили HEVC или новые опции NVENC.

Мини-методология (короткий чеклист)

  1. Проверить GPU и драйвер: nvidia-smi.
  2. Скачать Video Codec SDK и скопировать заголовки в /usr/local/include.
  3. Включить исходники пакетов в настройках Ubuntu/Mint.
  4. sudo apt-get build-dep ffmpeg && sudo apt-get install libfdk-aac-dev.
  5. sudo apt-get source ffmpeg, cd в каталог исходников.
  6. Скопировать конфигурацию установленного ffmpeg, добавить –enable-nonfree –enable-nvenc –enable-libfdk-aac.
  7. ./configure <опции>, make -j$(nproc), sudo make install.
  8. Проверить ffmpeg -encoders | grep nvenc и выполнить тестовую транскодировку.

Роль-базовые чеклисты

  • Для разработчика: обеспечить наличие заголовков SDK, добавить флаги в конфигурацию, зафиксировать использованные флаги в документации проекта.
  • Для системного администратора: обеспечить стабильную версию драйвера NVIDIA, контроль версий ffmpeg и откатного плана (сохранить старый бинарник).
  • Для стримера/контента: протестировать качество кодирования, подобрать пресеты NVENC в OBS, сравнить нагрузку CPU/GPU до и после.

Отладочный план при ошибках (runbook)

  1. Проблема: ffmpeg не показывает nvenc.

    • Проверить nvidia-smi; при ошибке обновить драйвер.
    • Убедиться, что SDK-заголовки в /usr/local/include.
    • Пересобрать ffmpeg, проверить вывод ./configure на предмет включённых флагов.
  2. Проблема: ./configure падает с ошибкой отсутствия библиотеки.

    • Установить соответствующие -dev пакеты через apt и повторить ./configure.
  3. Проблема: make завершается ошибкой.

    • Прочитать лог compile error, установить недостающие зависимости, очистить сборку (make distclean) и повторить.

Заключение

Настройка NVENC в Ubuntu требует нескольких ручных шагов, но даёт реальную выгоду в скорости кодирования и снижении нагрузки на CPU при трансляциях и пакетных задачах. Основные этапы: получить SDK, добавить заголовки, включить исходники пакетов, установить dev-зависимости, получить исходники ffmpeg, расширить конфигурацию и пересобрать. После этого протестируйте работу nvenc с помощью ffmpeg и убедитесь в стабильности для ваших задач.

Если вы столкнулись с нестандартной ошибкой или нашли более простой путь (например, безопасную статическую сборку), поделитесь решением — сообщество выиграет от обмена опытом.

Важное: при использовании –enable-nonfree и проприетарных компонентов учитывайте лицензионные ограничения в вашей среде.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро