Как скомпилировать FFMPEG на облачном сервере GPU
Как скомпилировать FFMPEG на облачном сервере GPU

0x00 Предисловие

FFMPEG — это популярное в настоящее время решение уровня платформы с открытым исходным кодом для кроссплатформенной обработки аудио- и видеопотоков. Он обладает мощными функциями: от записи аудио и видео, кодирования и декодирования, перекодирования, мультиплексирования, фильтрации до потокового вывода — инструменты командной строки FFMPEG могут эффективно справиться с этим.

Графические процессоры NVIDIA содержат один или несколько аппаратных декодеров и кодировщиков, независимых от ядер CUDA и обеспечивающих полностью ускоренное аппаратное декодирование и кодирование видео для многих популярных кодеков. После разгрузки декодирования/кодирования его графический движок и ЦП также могут выполнять другие операции. Механизм аппаратного ускорения графического процессора для декодирования видео NVDEC и кодирования видео NVENC поддерживает обработку видео быстрее, чем в реальном времени, что делает его пригодным не только для воспроизведения видео, но и для приложений перекодирования. Модуль кодирования и декодирования графического процессора имеет архитектуру и характеристики, показанные ниже:

Схема архитектуры аппаратного кодека
Схема архитектуры аппаратного кодека

С помощью облачного сервера графического процессора Tencent Cloud и соответствующей библиотеки кодеков NVIDIA мы можем легко ускорить работу по кодированию и декодированию FFMPEG в различных сценариях, еще больше повышая эффективность обработки аудио- и видеопотоков.

Обязательным условием для включения ускорения графического процессора является правильная компиляция исходного кода FFMPEG. Эта проблема сбивает с толку многих друзей. Эта статья решит за вас этот вопрос и шаг за шагом скомпилирует последнюю стабильную версию FFMPEG на облачном сервере графического процессора.

Итак, пойдемте со мной и начните с создания облачного сервера с графическим процессором~

0x01 Консоль облачного сервера графического процессора активирована

На главной странице официального сайта Tencent Cloud мы выбираем самый популярный вычислительный продукт — облачный сервер. На данный момент это самый безопасный и стабильный облачный сервер Tencent Cloud, предоставляющий разработчикам высокодоступные и высокопроизводительные вычислительные услуги. После нажатия «Купить сейчас» на главной странице продукта мы попадаем на страницу конфигурации покупки облачного сервера, как показано на рисунке ниже. Это самый важный первый шаг:

облачный сервер Выбор режима биллинга
облачный сервер Выбор режима биллинга

Обратите внимание, что в биллинговом режиме, если вы уверены, что в будущем будете часто и с высокой нагрузкой использовать облачный сервер в течение длительного времени, вы можете выбрать режим годовой и ежемесячной подписки. Однако для краткосрочных сценариев проверки/эксперимента среды, подобных нашему, оплата по мере использования является наиболее экономически эффективным вариантом. Потому что мы можем «осаждать» состояние облачного сервера путем создания образа после установки необходимого программного обеспечения, а затем безопасно уничтожить экземпляр. Вы можете использовать его и создавать, когда он вам понадобится позже. Гибкость — самое большое преимущество облачных серверов.

После выбора региона и зоны доступности мы начинаем выбирать модель конфигурации. Здесь мы выбираем модель вычислений на графическом процессоре Tencent Cloud GN7. Он оснащен графическим процессором NVIDIA T4, который имеет отличную производительность (до 2560 ядер и 16 ГБ видеопамяти) и чрезвычайно высокую производительность. Это очень популярная модель графического процессора Tencent Cloud. Он подходит для различных общих сценариев и имеет высокую эффективность. рекомендуется.

Выбор модели облачного сервера GPU
Выбор модели облачного сервера GPU

Драйвер/инструментарий CUDA очень удобен. В этой статье не рассматривается процесс установки.,Если вам интересно, пожалуйста, обратитесь к этой статье:Cloud + Community [статья] Облачный сервер графического процессора (драйвер)。но не забывай,Обязательно проверьте после установки,Эта команда доступна:

Язык кода:javascript
копировать
nvidia-smi

Чтобы проверить установку CUDA Toolkit и версию драйвера. Используйте следующую команду:

Язык кода:javascript
копировать
lsmod | grep nvidia

Чтобы проверить, что официальный драйвер NVIDIA правильно загружен в текущее ядро ​​системы, как показано на рисунке:

Убедитесь, что CUDA установлен правильно.
Убедитесь, что CUDA установлен правильно.

На этом инициализация облачного сервера завершена, приступим к следующему этапу загрузки исходного кода~

0x02 Загрузка исходного кода последней стабильной версии FFMPEG

