Аппаратное ускорение Linux в браузере

Обновлено: 21.11.2024

С современными видеокартами часто можно переложить задачи кодирования и декодирования видео на них с ЦП, чтобы снизить энергопотребление и сделать больше ресурсов доступными для остальной части системы. По сравнению с центральными процессорами, графические процессоры намного эффективнее в работе. Однако для этой разгрузки требуется как аппаратная, так и программная поддержка, и последняя, ​​в частности (по крайней мере, в мире Linux), претерпела значительную эволюцию в последние годы. Таким образом, онлайн-документация скудна и неполна, непоследовательна и часто устарела. Кроме того, поддержка аппаратного ускорения видео в мире Linux, к сожалению, разделена между разными API с разными уровнями поддержки.

Преимущества

Исторически преимущества аппаратного ускорения в Linux были неопределенными, но вполне вероятно, что сегодня поддержка значительно улучшилась. По крайней мере, в некоторых относительно типичных сценариях прирост производительности при использовании аппаратного декодирования может быть огромным, при этом загрузка ЦП снижается примерно на 90 %.

API и аппаратная/программная поддержка

Установка

VA-API

VA-API имеет широкую поддержку программного обеспечения и даже используется по умолчанию в таких приложениях, как MPV, когда он доступен.

Поддержку Nouveau и различных драйверов AMD можно добавить, просто установив пакет mesa-va-drivers.

Для Intel это разделение по поколениям, а также на бесплатные и несвободные драйверы. Несвободные драйверы необходимы для кодирования мультимедиа, а бесплатные драйверы могут только декодировать.

Для оборудования Intel 8+ поколения бесплатный драйвер можно установить с помощью пакета intel-media-va-driver. Вы можете найти несвободный драйвер в пакете intel-media-va-driver-non-free после добавления несвободного компонента в свои источники apt.

Для более старого оборудования Intel бесплатный драйвер можно установить с помощью пакета i965-va-driver. Несвободный драйвер можно установить вместе с пакетом i965-va-driver-shaders после добавления несвободного компонента в ваши источники apt. Этот драйвер поддерживает графические процессоры до 9-го поколения. Если установлены оба драйвера, более новый драйвер из intel-media-va-driver предпочтительнее i965-va-driver (начиная с Debian 11/Bullseye).

Выбор драйвера можно переопределить, задав для переменной среды LIBVA_DRIVER_NAME конкретный драйвер, например, LIBVA_DRIVER_NAME=i965 (чтобы использовать драйвер из i965-va-driver на Bullseye) или LIBVA_DRIVER_NAME=iHD (для использования драйвера из intel-media-va-driver в Debian 10/Buster). Дополнительные сведения о том, как установить эту переменную среды для всей системы или для каждого пользователя, см. в разделе EnvironmentVariables.

ВДПАУ

VDPAU имеет значительно больше ограничений по сравнению с VA-API, но, тем не менее, для некоторых пользователей это единственный вариант. В частности, любой, кто использует проприетарные драйверы NVIDIA. Он не поддерживается ни одним из основных браузеров, кроме GNOME Web, но полезен для локального воспроизведения. Для этого рекомендуется MPV.

Чтобы включить поддержку VDPAU для драйверов AMD (radeon и amdgpu) вместе с драйвером Nouveau с открытым исходным кодом для карт NVIDIA, установите vdpau-driver-all пакет.

Это также активирует поддержку VDPAU через серверную часть OpenGL/VA-API для графических процессоров Intel. Однако это имеет серьезные проблемы со стабильностью и может вообще не работать на некоторых устройствах Intel. Если возможно, настоятельно рекомендуется использовать VA-API вместо Intel.

Чтобы включить поддержку VDPAU для проприетарных драйверов NVIDIA, необходимо выбрать соответствующий пакет для вашей версии драйвера. Если вы установили последние версии драйверов через пакет nvidia-driver, вы можете просто установить пакет nvidia-vdpau-driver.

