Как настроить 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 и скопировать заголовки
- Зарегистрируйтесь и скачайте NVIDIA Video Codec SDK с официального сайта NVIDIA.
- Распакуйте ZIP-архив локально.
- Откройте папку Samples/common/inc внутри распакованного архива и скопируйте все файлы в /usr/local/include:
sudo cp -r /путь/к/Video_Codec_SDK/Samples/common/inc/* /usr/local/include/Это нужно, чтобы сборка ffmpeg увидела заголовочные файлы NVENC во время компиляции.

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 поместил исходники).

Alt текста изображения: Проводник показывает папку исходников ffmpeg с номером версии.
Шаг 4 — Получение текущих флагов сборки ffmpeg и подготовка конфигурации
- Откройте терминал в каталоге исходников, например:
cd ~/ffmpeg-- Посмотрите, как была собрана текущая установлена версия ffmpeg (это даст вам список флагов). На установленной версии выполните:
ffmpeg -buildconfСкопируйте строку конфигурации, которая выводится после слова “configuration:”. Вставьте её в текстовый редактор.
В конец этой строки добавьте флаги для 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
Alt текста изображения: Терминал ffmpeg показывает процесс аппаратного кодирования с помощью NVENC.
Критерии приёмки
- ffmpeg отображает энкодеры h264_nvenc или hevc_nvenc в выводе ffmpeg -encoders.
- Тестовая команда с опцией -vcodec h264_nvenc успешно завершает кодирование без ошибок NVENC.
- Время кодирования и загрузка CPU заметно уменьшились по сравнению со сборкой без NVENC (сравните значения вручную).
Частые ошибки и способы их решения
- “header files not found” — проверьте, что вы скопировали файлы из Video Codec SDK в /usr/local/include и что права на файлы позволяют чтение.
- Ошибки ./configure о libfdk-aac — установите libfdk-aac-dev и убедитесь, что используете –enable-nonfree.
- Конфликт версий — если у вас параллельно есть пакетный ffmpeg, возможны конфликты. Решение: удалите пакетный ffmpeg перед установкой или установите собранную версию в альтернативный префикс.
- NVENC не виден в ffmpeg — проверьте версию драйвера NVIDIA и поддерживается ли ваша карта; запустите nvidia-smi для диагностики.
- Проблемы с 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.
Мини-методология (короткий чеклист)
- Проверить GPU и драйвер: nvidia-smi.
- Скачать Video Codec SDK и скопировать заголовки в /usr/local/include.
- Включить исходники пакетов в настройках Ubuntu/Mint.
- sudo apt-get build-dep ffmpeg && sudo apt-get install libfdk-aac-dev.
- sudo apt-get source ffmpeg, cd в каталог исходников.
- Скопировать конфигурацию установленного ffmpeg, добавить –enable-nonfree –enable-nvenc –enable-libfdk-aac.
- ./configure <опции>, make -j$(nproc), sudo make install.
- Проверить ffmpeg -encoders | grep nvenc и выполнить тестовую транскодировку.
Роль-базовые чеклисты
- Для разработчика: обеспечить наличие заголовков SDK, добавить флаги в конфигурацию, зафиксировать использованные флаги в документации проекта.
- Для системного администратора: обеспечить стабильную версию драйвера NVIDIA, контроль версий ffmpeg и откатного плана (сохранить старый бинарник).
- Для стримера/контента: протестировать качество кодирования, подобрать пресеты NVENC в OBS, сравнить нагрузку CPU/GPU до и после.
Отладочный план при ошибках (runbook)
Проблема: ffmpeg не показывает nvenc.
- Проверить nvidia-smi; при ошибке обновить драйвер.
- Убедиться, что SDK-заголовки в /usr/local/include.
- Пересобрать ffmpeg, проверить вывод ./configure на предмет включённых флагов.
Проблема: ./configure падает с ошибкой отсутствия библиотеки.
- Установить соответствующие -dev пакеты через apt и повторить ./configure.
Проблема: make завершается ошибкой.
- Прочитать лог compile error, установить недостающие зависимости, очистить сборку (make distclean) и повторить.
Заключение
Настройка NVENC в Ubuntu требует нескольких ручных шагов, но даёт реальную выгоду в скорости кодирования и снижении нагрузки на CPU при трансляциях и пакетных задачах. Основные этапы: получить SDK, добавить заголовки, включить исходники пакетов, установить dev-зависимости, получить исходники ffmpeg, расширить конфигурацию и пересобрать. После этого протестируйте работу nvenc с помощью ffmpeg и убедитесь в стабильности для ваших задач.
Если вы столкнулись с нестандартной ошибкой или нашли более простой путь (например, безопасную статическую сборку), поделитесь решением — сообщество выиграет от обмена опытом.
Важное: при использовании –enable-nonfree и проприетарных компонентов учитывайте лицензионные ограничения в вашей среде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента