Без перемещения исходного кода время выполнения командной строки FFmpeg можно сократить на 400 %.
Без перемещения исходного кода время выполнения командной строки FFmpeg можно сократить на 400 %.

автор:Jerome Wu

Исходная ссылка:Speedup FFmpeg without compiling from source code

переводчик:Yodonicc

FFmpeg — хороший инструмент для обработки мультимедиа. По умолчанию он использует многопоточный процессор для выполнения задач, что сильно нагружает ваш компьютер и большую часть времени работает очень медленно.

Если вы ищете в Google, как увеличить скорость FFmpeg,Вы можете найти информацию об использовании-presetобсуждение,Это снижает степень сжатия для более высокой скорости (компромисс между размером файла и скоростью).,Еще один интересный способ — воспользоваться преимуществами графического процессора nVidia (nvenc, nvdec и cuvid), но это основы:

  • У вас нет совместимой графической карты nVidia.
  • Вам необходимо установить драйвер графического процессора nVidia и CUDA (болезненно в среде Linux).
  • Если вы не можете найти работающую версию, вам необходимо скомпилировать FFmpeg из исходного кода.

По моему собственному опыту, я потратил много часов на изучение того, как установить и скомпилировать FFmpeg, но в конце концов это не удалось, потому что мой графический процессор не мог поддерживать большинство функций, что меня огорчило.

Так,Есть ли другой способ ускорить FFmpeg? некоторый,И вы можете использовать его за считанные секундыVAAPIСделай это。давайте проведем эксперимент,Посмотрите разницу.

Базовый вариант: масштабируйте видео без каких-либо дополнительных опций.

Представьте, что вы создаете сервис, предоставляющий видеопотоки разного качества (720p, 1080p и т. д.), поэтому вам необходимо уменьшить масштаб загруженных видео до разных разрешений.

давайте начнем сh264infoСкачать образец видео,и масштабировать без каких-либо опций:

Язык кода:shell
копировать
$ ffmpeg -i gravity.mp4 \
    -c:v libx264 \
    -s 1024x428 \
    -b:v 1M \
    out.mp4

Это занимает около 42 секунд (скорость = 3,5x), а размер файла составляет 21 МБ. (Исходный размер 355 МБ)

Используйте -preset для ускорения работы с файлами большего размера.

НажмитездесьУзнайте больше оpresetподробности

Используя предустановку, вы можете легко ускорить FFmpeg при работе с файлами большего размера, что приемлемо, если на жестком диске достаточно места.

Язык кода:shell
копировать
$ ffmpeg -i gravity.mp4 \
    -c:v libx264 \
    -preset ultrafast \
    -s 1024x428 \
    -b:v 1M \
    out.mp4

Это занимает около 22 секунд (скорость = 6x).,Размер файла 20 МБ. (Интересно,это лучше, чем-preset default😎Будь маленьким)。

Использование VAAPI для ускорения встроенных карт/карт Intel GPU

API ускорения видео (VAAPI) не является секретом FFmpeg, но трудно заметить, насколько легко он помогает ускорить FFmpeg. Преимущества использования VAAPI:

  • Карты со встроенным графическим процессором дешевы (и одна у вас уже есть)
  • вам просто нужно установитьi965-va-driverВот и все。
  • Вам не нужно компилировать FFmpeg, поскольку этот флаг включен по умолчанию.

Чтобы использовать VAAPI в Ubuntu,Для начала необходимо установить драйвер и использоватьvainfoСтатус проверки команды。

Язык кода:shell
копировать
$ sudo apt-get install i965-va-driver
$ vainfo
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Ivybridge Mobile - 2.1.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD

Если вы видите вывод, аналогичный приведенному выше, это означает, что ваша карта Intel GPU поддерживает VAAPI, тогда вы можете использовать следующую команду для масштабирования:

Язык кода:shell
копировать
$ ffmpeg -hwaccel vaapi \
    -hwaccel_device /dev/dri/renderD129 \
    -hwaccel_output_format vaapi \
    -i gravity.mp4 \
    -vf "scale_vaapi=w=1024:h=428" \
    -c:v h264_vaapi \
    -b:v 1M \
    out.mp4

Это занимает около 10 секунд (скорость = 14,3x), а размер файла составляет 19 МБ.

Поместив их в график, использование VAAPI дает вам четырехкратное ускорение по сравнению с исходным кодом и немного меньший размер файла.

post11image1.png
post11image1.png

Фактически, если вы потратите время и усилия на изучение вариантов графического процессора nVidia, вы сможете получить еще более высокую скорость, но это все равно отличная скорость без особых усилий и затрат, верно? 😄

Если эта статья оказалась для вас полезной, не стесняйтесь оставлять комментарии и лайки, спасибо!

Примечание:Особая благодарность техническому директору Дажао (Zhao Da) за проверку и исправление перевода этой статьи.

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