НВЕНК/НВДЕК

NVDEC поддерживается пакетом libnvcuvid1.

NVENC поддерживается пакетом libnvidia-encode1.

Для устаревших драйверов вместо этого выберите пакет libnvidia-legacy-340xx-encode1 или libnvidia-legacy-390xx-encode1.

Однако это только платные библиотеки времени выполнения. Приложения в основном архиве Debian, включая FFmpeg (начиная с libavcodec58 7:4.4.1-2), и пользователи библиотек FFmpeg будут загружать библиотеки из несвободного драйвера, если они доступны.

Проверка поддержки оборудования

Вы можете найти полный отчет о том, работают ли VA-API или VDPAU и какие кодеки они поддерживают, установив пакеты vainfo и vdpauinfo и выполнив их команды. vainfo и vdpauinfo

Интел

vainfo отобразит кодеки, поддерживаемые для декодирования и кодирования.

Аппаратное ускорение графического процессора Intel можно подтвердить с помощью intel_gpu_top, найденного в vainfo. Все, что больше 0% в разделе "ENGINE Video", подтверждает, что оно работает в любом тестируемом приложении и кодеке, например:

Примечание. При использовании intel_gpu_top тестируйте каждое приложение отдельно.

Поддержка приложений

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

mpv имеет хорошую поддержку аппаратного ускорения, хотя по умолчанию оно не включено. Чтобы включить его, используйте ключ командной строки –hwdec. Его также можно сделать используемым по умолчанию, добавив строку типа «hwdec» в файл конфигурации mpv (например, $HOME/.config/mpv/mpv.conf). [hwdec также может принимать различные значения, хотя в идеале должно быть достаточно указать переключатель без значения. См. справочную страницу mpv для получения более подробной информации (где рекомендуется не устанавливать переключатель).]

Если используется аппаратное ускорение, вывод mpv будет содержать следующие строки:

Аппаратное ускорение в VLC управляется в графическом интерфейсе через «Инструменты → Настройки → Ввод / Кодеки → Декодирование с аппаратным ускорением» или с помощью параметра CLI –avcodec-hw value ['value' is обязательно].

Если используется аппаратное ускорение, выходные данные VLC будут содержать следующие строки:

Поддержка браузера

Видео в Интернете является одним из наиболее важных вариантов использования аппаратного ускорения видео, поскольку без него такие сайты, как YouTube, будут сильно загружать ЦП (и, следовательно, энергопотребление), что особенно важно для мобильных устройств, таких как ноутбуки и планшеты.

    Chromium или Chrome — поддержка VA-API включена по умолчанию в Chromium.

VDPAU вообще не поддерживается в Chromium или Firefox. Единственный браузер, который его поддерживает, — это GNOME Web, доступный в пакете epiphany-browser. GNOME Web использует GStreamer для этой поддержки, а также требует пакета gstreamer1.0-plugins-bad для правильной работы поддержки VDPAU.

Возможно, вы заметили, что просмотр HD-видео с Youtube и других подобных веб-сайтов в браузерах Google Chrome или Chromium в Linux значительно увеличивает нагрузку на процессор, а если вы используете ноутбук, он сильно нагревается, а батарея очень быстро разряжается. Это связано с тем, что Chrome/Chromium (также и Firefox, но принудительно это сделать невозможно) не поддерживает аппаратное ускорение декодирования видео в Linux.

В этой статье объясняется, как установить бета-версию или сборку для разработки Chromium, которая включает исправление, активирующее VA-API в Linux и обеспечивающее поддержку декодирования видео с ускорением на GPU, что должно значительно снизить нагрузку на ЦП при просмотре HD-видео в Интернете. Инструкции относятся только к видеокартам Intel и Nvidia, так как у меня нет видеокарты ATI/AMD, чтобы попробовать это, и у меня нет опыта работы с такими видеокартами, но из того, что я прочитал, это должно работать с ATI/AMD. Графика AMD тоже.

