- Ускорение на аппаратные средства en Linux Это зависит от VA-API. драйверы соответствующие и корректные настройки браузера и переменные среды.
- Крайне важно установить правильный драйвер VA-API (i965/iHD in). Intel(например, Mesa на AMD/Nouveau) и проверьте с помощью vainfo, какие кодеки на самом деле поддерживает графический процессор.
- Для использования VA-API в браузерах Firefox и на основе Chromium необходимо включить определенные флаги и во многих случаях запустить браузер с дополнительными параметрами.
- Принудительное использование H.264 с помощью расширений, таких как h264ify, и проверка загрузки графического процессора с помощью таких инструментов, как intel_gpu_top или DevTools, обеспечивают более плавное и эффективное воспроизведение.
Если вы ежедневно пользуетесь Linux, вы, вероятно, замечали, что при воспроизведении видео в браузере вентилятор начинает сильно вращаться, загрузка процессора достигает 100%, и кажется, что ноутбук вот-вот взлетит. Обычно это симптом того, что аппаратное ускорение видео Он не активирован должным образом: процессор в итоге выполняет работу, которую должен выполнять графический процессор, и результатом является больше шума, более высокая температура и сокращение времени автономной работы.
Хорошая новость в том, что сегодня Firefox, Chromium и почти все их производные уже включают в себя реальную поддержку VA-API и аппаратное ускорение в Linux, хотя по умолчанию это редко бывает хорошо оптимизировано. В этом руководстве мы шаг за шагом и очень подробно рассмотрим, как подготовить драйверы, как активировать VA-API в основных браузерах и как действительно проверить, что видео декодируется на графическом процессоре, а не на центральном процессоре.
Что такое аппаратное ускорение видео и зачем его включать?
Когда мы говорим об аппаратном ускорении в браузерах, мы подразумеваем перенос ресурсоемкой работы по декодированию и обработке видео на графический процессор (GPU), вместо того чтобы оставлять всю эту задачу центральному процессору (CPU). На практике это означает, что при воспроизведении мультимедийного контента (YouTube, Netflix(например, Twitch и т. д.) Видеокарта отвечает за декомпрессию и обработку видеокадров, в то время как центральный процессор значительно свободнее.
Технология, обеспечивающая связь между приложениями и графическими процессорами в Linux для обработки видео, называется VA-API (Video Acceleration API) и является де-факто стандартом в среде разработки Penguin. Его поддерживают многие программы: браузеры, плееры, такие как VLC или OBS Studio, для кодирования/декодирования с помощью видеокарты, и даже инструменты для редактирования и захвата видео.
Практические преимущества корректно работающей функции ускорения видео становятся очевидными в повседневном использовании: Меньшее использование процессора, меньшее энергопотребление, более низкие температуры и более стабильное воспроизведение, особенно в портативный старые или со скромными процессорами (например, 2 ядра/4 потока).
С другой стороны, существуют некоторые недостатки и ограничения, которые следует учитывать с самого начала: Многие старые графические процессоры больше не поддерживают современные кодеки, некоторые браузеры ограничивают разрешение при использовании H.264 вместо VP9/AV1, а нестрогая реализация VA-API может вызывать артефакты, «зелёный экран» или подтормаживания в некоторых видеороликах.
Кроме того, поддержка в Linux остается несколько более сложной, чем в других системах. WindowsСочетание драйверов + VA-API + браузер не всегда срабатывает с первого раза, и ситуация может сильно отличаться в зависимости от того, используете ли вы процессор Intel, AMD или другой. NVIDIA и в соответствии с распределением. Поэтому крайне важно сначала понять, какое у вас оборудование, какие драйверы вы используете и какие кодеки поддерживает ваша видеокарта.
Проверьте, какая у вас видеокарта и какие драйверы использует ваша операционная система Linux.
Прежде чем что-либо делать в Firefox или Chromium, необходимо точно знать, какая у вас установлена видеокарта и какой драйвер загружает ядро. Это крайне важно для выбора правильного пакета VA-API и предотвращения редких ошибок в дальнейшем.
Чтобы определить графический процессор в системе на базе Linux, просто запустите... терминал что-то вроде: lspci -k | grep -EA3 'VGA|3D|Display'В результате выполнения команды будет указана модель видеокарты и используемый ею модуль ядра, например, Intel UHD Graphics 600/620 с соответствующим драйвером. i915.
Если в вашем компьютере всего одна видеокарта, вы обычно увидите устройство типа "VGA-совместимый контроллер" и используемый драйвер, а если у вас гибридный ноутбук (Intel iGPU + AMD/NVIDIA dGPU), то отобразятся два графических устройства. Это важно, потому что в сценариях с несколькими графическими процессорами задействованы два устройства рендеринга DRI.
Чтобы определить, какие устройства рендеринга у вас есть, перечислите содержимое следующих файлов: /dev/dri с: ls /dev/driНа обычном компьютере вы увидите что-то вроде этого. card0 y renderD128; в гибридном варианте они также появятся. card1 y renderD129.
Если вы хотите пойти дальше и узнать, какой драйвер связан с каждым устройством DRI, вы можете обратиться к... /sys/kernel/debug/dri/128/name, /sys/kernel/debug/dri/129/name, и т.д. Например, файл, содержащий "i915", указывает на то, что этот узел рендеринга соответствует интегрированному графическому процессору Intel, тогда как файл с "radeon", "amdgpu" или "nouveau" будет представлять графический процессор AMD или NVIDIA, используемый системой.
Драйверы VA-API в Ubuntu и производных дистрибутивах: Intel, AMD и NVIDIA
После определения графического процессора следующим шагом является установка соответствующего драйвера VA-API, чтобы видеокарта могла декодировать видео аппаратно. В дистрибутивах на основе Debian/Ubuntu это делается следующим образом: apt с несколькими ключевыми пакетами.
Для графических процессоров Intel существует два основных семейства драйверов VA-API: «классический» i965 и более современный iHD (intel-media-driver), при этом обычно предлагаются также бесплатные и «платные» варианты. Грубо:
- i965-va-driverБесплатный драйвер для VA-API, поддерживаемый в поколениях Cantiga, Ironlake, Sandy Bridge, Ivy Bridge, Haswell, Broadwell, Skylake, Kaby Lake, Coffee Lake и Cannon Lake.
- i965-va-driver-shaders: запатентованный вариант для тех же поколений с определенными оптимизациями.
- драйвер Intel Media VaРекомендуется использовать бесплатный драйвер VA-API для локаций типа Broadwell и выше (Skylake, Kaby Lake, Coffee Lake, Whiskey Lake, Cannon Lake, Ice Lake, Alchemist, Meteor Lake и др.).
- Intel-media-va-driver-несвободный: проприетарная версия предыдущей, которая добавляет дополнительные функции, такие как аппаратное кодирование в современных кодеках, например H.265, в зависимости от оборудования.
Например, на типичном ноутбуке с Intel UHD 600/620 можно установить современную, фирменную версию следующим образом: sudo apt install intel-media-va-driver-non-free vainfo. Пакет vainfo Он используется для последующей проверки того, какие именно кодеки поддерживает ваш графический процессор.
После установки у вас должно быть /usr/lib/x86_64-linux-gnu/dri/ файл iHD_drv_video.so (для драйвера Intel Media) или i965_drv_video.so (для i965). Эти исполняемые файлы загружаются внутри VA-API, когда браузер или другое приложение запрашивает ускорение видео.
Для видеокарт AMD Radeon и NVIDIA, использующих драйвер Nouveau с открытым исходным кодом, центральным компонентом в Ubuntu является mesa-va-drivers, которая устанавливает необходимые бэкэнды VA-API для этих карт. В случае с видеокартами NVIDIA, использующими проприетарные драйверы, ситуация усложняется: сам VA-API напрямую не поддерживается, а используется мост VDPAU→VAAPI (например, с vdpau-va-driver), и тем не менее, в наши дни браузеры практически не используют VDPAU.
Если у вас гибридная система Intel + AMD или Intel + NVIDIA с драйверами с открытым исходным кодом, обычно устанавливают как драйвер VA-API для Intel (iHD или i965), так и драйвер VA-API для Intel. mesa-va-driversчтобы вы могли выбрать, какой графический процессор будет отвечать за декодирование видео. Позже мы рассмотрим, как выбрать конкретное устройство DRI с помощью переменных среды.
Драйверы VA-API в Fedora и их особенности работы с NVIDIA
В Fedora подход аналогичный, но менеджер пакетов и некоторые конкретные названия пакетов отличаются. Для поддержки VA-API в графических процессорах Intel обычно требуется установка следующих компонентов:
В терминале с правами администратора можно использовать: sudo dnf install libva-intel-driver intel-mediasdk intel-media-driverЭто гарантирует наличие как классических, так и новых драйверов, а также соответствующих им библиотек.
Если вы используете видеокарты AMD Radeon или NVIDIA с открытым драйвером Nouveau, поддержка VA-API включена в пакет. mesa-dri-driversкоторый обычно устанавливается по умолчанию в Fedora Workstation. Тем не менее, на некоторых системах фактический результат использования VA-API на AMD/Nouveau может быть непоследовательным или даже привести к сбою.
Преимущество Fedora перед Ubuntu в сфере проприетарных решений NVIDIA заключается в том, что мост VDPAU для VA-API (как libva-vdpau-driverОбычно его можно получить непосредственно из официальных репозиториев. Например, его можно установить с помощью sudo dnf install libva-vdpau-driverОднако это не гарантирует, что браузеры действительно будут использовать VDPAU на практике.
Используйте vainfo, чтобы проверить, какие кодеки поддерживает ваша видеокарта.
Просто установить пакеты недостаточно: необходимо знать, какие кодеки и режимы (кодирование/декодирование) поддерживает ваша видеокарта через VA-API, чтобы избежать проблем с неподходящими настройками. Здесь вступает в игру vainfoВ этом документе перечислены поддерживаемые профили для конкретного устройства DRI и драйвера VA-API.
Наиболее надежный способ запуска vainfo — это явное указание имени драйвера и интересующего устройства рендеринга, например: LIBVA_DRIVER_NAME=iHD vainfo --display drm --device /dev/dri/renderD128Это позволяет избежать путаницы в системах с несколькими графическими процессорами или установленными несколькими драйверами.
Типичный вывод vainfo начинается с указания версии VA-API и драйвера, а затем отображает длинный список «профилей и точек входа». Каждая строка обычно имеет профиль кодека (MPEG2, H264Main, H264High, HEVCMain, VP8, VP9, AV1…) и режим ввода/вывода.
Что нас интересует в контексте воспроизведения видео, так это появление подобных записей. VAEntrypointVLD для нужного кодека, поскольку это означает, что графический процессор может декодировать его аппаратно. Например, см. VAProfileH264High : VAEntrypointVLD подразумевает поддержку декодирования H.264; см. VAProfileVP9Profile0 : VAEntrypointVLD Это включает в себя аппаратную поддержку VP9 и так далее.
На старых видеокартах обычно поддерживается H.264, но отсутствуют VP8, VP9 или AV1, что вынуждает использовать расширения для браузеров, чтобы заставить веб-сайты использовать H.264 вместо более новых кодеков. Имейте в виду, что если видео существует только в формате VP9/AV1, то никакого волшебного способа нет: оно будет декодировано программным обеспечением.
Если vainfo возвращает ошибки типа «va_openDriver() failed» или не может инициализировать запрошенный драйвер, вероятно, ваша видеокарта несовместима с этим конкретным бэкэндом. В этом случае обычно помогает переключение с iHD на i965 на старых системах Intel или проверка корректной установки соответствующего пакета Mesa для AMD/Nouveau.
Настройте переменные среды для исправления драйвера VA-API и устройства DRI.
Во многих руководствах предполагается, что первым устройством DRI (renderD128) всегда является встроенный графический процессор (iGPU) и что система автоматически выбирает правильный драйвер, но на практике, особенно на ноутбуках с несколькими графическими процессорами, это может быть не так. Отсюда и важность установки некоторых переменных окружения перед запуском браузера.
Три наиболее часто используемые переменные для управления VA-API и графическим бэкэндом Firefox в Linux:
- MOZ_WAYLAND_DRM_DEVICE: путь к устройству DRI, которое следует использовать (например,
/dev/dri/renderD128o/dev/dri/renderD129). - LIBVA_DRIVER_NAME: краткое имя загружаемого драйвера VA-API (
i965,iHD,nouveau,r600,radeonsiИ т.д.). - MOZ_X11_EGL / MOZ_ENABLE_WAYLAND: целочисленные индикаторы (0/1) для включения использования EGL и конкретного маршрута в зависимости от того, используете ли вы Xorg или Wayland.
Например, чтобы запустить Firefox в сеансе X11, используя Intel HD с драйвером iHD, можно использовать что-то вроде: MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD128 LIBVA_DRIVER_NAME=iHD MOZ_X11_EGL=1 firefoxВ Вейланде вариант был бы похожим, но с MOZ_ENABLE_WAYLAND=1 вместо MOZ_X11_EGL.
Чтобы мне не приходилось писать это каждый раз. Загрузкамногие пользователи добавляют LIBVA_DRIVER_NAME=iHD (или кто бы это ни был) в глобальный файл /etc/environmentчтобы вся система по умолчанию имела этот драйвер VA-API. Тем не менее, сохраните MOZ_WAYLAND_DRM_DEVICE и MOZ_X11_EGL/MOZ_ENABLE_WAYLAND в лаунчере или скрипт Firefox по-прежнему рекомендуется использовать на гибридных ноутбуках.
На таких рабочих средах, как KDE Plasma, вы можете отредактировать меню запуска Firefox и добавить "env" с последующими переменными к команде выполнения, чтобы не всегда зависеть от терминала. Что-то вроде Exec=env MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD128 LIBVA_DRIVER_NAME=iHD MOZ_X11_EGL=1 firefox %u Обычно это хорошо работает.
Включение аппаратного ускорения в Firefox (VA-API + WebRender)
Компания Mozilla представила официальную поддержку VA-API в Firefox для Linux, начиная с Wayland и позже расширив её до X11, но долгое время она была отключена по умолчанию или реализована лишь частично. Именно поэтому во многих руководствах рекомендуется настраивать несколько внутренних параметров, чтобы получить от программы максимальную отдачу.
Первым делом нужно перейти на знаменитую страницу расширенных настроек: введите about:config В адресной строке примите предупреждение и воспользуйтесь поисковой строкой вверху. Далее существует несколько соответствующих групп корректировки.
Для включения современного композитора на основе графического процессора необходимо либо активировать движок WebRender, либо принудительно использовать OpenGL: Буска gfx.webrender.all и поместите его в правдаА если хотите, можете также принудить layers.acceleration.force-enabled a правда чтобы гарантировать, что Firefox попытается использовать графический процессор.
Во-вторых, необходимо убедиться, что Firefox использует FFmpeg с VA-API вместо своих внутренних декодеров там, где это необходимо. Для этого найдите эти ключи и измените их значения:
- media.ffmpeg.vaapi.enabled → правда (Разрешить использование VA-API через FFmpeg).
- media.ffvpx.enabled → ложный (Чтобы принудительно использовать FFmpeg, отключите встроенный декодер FFVPX).
- media.av1.enabled → ложный Если ваша видеокарта не поддерживает AV1 на аппаратном уровне, веб-сайт предложит вам другие, более "совместимые" кодеки.
- media.rdd-vpx.enabled → На современных видеокартах с аппаратной поддержкой VP9 можно перейти по следующему пути: правдаВ более старых версиях графики предпочтительнее оставить всё как есть; ложный.
На компьютерах с несколькими графическими процессорами и драйверами с открытым исходным кодом (например, Intel + AMD) вы также можете поэкспериментировать с переменными MOZ_WAYLAND_DRM_DEVICE и LIBVA_DRIVER_NAME, чтобы определить, будет ли видео декодироваться на встроенном или дискретном графическом процессоре. Например, указывая на /dev/dri/renderD129 Используйте LIBVA_DRIVER_NAME=r600 или radeonsi, чтобы использовать Radeon в качестве видеоускорителя.
В системах, где даже после корректировки этих параметров VP9 и AV1 остаются слишком ресурсоемкими, практическим решением является принудительное использование H.264 с такими расширениями, как... h264ify o Улучшенный h264ify. Эти расширения блокируют VP8/VP9/AV1 на таких сайтах, как YouTube, и специально запрашивают потоки AVC1 (H.264), которые почти все графические процессоры с VA-API декодируют без проблем.
После внесения изменений полностью закройте Firefox, запустите его с соответствующими переменными среды и попробуйте воспроизвести видео на YouTube в разрешении 1080p60, отслеживая при этом загрузку процессора и видеокарты. Вы особенно заметите улучшение на компьютерах, которым более десяти лет, где центральный процессор уже с трудом справляется с обработкой видео высокого разрешения с помощью программного обеспечения.
Убедитесь, что Firefox использует графический процессор для декодирования видео.
Недостаточно, чтобы браузер «казалось» работающим более плавно: необходимо объективно убедиться, что используется VA-API и что кадры декодируются на графическом процессоре. В Firefox под Linux это можно сделать несколькими способами.
Первый способ — просто посмотреть вывод терминала, из которого вы запустили Firefox с настроенными переменными окружения. Если всё пройдёт хорошо, вы должны получить сообщения от libva info указывая, что va_openDriver() returns 0 и ссылки на загруженный драйвер (например, i965 или iHD) без последующих ошибок.
Если вы используете видеокарты Intel, вы можете прибегнуть к следующему способу: intel_gpu_top (часть intel-gpu-tools) для просмотра конкретных разделов активности, таких как «Видео», которые показывают процент использования механизма декодирования. Без VA-API вы увидите в этом столбце нулевое значение, даже если видео воспроизводится с рывками; при активации VA-API во время воспроизведения видео должен отображаться заметный процент.
В видеокартах Radeon аналогичный инструмент выглядит следующим образом: radeontop, которая отображает полосы использования графического процессора и видеопамяти. Хотя в нем не всегда есть отдельный, явно выделенный раздел для декодирования видео, легко заметить, как возрастает активность, когда VA-API запущен и драйвер (например, r600 или radeonsi) корректно направлен на устройство Radeon DRI.
В средах с несколькими графическими процессорами может также потребоваться добавить такие параметры, как... --bus В функции radeontop следует отслеживать только соответствующую видеокарту. В любом случае, закономерность та же: если нагрузка на ЦП снижается, а у графического процессора появляется больше работы при воспроизведении видео, значит, мы на верном пути.
Наконец, повторение того же теста с включенными и выключенными расширениями h264ify позволяет проверить реальное влияние замены VP9/AV1 на H.264 на потребление ресурсов. Измерения, проведенные на системах с процессорами i5-2450M и i7-7700HQ, показывают снижение загрузки ЦП, которое на процессорах более низкой мощности может достигать половины при использовании VA-API.
Аппаратное ускорение в Chromium, Chrome и производных (VA-API + флаги)
Chromium 88 ознаменовал поворотный момент, представив «серьезную» поддержку VA-API в Linux, хотя и с некоторыми нюансами: сильная зависимость от Xorg, необходимость использования определенных флагов и лучшая поддержка Intel и NVIDIA, чем Radeon. Тем не менее, эта поддержка распространилась на всю семью: Google ChromeEdge, Brave, Vivaldi, Opera и др.
Первым шагом в любом браузере на основе Chromium является проверка страницы внутренних флагов, доступной по адресу [укажите путь к странице]. chrome://flags в Chrome и Chromium, brave://flags в фильме «Храбрая сердцем» edge://flags в Edge, vivaldi://flags в Вивальди или opera://flags в Опере. Оказавшись внутри, найдите и активируйте как минимум:
- Переопределить список программного рендеринга → Включено (принудительно игнорирует черный список графических процессоров и активирует функции ускорения).
- Аппаратное ускорение декодирования видео → Включено (включает аппаратное декодирование видео).
После включения этих параметров ваш браузер предложит перезапустить его, чтобы изменения вступили в силу; сделайте это, а затем посетите [ссылку]. chrome://gpu (или вариант для вашего браузера), чтобы проверить состояние разделов «Состояние графических функций» и «Информация об ускорении видео». В идеале, все важные данные должны отображаться как "Аппаратное ускорение".
Следующий ключевой момент в Chromium и его производных — это способ запуска приложения с помощью следующей строки кода. команды. В сессиях Xorg обычно рекомендуется добавлять этот флаг. --use-gl=desktopтогда как в сессиях Wayland, где браузер работает на XWayland, его часто используют. --use-gl=egl чтобы избежать проблем.
Кроме того, в Chromium существует набор флагов, связанных с VA-API, которые следует добавить либо в команду выполнения, либо в файл конфигурации флагов:
--enable-accelerated-video-decode--enable-accelerated-video-encode--enable-features=VaapiVideoDecoder--disable-features=UseChromeOSDirectVideoDecoder
Например, в Xorg с Google В стабильной версии Chrome можно запустить что-то подобное: google-chrome-stable --use-gl=desktop --enable-accelerated-video-decode --enable-accelerated-video-encode --enable-features=VaapiVideoDecoder --disable-features=UseChromeOSDirectVideoDecoderТа же закономерность применима и к Brave (brave-browser), Вивальди (vivaldi), Опера (opera) или Edge (microsoft-edge).
В таких дистрибутивах, как CachyOS, Arch и аналогичных системах, многие браузеры позволяют централизовать эти флаги в файлах, например, таких как ~/.config/chromium-flags.conf, ~/.config/brave-flags.conf или что-то подобное. Другой распространенный вариант — отредактировать файл. .desktop из браузера, скопируйте это из /usr/share/applications a ~/.local/share/applications и добавьте флаги к строке Exec=.
Ещё раз подчеркну: если вы хотите, чтобы всё сохранялось и не зависело от терминала, лучше отредактировать это. .desktop или средство запуска в меню среды рабочего стола, чтобы оно всегда добавляло правильные флаги. Таким образом, при открытии браузера из меню или панели Dock параметры VA-API всегда учитываются.
Проверка аппаратного декодирования в браузерах Chromium
В семействе Chromium существует два основных способа проверки того, что декодирование видео происходит на аппаратном уровне. Один из них более универсален, а другой использует инструменты разработки.
Самый быстрый способ — посетить... chrome://gpu (или аналогичный инструмент в вашем браузере) и проверьте, что в разделе «Информация об ускорении видео» есть записи со статусом «Аппаратное ускорение». Это даёт общее представление о возможностях, но не гарантирует, что конкретное видео действительно будет использовать графический процессор.
Чтобы проверить реальный пример, откройте видео (например, на YouTube), затем откройте инструменты разработчика, нажав F12 или Ctrl+Shift+I, и найдите вкладку Медиафайлы (Если она не отображается, вы найдете ее в меню дополнительных вкладок). В разделе «Медиа» выберите проигрыватель для воспроизводимого видео.
В подробной информации о плеере вы увидите поле, указывающее тип используемого видеодекодера и то, установлен ли параметр "Аппаратный декодер" в значение "истина". В идеале вы должны видеть декодер, связанный с VA-API/GL и с включенным аппаратным декодером; если же вы видите имена, например, VpxVideoDecoder, FFmpegVideoDecoder o Dav1dVideoDecoder Если не учитывать аппаратную часть, то, скорее всего, используется программное обеспечение.
В некоторых более старых версиях рекомендовалось использовать chrome://media-internals Для этой же проверки просмотрите такие поля, как kVideoDecoderNameгде значение типа MojoVideoDecoder Это указывало на использование аппаратного ускорения в противовес чисто программным декодерам. В современных инструментах вкладка «Медиа» в инструментах разработчика в значительной степени вытеснила эту страницу.
Наконец, вы можете объединить эту проверку с инструментами мониторинга графического процессора, аналогичными тем, что используются в Firefox (intel_gpu_top, radeontop, amdgpu_top, nvtop и т. д.), гарантируя, что при воспроизведении видео в браузере видеопроцессоры графического процессора будут показывать реальную активность.
Кодировки и кодеки: H.264, VP9, AV1 и расширения, такие как h264ify.
Одна деталь, которая часто остается незамеченной, заключается в том, что, даже если графический процессор поддерживает VA-API, если видеокодек не реализован в аппаратном обеспечении, вам неизбежно придется использовать программное декодирование. Именно здесь вступают в игру расширения и дополнительные настройки.
H.264/AVC1 — это универсальный кодек, который практически все графические процессоры, выпущенные несколько лет назад, хорошо обрабатывают через VA-API, в то время как VP8, VP9 и AV1 аппаратно ускоряются только в относительно новых поколениях. Это отчетливо видно на выходе vainfoВ то время как более старые графические процессоры поддерживают только H.264 и практически ничего больше.
Однако такие платформы, как YouTube, отдают приоритет VP9 или даже AV1 для современных браузеров, оставляя H.264 в качестве второстепенного варианта или только для определенных разрешений. Поэтому, даже если у вас настроен VA-API, если YouTube решит показывать вам видео в формате VP9, а ваша видеокарта его не поддерживает, нагрузка ляжет на центральный процессор.
Именно здесь на помощь приходят такие расширения, как... h264ify А его форки (Enhanced h264ify и др.) чрезвычайно полезны: они блокируют VP8/VP9/AV1 и заставляют веб-сайт использовать доступный профиль H.264, если он существует. Однако, если для конкретного видео нет версии в формате H.264, создать её будет невозможно.
Стоит отметить, что YouTube, при принудительном использовании H.264, часто ограничивает максимальное разрешение до 1080p при 60 кадрах в секунду, в то время как с VP9/AV1 он может предложить 1440p, 4K и высокую частоту кадров. Поэтому включение h264ify иногда означает жертвование максимально возможным разрешением в обмен на более плавное воспроизведение, которое меньше нагружает процессор.
В случае с кодеками следующего поколения, такими как AV1, аппаратную поддержку декодирования имеют только самые современные графические процессоры, поэтому на большинстве современных ПК лучше всего отключить декодирование в браузере, если вы замечаете, что вентиляторы начинают работать как турбины при просмотре видео.
Реальное влияние на производительность: когда стоит бороться с VA-API
Эмпирические тесты, проведенные на ноутбуках с 2-ядерными 4-поточными процессорами (например, i5-2450M прошлых лет), показывают, что включение VA-API и делегирование декодирования H.264 графическому процессору может практически вдвое снизить среднюю загрузку ЦП во время воспроизведения видео 1080p60 в Firefox. Это приводит к более холодному и тихому звучанию оборудования, а также к гораздо более стабильной работе.
В более новых машинах с 4-ядерными/8-поточными процессорами или выше (например, i7-7700HQ) разница в процентном соотношении загрузки ЦП менее существенна, иногда составляя от 3 до 6%. Тем не менее, нагрузка, как правило, распределяется лучше, а экстремальные пики использования, которые могут вызывать небольшие сбои, уменьшаются.
Интересно, что если сравнить воспроизведение в браузере с использованием VA-API с воспроизведением в плеере, таком как VLC, также настроенном с использованием VA-API, то можно заметить, что потребление ресурсов процессора браузером обычно значительно выше. Это говорит о том, что в интеграции VA-API и управлении передачей данных между ЦП и ГП в Linux еще есть возможности для улучшения.
В любом случае, для скромных или старых ноутбуков, потратив некоторое время на тонкую настройку аппаратного ускорения, можно добиться того, чтобы не пришлось отказываться от видео в разрешении 1080p, а можно было потреблять контент высокого разрешения без снижения производительности системы. На мощных системах улучшение действительно есть, но оно более тонкое, и во многих случаях, если вы и так уже «достаточно хорошо справляетесь», нет смысла слишком усложнять ситуацию.
Совершенно очевидно, что сочетание Linux + современных браузеров + VA-API всё ещё несколько отстаёт от возможностей, достигаемых в Windows, где способы передачи обработки видео на графический процессор более отлажены и стандартизированы. Тем не менее, при соблюдении необходимых мер, вполне достойное поведение пингвина можно добиться и на рабочем столе.
Если вы дочитали до этого места, то уже знаете, что включение аппаратного ускорения видео в Linux — это не просто установка галочки в браузере, а правильная настройка драйверов VA-API, переменных среды, внутренних флагов и выбора кодеков, чтобы Firefox, Chrome, Brave и другие браузеры бесперебойно работали с вашей видеокартой, а не создавали излишнюю нагрузку на центральный процессор.
Страстный писатель о мире байтов и технологий в целом. Мне нравится делиться своими знаниями в письменной форме, и именно этим я и займусь в этом блоге: покажу вам все самое интересное о гаджетах, программном обеспечении, оборудовании, технологических тенденциях и многом другом. Моя цель — помочь вам ориентироваться в цифровом мире простым и интересным способом.