Получите аппаратное ускорение Firefox VA-API, работающее на графическом процессоре NVIDIA.
Для машины Ubuntu с видеокартой NVIDIA можно реализовать аппаратное ускорение воспроизведения видео в веб-браузере Firefox.
Firefox пока поддерживает только VA-API для декодирования графического процессора, чтобы разгрузить процессор и сэкономить электроэнергию. Графические процессоры Intel и AMD поддерживают VA-API. Однако NVIDIA пока поддерживает API только через драйвер Nouveau с открытым исходным кодом.
Если у вас работает только графический процессор NVIDIA с проприетарным драйвером, аппаратное ускорение видео не работает в Firefox «из коробки».
На выбор есть драйвер libvdpau-va-gl1
(только h.264) или libva-vdpau-driver, но оба они, похоже, больше не обновляются. На данный момент лучшим выбором является бесплатный драйвер nvidia vaapi с открытым исходным кодом.
ПРИМЕЧАНИЕ 1. Это руководство пока не работает на ноутбуке Optimus, подробности см. в этом отчете об ошибке.
ПРИМЕЧАНИЕ 2. Пока это касается только Firefox, поскольку другие проигрыватели, такие как MPV, поддерживают NVIDIA NVDEC «из коробки».
ПРИМЕЧАНИЕ 3. В моем тесте он не работает для предустановленной Firefox Snap, поскольку она работает в «песочнице». Попробуйте установить официальный пакет deb или пакет Mozilla PPA.
Шаг 1. Установите драйвер NVIDIA VAAPI.
Пакет драйверов был включен в репозиторий Ubuntu начиная с Ubuntu 23.10.
Таким образом, текущие пользователи Ubuntu 23.10 и Ubuntu 24.04 могут просто нажать Ctrl+Alt+T
, чтобы открыть терминал, и запустить команду для его установки:
sudo apt install nvidia-vaapi-driver
Для самой последней версии существует неофициальный PPA-репозиторий, содержащий пакет для Ubuntu 22.04, Ubuntu 23.10 и Ubuntu 24.04.
Сначала добавьте PPA, выполнив команду:
sudo add-apt-repository ppa:ubuntuhandbook1/nvidia-vaapi
Введите пароль пользователя, когда он запросит (без звездочки) аутентификацию sudo, и нажмите Enter, чтобы продолжить.
Затем обновите кеш системных пакетов, выполнив команду:
sudo apt update
Наконец, установите пакет драйверов:
sudo apt install nvidia-vaapi-driver
Затем также установите vainfo
, чтобы проверить информацию vaapi:
sudo apt install vainfo
Шаг 2. Проверьте информацию VA-API.
Теперь в окне терминала выполните команду:
vainfo
Для драйвера NVIDIA выше версии 525 необходимо сначала запустить export NVD_BACKEND=direct
, чтобы включить прямое управление серверной частью, и export LIBVA_DRIVER_NAME=nvidia
, чтобы указать драйвер.
Он должен вывести что-то вроде того, что показано на снимке экрана ниже, включая версию va-api и версию драйвера (драйвер VA-API NVDEC), а также поддерживаемые кодеки.
Вы можете попробовать воспроизвести видеофайл из командной строки, используя MPV (версию выше 0.36), чтобы проверить, работает ли va-api:
mpv --hwdec=vaapi /path/to/video-file
Он выдает что-то вроде Использование аппаратного декодирования (vaapi).
Шаг 3: Настройте Firefox
Теперь запустите Firefox, введите about:config
и нажмите Enter, затем нажмите «Принять риск и продолжить», чтобы перейти на страницу настроек.
Затем введите следующие ключи один за другим в поле фильтра и установите для них значение true:
media.ffmpeg.vaapi.enabled
gfx.x11-egl.force-enabled
widget.dmabuf.force-enabled
Шаг 4. Настройка переменной среды
В окне терминала (Ctrl+Alt+T) выполните следующие команды одну за другой, чтобы настроить переменную среды Firefox va-api для работы на NVIDIA:
Укажите имя драйвера:
export LIBVA_DRIVER_NAME=nvidia
Отключите песочницу процесса RDD:
export MOZ_DISABLE_RDD_SANDBOX=1
Для NVIDIA 525 и выше также установите прямое управление:
export NVD_BACKEND=direct
Для устаревшей версии NVIDIA 470 укажите имя библиотеки поставщика EGL:
export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/10_nvidia.json
По выбору вы также можете включить журнал для целей отладки:
export NVD_LOG=1
Наконец, запустите Firefox из того же окна терминала /usr/bin/firefox
и воспроизведите видео для проверки (см. следующий шаг).
Если это работает, вы можете сделать переменные среды постоянными, выполнив следующие действия:
Сначала откройте домашнюю папку, нажмите
Ctrl+h
, найдите файл .profile и нажмите «Редактировать».Когда файл откроется, добавьте предыдущие команды
export
, которые вы запускали (исключая NVD_LOG), в конец в виде новых строк. Наконец, сохраните файл.
Вам необходимо выйти из системы и снова войти, чтобы изменения в файле .profile
заработали.
Шаг 5: Проверьте
При воспроизведении видео с помощью веб-браузера Firefox вы можете использовать команду nvtop
для проверки.
Сначала откройте терминал (
Ctrl+Alt+T
) и выполните команду для установки nvtop:sudo apt install nvtop
- Затем запустите команду
nvtop
в терминале во время воспроизведения видео. Если графический процессор декодирует, то внизу есть строка, помеченная как тип Compute, с информацией о том, какой процесс и команда. В данном случае это должно быть как-то связано с Firefox.
По выбору вы также можете вместо этого запустить nvidia-smi pmon
, в выводе должен быть тип C для соответствующего процесса во время воспроизведения.
Дополнительную информацию см. в разделе nvidia-vaapi-driver на странице github.
Удалить:
Если драйвер у вас почему-то не работает, вы можете удалить его, выполнив команду в терминале:
sudo apt remove --autoremove nvidia-vaapi-driver
Также удалите PPA (если он добавлен) с помощью команды:
sudo add-apt-repository --remove ppa:ubuntuhandbook1/nvidia-vaapi
Вы также можете перейти на страницу about:config
в Firefox, чтобы отменить внесенные вами изменения и удалить строки export
(если установлены) в .profiles
файл.