Это Chromium из репозиториев Ubuntu (18.04) без декодирования видео с GPU-ускорением при воспроизведении видео YouTube с разрешением 1080p:

То же самое видео YouTube 1080p, воспроизводимое в Chromium с патчем VA-API и включенным аппаратным ускорением декодирования видео в Ubuntu 18.04:

Обратите внимание на использование ЦП на снимках экрана. Оба скриншота сделаны на моем стареньком, но еще достаточно мощном десктопе. На моем ноутбуке загрузка процессора Chromium без аппаратного ускорения намного выше.

Патч для добавления поддержки VA-API в Chromium в Linux под названием «Включить VAVDA, VAVEA и VAJDA в Linux только с VAAPI» изначально был отправлен в Chromium более чем год назад, но он еще не объединен.

Исправления, используемые в сборках Chromium Ubuntu с включенным VA-API, используемые в этой статье, доступны здесь.

В качестве дополнительного преимущества, используя Chromium с VA-API, установленным из PPA, вы получаете иметь нативные сборки Chromium (фактические пакеты DEB) в Ubuntu вместо новых сборок Snap Chromium по умолчанию, которые Ubuntu начала продвигать по умолчанию.

Установка и использование браузера Chromium с поддержкой VA-API в Ubuntu или Linux Mint

Всем, кто читает это, должно быть ясно, что Chromium Beta или Dev Branch не считаются стабильными. Таким образом, вы можете найти ошибки, он может зависнуть и т. Д. Сейчас он работает нормально, но кто знает, что может произойти после какого-либо обновления. Использование приведенных ниже PPA перезапишет вашу текущую стабильную установку Chromium (если она уже установлена).

Более того, репозитории Chromium Beta и Dev Branch PPA, используемые в этой статье, требуют выполнения некоторых дополнительных действий, если вы хотите включить поддержку Widevine (чтобы вы могли воспроизводить видео Netflix, платные видео YouTube и т. д.) или если вам нужно такие функции, как синхронизация (для которой требуется регистрация ключа API и настройка его в вашей системе).Инструкции по выполнению этих настроек объясняются в описании PPA Chromium Dev Branch.

Для графики Nvidia необходимо обновить видеодрайвер vdpau, чтобы реализовать vaQuerySurfaceAttributes. Таким образом, для использования с Nvidia требуется пропатченный vdpau-va-driver. К счастью, PPA-репозиторий Chromium-dev предоставляет этот исправленный пакет, и я прикреплю к нему ссылку, чтобы вы могли загрузить его вручную, если захотите использовать бета-репозиторий PPA.

Chromium с патчем VA-API также доступен для некоторых других дистрибутивов Linux в сторонних репозиториях, таких как Arch Linux (для Nvidia вам понадобится этот исправленный драйвер libva-vdpau-driver). Если вы не используете Ubuntu или Linux Mint, вам придется найти эти пакеты самостоятельно.

<р>1. Добавьте Chromium с поддержкой PPA VA-API.

Chromium с поддержкой VA-API доступен в двух репозиториях PPA: в одном — Chromium Beta, а в другом — Chromium Dev. Выберите один из 2 (и добавьте только один)! Бета-репозиторий должен быть более стабильным.

Чтобы добавить PPA-ветвь Chromium Beta и установить браузер Chromium в Ubuntu, Linux Mint и Ubuntu или разновидностях Linux Mint, таких как Xubuntu, Kubuntu, Ubuntu MATE, Lubuntu, Linux Mint MATE и т. д., используйте:

Вы можете добавить PPA-репозиторий ветки Chromium Dev и установить последнюю сборку для разработки браузера Chromium либо в Ubuntu, либо в Linux Mint (и других дистрибутивах Linux на основе Ubuntu, включая elementary, а также разновидности Ubuntu или Linux Mint, такие как Xubuntu, Kubuntu, Ubuntu MATE, Linux Mint MATE и т. д.), используя:

<р>2. Закрепите PPA с приоритетом 1001.

Версия Chromium из PPA может быть перезаписана обновлением Ubuntu. Чтобы избежать этого, мы можем закрепить пакеты Chromium VAAPI PPA с приоритетом 1001 (500 по умолчанию в Ubuntu и> 1000 означает установку пакетов, даже если это даунгрейд), чтобы пакеты из PPA не перезаписывались. любыми обновлениями Ubuntu, и их можно установить, даже если версия в системе новее. Мы сделаем это следующим образом.

И вставьте следующее:

Теперь сохраните файл и выйдите (в Nano сохраните, нажав Ctrl + o , затем выйдите, нажав Ctrl + x ).

И вставьте следующее:

Теперь сохраните файл и выйдите (в Nano сохраните, нажав Ctrl + o , затем выйдите, нажав Ctrl + x ).

<р>3. Установите браузер Chromium из PPA-репозитория Saiarcot895 (VA-API):

<р>4. Установите драйвер VA-API

Для видеокарт Intel 7-го поколения и старше вам потребуется установить пакет i965-va-driver-shaders (он может быть уже установлен):

Для графики Intel Gen 8 и новее:

Для драйверов Nouveau и AMD (у меня нет графики AMD, поэтому я не могу попробовать это; что касается Nouveau, у меня это не сработало, поэтому мне пришлось использовать проприетарные драйверы Nvidia, но, возможно, они работают) для вас):

Для видеокарт Nvidia, использующих проприетарные драйверы, вам потребуется исправленный vdpau-va-драйвер из PPA-репозитория Chromium Dev. Если вы добавили PPA-репозиторий Chromium Dev, вы можете установить его с помощью этой команды (для версий Ubuntu до 20.04):

Для тех, кто использует Ubuntu 20.10 или 21.04 (для которых этот пакет не был загружен в PPA), вы можете скачать исправленный пакет DEB vdpau-va-driver отсюда (вам также понадобится это libvdpau1) и установите его вручную. Работает не только на Ubuntu 20.04, но и на 20.10 и 21.04.

<р>5. Включите параметр видео с аппаратным ускорением в Chromium.

В сборке Google Chrome/Chromium по умолчанию этот параметр отображается как недоступный, но вы сможете включить его сейчас, поскольку мы использовали сборку Chromium с поддержкой VA-API.

<р>6. Установите расширение h264ify для Chrome. Если это расширение вам не подходит, установите вместо него enchanced-h264ify.

YouTube (и, возможно, некоторые другие веб-сайты) по умолчанию используют видеокодеки VP8 или VP9, ​​и многие графические процессоры не поддерживают аппаратное декодирование для этого кодека. Расширение h264ify заставит YouTube использовать H.264, который должен поддерживаться большинством графических процессоров, вместо VP8/VP9.

Это расширение также может блокировать видео со скоростью 60 кадров в секунду, что полезно на слабых компьютерах.

Вы можете проверить кодек, используемый видео на YouTube, щелкнув видео правой кнопкой мыши и выбрав Статистика для ботаников . При включенном расширении h264ify вы должны увидеть avc/mp4a в качестве кодеков. Без этого расширения кодек должен быть что-то вроде vp09/opus.

[[Изменить]] Пользователи Nvidia: упомянутый выше исправленный vdpau-va-драйвер больше не аппаратно ускоряет VP9 в браузере на основе Chromium. Таким образом, вы должны использовать расширение h264ify и избегать VP9, ​​чтобы получить декодирование видео с аппаратным ускорением.

<р>7. Начиная с Chromium 76, вам необходимо запустить браузер Chromium с флагом --use-gl=desktop, чтобы отключить ANGLE. Без этого аппаратное ускорение декодирования видео не будет работать. [[Изменить]] В Chromium 91 и более поздних версиях вам также потребуется добавить флаг VDAVideoDecoder.

