mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-19 12:02:59 +02:00
7.4 KiB
7.4 KiB
🚀 Сборка FFmpeg с поддержкой NVIDIA NVENC/CUVID
Это руководство объясняет, как собрать FFmpeg на Ubuntu с аппаратным ускорением NVIDIA (NVENC/CUVID) и поддержкой популярных кодеков. Цель — создание статических бинарных файлов, которые можно легко переносить между системами.
📋 Требования
- Ubuntu 22.04 или новее
- Видеокарта NVIDIA с поддержкой NVENC (опционально, но рекомендуется)
- ~2 ГБ свободного места на диске
- Интернет-соединение
🔧 Конфигурация
Установите следующие переменные окружения для настройки сборки:
# Версия FFmpeg для сборки (по умолчанию: 8.0)
export FFMPEG_VERSION="8.0"
# Директория для установки (по умолчанию: /home/xc_vm/bin/ffmpeg_bin)
export INSTALL_DIR="/home/xc_vm/bin/ffmpeg_bin"
# Директория для сборки (по умолчанию: ~/ffmpeg_sources)
export BUILD_DIR="$HOME/ffmpeg_sources"
# Версия CUDA (по умолчанию: 12-2)
export CUDA_VERSION="12-2"
# Версия драйвера NVIDIA (по умолчанию: 535)
export NVIDIA_DRIVER_VERSION="535"
🔧 1. Установка инструментов для сборки
Обновите систему и установите основные пакеты для разработки:
sudo apt-get update -qq && sudo apt-get -y install \
autoconf automake build-essential cmake git-core \
libass-dev libfreetype6-dev libgnutls28-dev libmp3lame-dev \
libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev \
libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev \
meson ninja-build pkg-config texinfo wget yasm \
zlib1g-dev mercurial nasm
🎶 2. Установка кодеков
Для включения поддержки распространенных форматов установите следующие библиотеки:
# H.264/AVC
sudo apt-get install -y libx264-dev
# H.265/HEVC
sudo apt-get install -y libx265-dev libnuma-dev
# VP8/VP9
sudo apt-get install -y libvpx-dev
# Opus Audio
sudo apt-get install -y libopus-dev
# Дополнительные библиотеки
sudo apt-get install -y \
libbz2-dev libfontconfig1-dev libtheora-dev \
libxvidcore-dev librtmp-dev libunistring-dev libgmp-dev
⚡ 3. Поддержка NVIDIA
3.1 Установка драйверов
sudo add-apt-repository -y ppa:graphics-drivers/ppa
sudo apt update
sudo apt install -y nvidia-driver-${NVIDIA_DRIVER_VERSION:-535}
ℹ️ Выберите версию драйвера, совместимую с вашей видеокартой.
3.2 Установка CUDA Toolkit
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt update
sudo apt install -y cuda-toolkit-${CUDA_VERSION:-12-2}
3.3 Установка заголовков NVENC
cd ${BUILD_DIR:-~/ffmpeg_sources}
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
Возможно нужно устанавливать командой:
make PREFIX="${INSTALL_DIR:-$HOME/ffmpeg_build}" install
3.4 Опциональные инструменты NVIDIA
sudo apt install -y nvidia-cuda-toolkit nvidia-cuda-dev
🔨 4. Сборка FFmpeg
4.1 Загрузка исходного кода
mkdir -p ${BUILD_DIR:-~/ffmpeg_sources} && cd ${BUILD_DIR:-~/ffmpeg_sources}
wget https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION:-8.0}.tar.bz2
tar xjvf ffmpeg-${FFMPEG_VERSION:-8.0}.tar.bz2
cd ffmpeg-${FFMPEG_VERSION:-8.0}
4.2 Конфигурация
export PATH="${INSTALL_DIR:-$HOME/bin}:$PATH"
export PKG_CONFIG_PATH="${INSTALL_DIR:-$HOME/ffmpeg_build}/lib/pkgconfig"
./configure \
--prefix="${INSTALL_DIR:-$HOME/ffmpeg_build}" \
--pkg-config-flags="--static" \
--extra-cflags="-I/usr/local/cuda/include" \
--extra-ldflags="-L${INSTALL_DIR:-$HOME/ffmpeg_build}/lib -Wl,-Bstatic -lcrypto -lssl -Wl,-Bdynamic" \
--extra-version=XCVM \
--extra-libs="-lsupc++ -lgmp -lz -lunistring -lpthread -lm -lrt -ldl" \
--bindir="${INSTALL_DIR:-$HOME/bin}" \
--enable-gpl \
--enable-gnutls \
--enable-libass \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-librtmp \
--enable-libtheora \
--enable-libxvid \
--enable-bzlib \
--enable-fontconfig \
--enable-zlib \
--enable-nvenc \
--enable-ffnvcodec \
--enable-cuvid \
--enable-version3 \
--enable-nonfree \
--enable-pthreads \
--enable-runtime-cpudetect \
--enable-gray \
--disable-alsa \
--disable-indev=alsa \
--disable-outdev=alsa \
--disable-ffplay \
--disable-doc \
--disable-debug \
--disable-autodetect \
--disable-shared \
--enable-static \
--enable-muxer=hls \
--enable-muxer=dash \
--enable-demuxer=hls \
--extra-cflags=--static
4.3 Компиляция
make -j$(nproc)
📦 5. Установка
mkdir -p ${INSTALL_DIR:-/home/xc_vm/bin/ffmpeg_bin}/${FFMPEG_VERSION:-8.0}/
cp ffmpeg ffprobe ${INSTALL_DIR:-/home/xc_vm/bin/ffmpeg_bin}/${FFMPEG_VERSION:-8.0}/
✅ Проверка
${INSTALL_DIR:-/home/xc_vm/bin/ffmpeg_bin}/${FFMPEG_VERSION:-8.0}/ffmpeg -version
${INSTALL_DIR:-/home/xc_vm/bin/ffmpeg_bin}/${FFMPEG_VERSION:-8.0}/ffprobe -version
Проверка поддержки NVIDIA:
${INSTALL_DIR:-/home/xc_vm/bin/ffmpeg_bin}/${FFMPEG_VERSION:-8.0}/ffmpeg -encoders | grep nvenc
${INSTALL_DIR:-/home/xc_vm/bin/ffmpeg_bin}/${FFMPEG_VERSION:-8.0}/ffmpeg -decoders | grep cuvid
📝 Примечания
- Драйвер NVIDIA должен быть совместим с вашей видеокартой.
- После установки драйверов может потребоваться перезагрузка.
- Сборка FFmpeg потребляет значительные ресурсы CPU и памяти.
- Статическая сборка → большие бинарные файлы, но полностью переносимые.
- Настройте переменные окружения в соответствии с конфигурацией вашей системы.
- Для разных версий FFmpeg могут потребоваться корректировки флагов конфигурации.
🔄 Совместимость версий
| Версия FFmpeg | Рекомендуемая CUDA | Примечания |
|---|---|---|
| 7.x | 12.2+ | Новейшие функции |
| 6.x | 11.8+ | Стабильная |
| 5.x | 11.0+ | Устаревшая |
Проверяйте документацию FFmpeg для конкретных требований версий.