FFMPEG — это популярное в настоящее время решение уровня платформы с открытым исходным кодом для кроссплатформенной обработки аудио- и видеопотоков. Он обладает мощными функциями: от записи аудио и видео, кодирования и декодирования, перекодирования, мультиплексирования, фильтрации до потокового вывода — инструменты командной строки FFMPEG могут эффективно справиться с этим.
Графические процессоры NVIDIA содержат один или несколько аппаратных декодеров и кодировщиков, независимых от ядер CUDA и обеспечивающих полностью ускоренное аппаратное декодирование и кодирование видео для многих популярных кодеков. После разгрузки декодирования/кодирования его графический движок и ЦП также могут выполнять другие операции. Механизм аппаратного ускорения графического процессора для декодирования видео NVDEC и кодирования видео NVENC поддерживает обработку видео быстрее, чем в реальном времени, что делает его пригодным не только для воспроизведения видео, но и для приложений перекодирования. Модуль кодирования и декодирования графического процессора имеет архитектуру и характеристики, показанные ниже:
С помощью облачного сервера графического процессора Tencent Cloud и соответствующей библиотеки кодеков NVIDIA мы можем легко ускорить работу по кодированию и декодированию FFMPEG в различных сценариях, еще больше повышая эффективность обработки аудио- и видеопотоков.
Обязательным условием для включения ускорения графического процессора является правильная компиляция исходного кода FFMPEG. Эта проблема сбивает с толку многих друзей. Эта статья решит за вас этот вопрос и шаг за шагом скомпилирует последнюю стабильную версию FFMPEG на облачном сервере графического процессора.
Итак, пойдемте со мной и начните с создания облачного сервера с графическим процессором~
На главной странице официального сайта Tencent Cloud мы выбираем самый популярный вычислительный продукт — облачный сервер. На данный момент это самый безопасный и стабильный облачный сервер Tencent Cloud, предоставляющий разработчикам высокодоступные и высокопроизводительные вычислительные услуги. После нажатия «Купить сейчас» на главной странице продукта мы попадаем на страницу конфигурации покупки облачного сервера, как показано на рисунке ниже. Это самый важный первый шаг:
Обратите внимание, что в биллинговом режиме, если вы уверены, что в будущем будете часто и с высокой нагрузкой использовать облачный сервер в течение длительного времени, вы можете выбрать режим годовой и ежемесячной подписки. Однако для краткосрочных сценариев проверки/эксперимента среды, подобных нашему, оплата по мере использования является наиболее экономически эффективным вариантом. Потому что мы можем «осаждать» состояние облачного сервера путем создания образа после установки необходимого программного обеспечения, а затем безопасно уничтожить экземпляр. Вы можете использовать его и создавать, когда он вам понадобится позже. Гибкость — самое большое преимущество облачных серверов.
После выбора региона и зоны доступности мы начинаем выбирать модель конфигурации. Здесь мы выбираем модель вычислений на графическом процессоре Tencent Cloud GN7. Он оснащен графическим процессором NVIDIA T4, который имеет отличную производительность (до 2560 ядер и 16 ГБ видеопамяти) и чрезвычайно высокую производительность. Это очень популярная модель графического процессора Tencent Cloud. Он подходит для различных общих сценариев и имеет высокую эффективность. рекомендуется.
Драйвер/инструментарий CUDA очень удобен. В этой статье не рассматривается процесс установки.,Если вам интересно, пожалуйста, обратитесь к этой статье:Cloud + Community [статья] Облачный сервер графического процессора (драйвер)。но не забывай,Обязательно проверьте после установки,Эта команда доступна:
nvidia-smi
Чтобы проверить установку CUDA Toolkit и версию драйвера. Используйте следующую команду:
lsmod | grep nvidia
Чтобы проверить, что официальный драйвер NVIDIA правильно загружен в текущее ядро системы, как показано на рисунке:
На этом инициализация облачного сервера завершена, приступим к следующему этапу загрузки исходного кода~
В системе Linux,Самым большим преимуществом выборочной установки программного обеспечения является то, что вы всегда можете установить последнюю стабильную версию.,Испытайте новейшие функции как можно скорее. конечно,дляFFMPEGне исключение。мы можемОфициальный сайт FFMPEG,Нажмите самую большую зеленую кнопку «Загрузить» справа, чтобы перейти на страницу загрузки исходного кода.,Как показано на рисунке:
通过wget
Скачать сжатый пакет исходного кода,Последней версией на данный момент является версия 4.4. Затем проверьте целостность загрузки исходного кода с помощью подписи GPG:
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 следующие:
Если вы видите слова «Хорошая подпись», поздравляем, можете смело распаковывать и готовиться к компиляции~
Пройди первымtar
Команда для распаковки пакета исходного кода,Уведомлениедляxz
Используемый метод сжатия-J
Параметры
tar -Jxvf ffmpeg-4.4.tar.xz
После завершения декомпрессии создается новыйffmpeg
Оглавление,Входим в этот каталог и выполняем все последующие операции
cd ffmpeg-4.4
Обратите внимание здесь,Если выполняется напрямуюconfigure
Неизбежно будет сообщено о следующей ошибке:
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
blablabla...
Это связано с тем, что соответствующий инструмент ассемблера не установлен.,Установить в системуyasm
Вот и все
sudo apt install yasm
На данный момент, хотя мы можем успешно выполнитьconfigure
,Но его по-прежнему нельзя совместить с новейшими функциями кодека NVIDIA. Даже если компиляция прошла успешно,Его можно выполнить только с помощью процессора. Нам нужно установить заголовочные файлы кодека NVIDIA в системный каталог.,Выполните следующую команду:
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers/
make install
Тогда ты действительно сможешьconfigure
Понятно
./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
Ввод команды такой, как показано на рисунке:
Далее мы готовы к компиляции~
Перед компиляцией,мы проходимlscpu
Команда может видеть нашиоблачный Сервер имеет 20 ядер, что действительно мощно.
Когда во время компиляции мы указываем степень параллелизма 20, мы можем использовать максимальную вычислительную мощность сервера:
make -j 20
обычная ситуация,Сборка будет в1Успешно завершено в течение нескольких минут。текущий Оглавление Он будет заново скомпилирован в течениеffmpeg
исполняемый файл~
Попробуйте выполнить его и указать отображение информации об аппаратном ускорении:
./ffmpeg -hwaccels
Вы увидите, что cuda отображается в режиме аппаратного ускорения вывода. Мы проверили параметры компиляции и включение CUDA. Запустите установку:
make install
существовать/usr/local/bin
Оглавление В следующий раз будет одинffmpegСвязанные команды инструмента Понятно,нравитьсяffmpeg
、ffprobe
ждать,Все они находятся в глобальной PATH.,Можетсуществоватьиспользуется в системе Понятно。ffmpegСоответствующие библиотеки будут установлены на/usr/local/lib
Оглавление Вниз,Включая динамические и статические библиотеки.
бегатьffmpeg
Команда для просмотра поддерживаемых кодеков:
ffmpeg -codecs | grep cuvid
Как видите, недавно установленный ffmpeg уже содержит кодеки, относящиеся к NVIDIA. На этом этапе наш процесс компиляции успешно завершен!
На данный момент, я полагаю, вы знакомы с процессом компиляции исходного кода FFMPEG на облачном сервере Tencent Cloud GPU и с распространенными ошибками. Чувствуете ли вы себя уверенно? Создайте экземпляр графического процессора и испытайте удовольствие от ускоренного перекодирования видео~