Вы можете скопировать файл рабочего стола Chromium из /usr/share/applications/ в ~/.local/share/applications/ и изменить его строку Exec, чтобы включить этот флаг.Таким образом, при запуске Chromium Browser будет автоматически использовать этот флаг (и он не будет перезаписан обновлениями):

Как проверить, использует ли Chromium декодирование видео с помощью графического процессора


Откройте видео на YouTube. Затем нажмите Ctrl + Shift + i, чтобы открыть Chrome DevTools. В меню с тремя вертикальными точками нажмите Дополнительные инструменты -> Медиа. Затем щелкните заголовок видео на левой боковой панели DevTools (раздел «Игроки») и посмотрите в разделе «Декодер видео» на вкладке «Медиа» в Chrome DevTools:

Если он говорит, что имя декодера — VideoDecode Accelerator или VDAVideoDecoder (ранее это был MojoVideoDecoder, а до этого — GpuVideoDecoder, поэтому, если вы используете какой-либо из них и используете более старую версию браузера, это нормально, у вас есть аппаратное обеспечение). ускорение) и Аппаратный декодер имеет значение true , то вы используете декодирование видео с аппаратным ускорением. Если он говорит FFmpegVideoDecoder , VpxVideoDecoder или Dav1dVideoDecoder (и в этом случае аппаратный декодер должен сказать false ), ваш веб-браузер не использует декодирование видео с аппаратным ускорением.

Если он не работает, вы можете попытаться отладить его, запустив chromium-browser из командной строки и посмотреть, не отображаются ли какие-либо ошибки, связанные с VA-API. Вы также можете запустить vainfo (установите его в Ubuntu или Linux Mint: sudo apt install vainfo ) и vdpauinfo (для Nvidia; установите его в Ubuntu или Linux Mint: sudo apt install vdpauinfo ) и посмотрите, не появится ли ошибка.

Важное примечание. Если после этого вы видите полностью белое видеоизображение (но вы видите MojoVideoDecoder), проверьте chrome://flags и убедитесь, что там не включен Vulkan. Если Vulkan включен, но запуск браузера с параметром --use-gl=desktop приведет к тому, что это произойдет.

Как удалить Chromium с патчами VA-API и использовать официальные стабильные сборки Ubuntu / Linux Mint Chromium

Если вы хотите полностью удалить сборки Chromium с VA-API из своей системы и вернуться к официальным стабильным сборкам браузера Chromium, предоставляемым Ubuntu/Linux Mint, вы можете очистить PPA.

Для очистки PPA вам понадобится утилита очистки PPA, которую можно установить с помощью:

После загрузки пакета проверьте его с помощью vainfo или vdpauinfo в зависимости от вашего графического процессора. Тогда все готово.

Вы можете использовать любой браузер на основе хрома, например Brave и Vivaldi, но в этом руководстве я буду использовать стабильную версию для хрома. Я также буду использовать x11 для этого руководства, поэтому несколько шагов могут отличаться для Wayland.

К сожалению, обновление Chrome 92 нарушило аппаратное ускорение в Linux, поэтому мы будем использовать Chrome 91. Google может «исправить» это в будущем, но никто не может гарантировать это.

91.0.4472.164-1 — последняя версия, в которой аппаратное ускорение работает идеально

Затем вы можете установить его напрямую, дважды щелкнув файл .deb в файловом менеджере.

Разархивируйте его в папку и откройте папку в терминале. Затем введите эту команду

Сценарий автоматически загрузит и установит эту конкретную версию Chrome.

Временно удалить флаги M90.

Переопределить список программного рендеринга

Декодирование видео с аппаратным ускорением

Перейдите в свою домашнюю библиотеку в файловом менеджере, затем выберите «Показать скрытые файлы» в меню из трех точек. Затем выберите папку «.config». Теперь проверьте, существует ли файл с именем chrome-flags.conf. Если это не так, создайте его. Откройте его любым текстовым редактором и введите эти команды

Если ваш графический процессор не поддерживает декодирование VP9, ​​вы можете установить это расширение, чтобы видео на YouTube воспроизводились в формате H264 вместо VP8/9/AV1