В системе Linux,Самым большим преимуществом выборочной установки программного обеспечения является то, что вы всегда можете установить последнюю стабильную версию.,Испытайте новейшие функции как можно скорее. конечно,дляFFMPEGне исключение。мы можемОфициальный сайт FFMPEG,Нажмите самую большую зеленую кнопку «Загрузить» справа, чтобы перейти на страницу загрузки исходного кода.,Как показано на рисунке:

Официальный сайт FFMPEG源码Вниз载
Официальный сайт FFMPEG源码Вниз载

通过wgetСкачать сжатый пакет исходного кода,Последней версией на данный момент является версия 4.4. Затем проверьте целостность загрузки исходного кода с помощью подписи GPG:

Язык кода:javascript
копировать
wget https://www.ffmpeg.org/releases/ffmpeg-4.4.tar.xz
​
wget https://www.ffmpeg.org/releases/ffmpeg-4.4.tar.xz.asc
gpg --verify ffmpeg-4.4.tar.xz.asc ffmpeg-4.4.tar.xz

Результаты проверки команды GPG следующие:

Подпись GPG проверяет целостность загрузки
Подпись GPG проверяет целостность загрузки

Если вы видите слова «Хорошая подпись», поздравляем, можете смело распаковывать и готовиться к компиляции~

0x03 Подготовка конфигурации компиляции FFMPEG

Пройди первымtarКоманда для распаковки пакета исходного кода,УведомлениедляxzИспользуемый метод сжатия-JПараметры

Язык кода:javascript
копировать
tar -Jxvf ffmpeg-4.4.tar.xz

После завершения декомпрессии создается новыйffmpegОглавление,Входим в этот каталог и выполняем все последующие операции

Язык кода:javascript
копировать
cd ffmpeg-4.4

Обратите внимание здесь,Если выполняется напрямуюconfigureНеизбежно будет сообщено о следующей ошибке:

Язык кода:javascript
копировать
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
blablabla...

Это связано с тем, что соответствующий инструмент ассемблера не установлен.,Установить в системуyasmВот и все

Язык кода:javascript
копировать
sudo apt install yasm

На данный момент, хотя мы можем успешно выполнитьconfigure,Но его по-прежнему нельзя совместить с новейшими функциями кодека NVIDIA. Даже если компиляция прошла успешно,Его можно выполнить только с помощью процессора. Нам нужно установить заголовочные файлы кодека NVIDIA в системный каталог.,Выполните следующую команду:

Язык кода:javascript
копировать
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers/
make install

Тогда ты действительно сможешьconfigureПонятно

Язык кода:javascript
копировать
./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64

Ввод команды такой, как показано на рисунке:

configure (конфигурация компиляции исходного кода)
configure (конфигурация компиляции исходного кода)

Далее мы готовы к компиляции~

0x04 Компиляция FFMPEG и проверка командной строки

Перед компиляцией,мы проходимlscpuКоманда может видеть нашиоблачный Сервер имеет 20 ядер, что действительно мощно.

Проверьте количество ядер процессора
Проверьте количество ядер процессора

Когда во время компиляции мы указываем степень параллелизма 20, мы можем использовать максимальную вычислительную мощность сервера:

Язык кода:javascript
копировать
make -j 20

обычная ситуация,Сборка будет в1Успешно завершено в течение нескольких минут。текущий Оглавление Он будет заново скомпилирован в течениеffmpegисполняемый файл~

Попробуйте выполнить его и указать отображение информации об аппаратном ускорении:

Язык кода:javascript
копировать
./ffmpeg -hwaccels

Вы увидите, что cuda отображается в режиме аппаратного ускорения вывода. Мы проверили параметры компиляции и включение CUDA. Запустите установку:

Язык кода:javascript
копировать
make install

существовать/usr/local/binОглавление В следующий раз будет одинffmpegСвязанные команды инструмента Понятно,нравитьсяffmpegffprobeждать,Все они находятся в глобальной PATH.,Можетсуществоватьиспользуется в системе Понятно。ffmpegСоответствующие библиотеки будут установлены на/usr/local/libОглавление Вниз,Включая динамические и статические библиотеки.

бегатьffmpegКоманда для просмотра поддерживаемых кодеков:

Язык кода:javascript
копировать
ffmpeg -codecs | grep cuvid

Проверка компиляции FFMPEG
Проверка компиляции FFMPEG

Как видите, недавно установленный ffmpeg уже содержит кодеки, относящиеся к NVIDIA. На этом этапе наш процесс компиляции успешно завершен!

0x05 Сводка

На данный момент, я полагаю, вы знакомы с процессом компиляции исходного кода FFMPEG на облачном сервере Tencent Cloud GPU и с распространенными ошибками. Чувствуете ли вы себя уверенно? Создайте экземпляр графического процессора и испытайте удовольствие от ускоренного перекодирования видео~

0x06 Ссылки

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose