автор:Jerome Wu
Исходная ссылка:Speedup FFmpeg without compiling from source code
переводчик:Yodonicc
FFmpeg — хороший инструмент для обработки мультимедиа. По умолчанию он использует многопоточный процессор для выполнения задач, что сильно нагружает ваш компьютер и большую часть времени работает очень медленно.
Если вы ищете в Google, как увеличить скорость FFmpeg,Вы можете найти информацию об использовании-preset
обсуждение,Это снижает степень сжатия для более высокой скорости (компромисс между размером файла и скоростью).,Еще один интересный способ — воспользоваться преимуществами графического процессора nVidia (nvenc, nvdec и cuvid), но это основы:
По моему собственному опыту, я потратил много часов на изучение того, как установить и скомпилировать FFmpeg, но в конце концов это не удалось, потому что мой графический процессор не мог поддерживать большинство функций, что меня огорчило.
Так,Есть ли другой способ ускорить FFmpeg? некоторый,И вы можете использовать его за считанные секундыVAAPI
Сделай это。давайте проведем эксперимент,Посмотрите разницу.
Представьте, что вы создаете сервис, предоставляющий видеопотоки разного качества (720p, 1080p и т. д.), поэтому вам необходимо уменьшить масштаб загруженных видео до разных разрешений.
давайте начнем сh264infoСкачать образец видео,и масштабировать без каких-либо опций:
$ ffmpeg -i gravity.mp4 \
-c:v libx264 \
-s 1024x428 \
-b:v 1M \
out.mp4
Это занимает около 42 секунд (скорость = 3,5x), а размер файла составляет 21 МБ. (Исходный размер 355 МБ)
НажмитездесьУзнайте больше оpresetподробности
Используя предустановку, вы можете легко ускорить FFmpeg при работе с файлами большего размера, что приемлемо, если на жестком диске достаточно места.
$ ffmpeg -i gravity.mp4 \
-c:v libx264 \
-preset ultrafast \
-s 1024x428 \
-b:v 1M \
out.mp4
Это занимает около 22 секунд (скорость = 6x).,Размер файла 20 МБ. (Интересно,это лучше, чем-preset default
😎Будь маленьким)。
API ускорения видео (VAAPI) не является секретом FFmpeg, но трудно заметить, насколько легко он помогает ускорить FFmpeg. Преимущества использования VAAPI:
i965-va-driver
Вот и все。Чтобы использовать VAAPI в Ubuntu,Для начала необходимо установить драйвер и использоватьvainfo
Статус проверки команды。
$ 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, тогда вы можете использовать следующую команду для масштабирования:
$ 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 дает вам четырехкратное ускорение по сравнению с исходным кодом и немного меньший размер файла.
Фактически, если вы потратите время и усилия на изучение вариантов графического процессора nVidia, вы сможете получить еще более высокую скорость, но это все равно отличная скорость без особых усилий и затрат, верно? 😄
Если эта статья оказалась для вас полезной, не стесняйтесь оставлять комментарии и лайки, спасибо!
Примечание:Особая благодарность техническому директору Дажао (Zhao Da) за проверку и исправление перевода этой статьи.。