Имейте в виду, что ваше разрешение будет ограничено 1080p (Youtube предлагает максимальное разрешение 1080p только для декодирования H264), и может быть небольшое снижение детализации или разница в цветопередаче.

Перейдите на chrome://GPU. Если ваш отчет выглядит примерно так, как показано ниже, все готово

Затем перейдите к любому видео на Youtube и нажмите Ctrl+shift+I или F12

Затем выберите меню с тремя точками рядом с крестиком

Выбрать дополнительные инструменты

Затем выберите Медиа

Нажмите на стрелку рядом с элементами и консолью и выберите медиа

Воспроизведите видео и вручную выберите разрешение. Имейте в виду, что Chrome только аппаратно ускоряет видео с разрешением выше 720p.

Убедитесь, что в столбце "Декодер видео" под названием декодера указано "VDAVideoDecoder".

Проверьте, отображается ли в столбце "Аппаратный декодер" значение True

Если все пойдет правильно, все будет готово, и видео на YouTube должно быть ускорено аппаратно.

Если вы используете графический процессор Intel, существует пакет "intel-gpu-tools", загрузите его через терминал или диспетчер пакетов.

Затем вы можете ввести команду sudo intel_gpu_top

Воспроизведите видео на YouTube или Twitch и убедитесь, что загрузка графического процессора выше 0 в столбце "Видео". Если это любая цифра выше 0, это на 100% уверено, что вы используете свой графический процессор для аппаратного декодирования, и все работает должным образом.

Если есть предложения, дайте мне знать в комментариях.

К сожалению, обновление Chrome 92 нарушило аппаратное ускорение в Linux, поэтому мы будем использовать Chrome 91. Google может исправить это в будущем, но не может гарантировать.

Да, я использую старую сборку от 16 июля, поскольку в новых сборках нарушена поддержка va-api.

По какой-то причине у меня всегда были проблемы с пропаданием кадров в Firefox, а прокрутка тоже кажется немного странной. Я мог бы также переключиться на firefox, если va-api останется неработоспособным в течение длительного времени.

Chromium vaapi работает только на YouTube, а не на сторонних веб-сайтах, таких как vimeo и т. д.

Неверно, я могу подтвердить, что vaapi работает для odysee.

В отличие от Chromium, Firefox работает с wayland или xorg (при этом wayland обычно более плавный).

Для Chrome 92 и 94 я получил аппаратное ускорение декодирования с помощью --enable-features=VaapiVideoDecoder --use-gl=desktop --disable-features=UseOzonePlatform на платформе Intel и проверил его с помощью intel_gpu_top.

Спасибо! Попробую сегодня и обновлю руководство.

После бесконечных попыток это сработало для меня. В частности --enable-features=VaapiVideoDecoder --disable-features=UseOzonePlatform . Большое спасибо за совет.

Характеристики:Radeon 6800XT, Ubuntu 21.04, X11, Chrome 94

Подтверждено, что это работает с Chrome 94 и графическим процессором Intel. Спасибо за совет.

Просто мои 5 центов, так как я безуспешно пробовал почти все учебники в Интернете и нашел решение в моем случае:

В случае использования Ubuntu 20.04 и версии Never для Chrome (в моем случае 94.0.4606.81) выясняется, что по умолчанию в Ubuntu не установлена ​​достаточная версия libva, и версия Never недоступна. В моем случае была установлена ​​версия 2.7 (которая предоставляет API v 1.7, как показано в начале команды «vainfo»). Вы можете проверить, есть ли у вас та же проблема, добавив подробное ведение журнала в Chrome, например:

Это создает очень длинный файл отладки в / /.local/google-chrome/chrome_debug.log. Поиск "libva" показал следующую ошибку:

Это означает, что версии 1.7 недостаточно для инициализации va-api в Chrome, и вам необходимо установить версию Never. Так как мне не удалось найти бэкпорты libva для Ubuntu 20.04, я решил скомпилировать их из исходников и, наконец, получил ускорение видео, работающее на Ubuntu 20.04.

Установка не такая уж сложная и состоит из двух шагов: libva и специальный драйвер libva, в моем случае (iHD драйвер rocket lake) они были доступны по адресу:

После установки и настройки LIBVA_DRIVERS_PATH=/usr/local/lib/dri и LIBVA_DRIVER_NAME=iHD команда "vainfo" внезапно возвращала версию 1.13, которой было достаточно для запуска ускорения видео.

ПРИМЕЧАНИЕ. Если вы видите зеленый значок «Декодирование видео: аппаратное ускорение» в верхней части chrome://gpu, это ничего не значит. Прокрутите вниз, чтобы увидеть раздел «Информация об ускорении видео», если вы видите список кодеков, значит, вы хорошо, если список пуст, ускорение не будет работать, поэтому не беспокойтесь о проверке youtube / media на вкладке инспектора и так далее. ваша цель — отобразить список кодеков в разделе «Информация об ускорении видео» в about://gpu

ПРИМЕЧАНИЕ 2: если вы используете Chrome 95, я не могу подтвердить это, но это может быть версия, в которой ускорение видео не будет работать из-за принудительного включения фреймворка «озон». Поэтому используйте более низкую или более позднюю версию, вы всегда можете поэкспериментировать. путем одновременной установки разных версий Chrome: "chrome-stable", "chrome-unstable", "chrome-beta" и т. д.

Аппаратное ускорение видео позволяет видеокарте декодировать/кодировать видео, тем самым разгружая ЦП и экономя электроэнергию.

Есть несколько способов добиться этого в Linux:

    (VA-API) — это спецификация и библиотека с открытым исходным кодом, обеспечивающая аппаратное ускорение кодирования и декодирования видео, разработанная Intel. (VDPAU) — это библиотека с открытым исходным кодом и API для переноса части процесса декодирования видео и постобработки видео на аппаратное обеспечение графического процессора, разработанное NVIDIA. - Собственные API-интерфейсы NVIDIA для аппаратного ускорения видео, используемые графическими процессорами NVIDIA, начиная с Fermi.

Содержание

Установка

Интел

Графические драйверы Intel с открытым исходным кодом поддерживают VA-API:

Нвидиа

Драйвер Nouveau с открытым исходным кодом поддерживает как VA-API, так и VDPAU:

  • Серия GeForce 8 и более новые графические процессоры вплоть до GeForce GTX 750 поддерживаются libva-mesa-driver и mesa-vdpau . Пакет прошивки nouveau-fwAUR, извлеченный из бинарного драйвера NVIDIA.

Проприетарный драйвер NVIDIA поддерживается через nvidia-utils:

  • VDPAU на графических процессорах серии GeForce 8 и более новых;
  • NVDECODE на Fermi и более новых графических процессорах [1];
  • NVENCODE на Kepler и более новых графических процессорах.

ATI/AMD

Драйверы с открытым исходным кодом ATI и AMDGPU поддерживают как VA-API, так и VDPAU:

  • VA-API на Radeon HD 2000 и более новых графических процессорах поддерживается драйвером libva-mesa-driver .
  • VDPAU на Radeon R300 и более новых графических процессорах поддерживается mesa-vdpau .

Проприетарный драйвер AMDGPU PRO создан на основе драйвера AMDGPU и поддерживает как VA-API, так и VDPAU.

Слои перевода

  • libva-vdpau-driver — серверная часть на основе VDPAU для VA-API.
  • libvdpau-va-gl — драйвер VDPAU с серверной частью OpenGL/VAAPI. Только H.264.
  • nvidia-vaapi-driver — серверная часть на основе CUDA NVDECODE для VA-API.

Подтверждение

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

    с поддержкой командной строки отлично подходит для тестирования аппаратного ускорения. Посмотрите журнал mpv --hwdec=auto video_filename и см. hwdec для получения дополнительной информации.
  • Для графического процессора Intel используйте intel-gpu-tools и запустите intel_gpu_top от имени пользователя root, чтобы отслеживать активность графического процессора, например, во время воспроизведения видео. Полоса видео выше 0 % указывает на использование видеодекодера/кодировщика графического процессора.
  • Для AMD GPU используйте radeontop для мониторинга активности GPU. В отличие от intel-gpu-tools , в настоящее время нет возможности увидеть использование декодирования/кодирования на radeontop[2].
  • Для любого графического процессора вы можете сравнить загрузку ЦП с помощью такого инструмента, как htop . Особенно для видео с более высоким разрешением (4k+) загрузка ЦП при включенном VA-API и работе на ноутбуках и других устройствах с относительно низким энергопотреблением должна быть значительно ниже.

Проверка VA-API

Проверьте настройки VA-API, запустив vainfo , предоставляемую libva-utils :

VAEntrypointVLD означает, что ваша карта способна декодировать этот формат, VAEntrypointEncSlice означает, что вы можете кодировать в этот формат.

В этом примере используется драйвер i965, как видно из этой строки:

Если при запуске vainfo отображается следующая ошибка:

Проверка VDPAU

Установите vdpauinfo, чтобы проверить правильность загрузки драйвера VDPAU и получить полный отчет о конфигурации:

Конфигурация

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

В этом случае radeonsi используется по умолчанию как для VA-API, так и для VDPAU.

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

Настройка VA-API

Драйвер для VA-API можно переопределить с помощью переменной среды LIBVA_DRIVER_NAME:

    :
    • Для libva-intel-driver используйте i965 .
    • Для intel-media-driver используйте iHD .
    • Для модерна используйте nouveau .
    • Для NVIDIA VDPAU используйте vdpau .
    • Для NVIDIA NVDECODE используйте nvidia .
    • Для драйвера AMDGPU используйте radeonsi .
    • Вы можете найти установленные драйверы в /usr/lib/dri/. Они используются как /usr/lib/dri/$ _drv_video.so .
    • Некоторые драйверы устанавливаются несколько раз под разными именами из соображений совместимости. Вы можете увидеть, какой, запустив sha1sum /usr/lib/dri/* | сортировать .
    • LIBVA_DRIVERS_PATH можно использовать для переопределения расположения драйверов VA-API.
    • Начиная с версии 12.0.1 libva-mesa-driver предоставляет radeonsi вместо gallium.

    Настройка VDPAU

    Драйвер для VDPAU можно переопределить с помощью переменной среды VDPAU_DRIVER.

    Правильное имя драйвера зависит от вашей настройки:

    • Вы можете найти установленные драйверы в /usr/lib/vdpau/. Они используются как /usr/lib/vdpau/libvdpau_$ .so .
    • Некоторые драйверы устанавливаются несколько раз под разными именами из соображений совместимости. Вы можете узнать, какой именно, запустив sha1sum /usr/lib/vdpau/* .
    • Для гибридных систем (как NVIDIA, так и AMD) может потребоваться установка переменной среды DRI_PRIME. Дополнительную информацию см. в разделе PRIME.

    Настройка приложений

    Устранение неполадок

    Не удалось открыть серверную часть VDPAU

    Ошибка инициализации VAAPI

    Обнаружена ошибка типа libva: /usr/lib/dri/i965_drv_video.so ошибка инициализации. Это может произойти из-за неправильного обнаружения Wayland. Одним из решений является сброс $DISPLAY, чтобы mpv, MPlayer, VLC и т. д. не предполагали, что это X11.Еще одно решение для mpv — добавить параметр --gpu-context=wayland .

    Повреждение или искажение декодирования видео с помощью драйвера AMDGPU

    При повреждении или искажении декодирования видео с помощью драйвера AMDGPU установите allow_rgb10_configs=false в качестве переменной среды или driconf . [3]

    Читайте также: