Linux аппаратное ускорение видео

Обновлено: 05.07.2024

NVIDIA VDPAU

Для пользователей, имеющих старый компьютер и не желающих покупать новый или использовать видео худшего качества существуют аппаратные решения. Они позволяют обойтись лишь обновлением видеокарты и использованием программного обеспечения, поддерживающего аппаратное ускорение видео. Цена такого решения невысока, но НЕ все видеокарты NVIDIA поддерживают технологию аппаратного ускорения, её версия для Linux называется VDPAU.

Список видеокарт NVIDIA

Наборы функциональных возможностей VDPAU видеокарт NVIDIA

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

Набор функциональных возможностей A Полное ускорение для H.264 Частичное ускорение для MPEG-1, MPEG-2, VC-1/WMV9 Набор функциональных возможностей B Полное ускорение для MPEG-1, MPEG-2, VC-1/WMV9 и H.264. Невозможно декодировать H.264 ширины: 769-784, 849-864, 929-944, 1009-1024, 1793-1808, 1873-1888, 1953-1968, 2033-2048 пикселей. Набор функциональных возможностей C Полное ускорение для MPEG-1, MPEG-2, MPEG-4 Part 2 (MPEG-4 ASP), VC-1/WMV9 и H.264.

Приложения, использующие VDPAU

Для Linux приложений существуют патчи, позволяющие использовать VDPAU ffmpeg, xine, mplayer, kdenlive (для воспроизведения видео), mythtv, and xbmc и предположительно кодеки с открытым исходным кодом работают в vlc.

В openSUSE можно использовать репозиторий Packman, содержащий пакеты ffmpeg, mplayer и kdenlive c поддержкой VDPAU. Текущая версия xine 1.1.18 (на март 2010) не имеет поддержки VDPAU, она будет включена в версию 1.2.

Установка VDPAU в openSUSE

Для использования VDPAU в openSUSE необходимо использовать:

  • видеокарту nVidia с поддержкой VDPAU
  • проприетарный драйвер nVidia
  • программу с поддержкой VDPAU (например ffmpeg или MPlayer из репозитория Packman)

Использование VDPAU в приложениях

Далее содержится информация, специфичная для конкретных приложений.

Проверка возможностей VDPAU в ffmpeg

Для проверки ffmpeg на предмет поддержки VDPAU необходимо ввести в терминале команду:

ответ должен быть аналогичен этому:

Использования VDPAU в MPlayer

Если у вас установлен MPlayer с поддержкой VDPAU, для проигрывания видео форматов H.264, MPEG1/2 или VC-1 можно использовать следующие команды:

Где <codec> может быть следующим:

Для проигрывания закодированного в H.264 видео:

Для проигрывания закодированного в MPEG2 видео:

Для проигрывания закодированного wmv3 видео:

Для проигрывания закодированного VC1 видео:

Преобразование из черезстрочной развёртки в прогрессивную в MPlayer VDPAU

В MPlayer можно использовать команды для управления параметрами преобразования

Chooses the deinterlacer (default: 0). All modes > 0 respect −field−dominance. NOTE: Values > 2 delay the video output by one frame.

An example of the syntax could be:

Использование SMplayer

В меню Настройки > Настройки на вкладке Видео выбираем устройство вывода vdpau. В разделе Дополнительно на вкладке Настроить Mplayer в строке Настройки необходимо ввести параметры запуска Mplayer:

При проигрывании HD-видео в высоком качестве, ресурсов компьютера может быть недостаточно для декодирования, и видео начинает заметно «тормозить». Эта статья рассказывает о том, как заставить компьютер максимально быстро декодировать HD-видео.

SMPlayer

Установка SMPlayer

Установите SMPlayer через Центр приложений или из консоли:

Настройка SMPlayer

После того как мы все установили, открываем SMPlayer:

Настройки → Быстродействие → Допускать выпадение кадров отключаем. Настройки → Быстродействие → Потоков декодирования выставляем значение равное количеству ядер вашего процессора.

Так же можно отключить петлевой фильтр, но это скажется на качестве:

Настройки → Быстродействие → Петлевой фильтр → Пропускать (всегда).

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

Настройки → Основные → Видео → Двойная буферизация отключаем.

Уже этого достаточно для плавного воспроизведения на компьютерах с многоядерным процессором.

Пункты, которые написаны выше, обязательны к выполнению, даже не для HD-видео.

Аппаратное ускорение декодирования видео

Настройка для видеокарт AMD и Nvidia (VDPAU)

Для использования аппаратного декодирования на видеокартах Nvidia необходимо установить проприетарный драйвер Nvidia. Подробнее об этом смотрите в статье Установка и настройка драйверов Nvidia.

VDPAU 1) - это набор библиотек для аппаратного декодирования видео, средствами видеокарт nVidia.

SMPlayer (рекомендуется)

Установите SMPlayer любым способом, например через Центр приложений.

Для задействования VDPAU, в настройках SMPlayer нужно выбрать:

Настройки → Основные → Видео → Устройство вывода выбираем vdpau.

XBMC Media Center (рекомендуется)

Смотрите инструкцию по установке.

Установите VLC любым способом, например через Центр приложений.

Для задействования VDPAU, в настройках VLC нужно выбрать

Настройки → Ввод и кодеки → Использовать видеоускоритель включаем.

Adobe Flash

В последней версии плагина Adobe Flash, поставляемого в комплекте с браузером Google Chrome 2) , имеется поддержка VDPAU.

Настройка для видеокарт AMD с проприетарным драйвером, а также Intel (VA-API)

VLC (рекомендуется для AMD с проприетарным драйвером)

Установите VLC любым способом, например через Центр приложений.

Затем в настройках VLC:

Настройки → Ввод и кодеки → Использовать видеоускоритель включаем.

XBMC Media Center (рекомендуется для AMD)

Смотрите инструкцию по установке.

SMPlayer (рекомендуется для Intel)

Для Ubuntu 14.04 добавляем репозиторий и устанавливаем пакет «mplayer-vaapi»:

Затем в настройках SMPlayer:

Настройки → Основные → Снимки экрана отключаем. Настройки → Основные → Видео → Прямой рендеринг включаем. Настройки → Основные → Видео → Устройство вывода выбираем vaapi.

XBMC Media Center (рекомендуется для Intel)

Смотрите инструкцию по установке.

Кодеки

В отличии от Windows, большинство аудио/видео плееров в Linux имеют встроенные кодеки, или используют системные (общие для всех плееров). Но если у вас появились какие то проблемы с вопроизведением каких либо форматов, следует установить ubuntu-restricted-extras. Этот метапакет включает: кодеки, Adobe Flash Player, java, шрифты windows и все, что нужно для корректной работы большинства программ.

Ссылки

VDPAU поддерживается видеокартами серии 8 и выше, но некоторые из них (8800GTS 320/640MB и 8800GTX) всё равно не поддерживаются.

В этой статье рассмотрим, как выжать все соки из Хромиума и максимально ускорить его или другой браузер на его движке (Chromium, Google Chrome, Opera, Vivaldi, Яндекс и др.). За счет включения многих экспериментальных возможностей по вынесу вычислений с процессора на видеокарту и включения использования находящихся в разработке программных алгоритмов. За счет этого наш любимый хромиум станет работать быстрее, может перестать тормозить или моргать экраном.

Поехали!

Как сделать резервную копию всего профиля браузера (настройки, история. закладки и пр.), написано в конце статьи.

Заходим по адресу chrome://gpu (да, именно так наберите в адресной строке или скопипастьте)!


Как видите, у меня везде зеленая надпись «Hardware accelerated», что говорит, что данная функция использует аппаратное ускорение за счет выноса вычислений на видеокарту, а «Enabled» говорит, что программный алгоритм включен.

Теперь зайдите в chrome://flags .Здесь и будем производить большую часть настройки.



Теперь у нас открыты и chrome://gpu , и chrome://flags . Смотрим, какие параметры есть в chrome://gpu , и, если параметр не зеленый, а желтый или красный, в chrome://flags изменяем соответствующую настройку. Осторожно, некоторые настройки могут сделать работу браузера нестабильной, зависит от железа.

CheckerImaging — суть в том, что растеризация картинки убрана из зависимости от растеризации остальной области, с которой связана картинка, что позволяет отрисовывать веб-страницу, не дожидаясь окончания обработки картинки, как-то так. Говорят, сайт Юлмарта начинает отрисовываться намного быстрее.
Это параметр командной строки --enable-features="CheckerImaging" , подробнее ниже.

Native GpuMemoryBuffers — исключается дополнительный буфер при копировании элементов между CPU и GPU, по умолчанию выключено, почему — подробно написано по ссылке.
Это параметр командной строки --enable-native-gpu-memory-buffers , подробнее ниже.

Теперь про опции командной строки Chromium и Google Chrome. Теоретически, всякие иные поделия браузеры на движке Сhromium должны их поддерживать, но гарантии нет.
Закрываем все открытые копии Chromium, открываем терминал и выполняем вот такую команду:

В chrome://gpu видим, как стали зелеными пункты CheckerImaging и Native GpuMemoryBuffers (либо браузер вообще не запустился :) ) Но ведь каждый раз запускать браузер через терминал неудобно, поэтому открываем графический редактор desktop-файлов и в нем дописываем в команду запуска браузера нужные нам параметры (обратите внимание, что на конце есть %U , оно заменяется на ссылку или путь к файлу, который нужно открыть, так что его не нужно удалять. В KDE это kmenuedit (вызов либо через терминал командой kmenuedit , либо подвести курсор к кнопке вызова меню приложений и нажать на правую кнопку мыши 1 раз, затем левой 1 раз нажать на «Редактор меню» в появившемся списке), на остальных DE (XFCE, GNOME, Budgie, LXDE, LXQt и др.) это menulibre .


Menulibre, Chromium

Kmenuedit, Chromium

Тру-униксоиды могут скопировать /usr/share/applications/chromium-browser.desktop в

/.local/share/applications/chromium-browser.desktop и отредактировать параметр Exec, получится то же самое:


В зависимости от DE, вам может потребоваться повторно вынести ярлык на рабочий стол и/или панели.

UPD 10.05.2018.
Здесь ведется полный список флагов для Chromium, который можно прописать непосредственно в Exec в Desktop-файле, чтобы не нужно было их все включать вручную:

В chrome://gpu браузер может мамой клясться, что включено аппаратное ускорение декодирования видео. Но ведь не каждое видео будет декодироваться аппаратно!
Открываем chrome://media-internals/ , параллельно запускаем проигрывание какого-нибудь видео с Youtube и смотрим, каким кодеком оно декодируется.


По умолчанию так:


С включенным h264ify на его стандартных настройках:


Вообще нет единого нормального списка, какие драйверы и на каких видеокартах поддерживают аппаратное декодирование, но вот Chromium 62 появится полноценная работа VA-API (API для аппаратного ускорения кодирования и декодирования видео), которая была и раньше, но только на ChromeOS, а, например, здесь, Хромиум собирали и собирают с патчем, который включает это и на Линуксе. Для работы рекомендуется свежая версия libva; если у вас, к примеру, Ubuntu 16.04, то можно обновить весь графический стек отсюда, что рекомендуется пользователям современных и не очень видеокарт Intel и AMD, т.к. в наши дни опенсорсный графический стек развивается очень быстро, а мы в статье задействовали множество функций работы с видеокартой. Разработчики Ubuntu 17.10 работали над улучшением работы VA-API из коробки. Вообще, с проигрыванием видео на Линуксе никогда не встречал проблем, все хорошо работает из коробки. Для Firefox было дополнение, которое позволяло ролик с Youtube проигрывать во внешнем плеере mpv, что на очень старых машинах могло существенно снижать нагрузку на процессор.

— Памагите. Браузер перестал запускаться.
— Такое бывает очень редко, но все же иногда случается, когда настройки работы с видеокартой выкручиваются так, что у браузера не получается с ней работать. Открываем в файловом менеджере папку

— это ваша домашняя папка) и находим папку chromium (для Google Chrome она называется google-chrome, Vivaldi — Vivaldi и т.д.).


В ней хранится наш профиль. Можно просто переименовать папку, например, в chromium.old, а при следующем запуске chromium создаст ее заново и начнет с чистого листа. В качестве резервной копии (бекапа) рекомендую до проведения всех манипуляций заархивировать эту папку (и хранить, как зеницу ока). Если вы что-то поломали, а начинать с чистого профиля не хочется, то попробуйте открыть терминал внутри

/.config/chromium и выполнить команду:


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

Тест видеоплееров для Linux: аппаратное ускорение

Эта тема порой сбивет с толку, потому что надо учитывать два фактора: один — это декодирование видео с аппаратным ускорением (которое зависит от используемого видеокодека), а другой — устройство вывода с аппаратным ускорением (если оно поддерживается видеодрайвером ядра и представлено с подходящим API). Чтобы разгрузить CPU, нужно реализовать оба.

У Bomi хорошая поддержка ускорения видеокодека, но не предлагается настроек для выбора вывода видео. Хотя даже MPV — на котором основан Bomi — поддерживает VAAPI и VDPAU, Bomi не позволяет явно такое задать, так что во многих системах (в основном это касается Radeon) ускоренное перекодирование оказывается бесполезным.

Тест видеоплееров для Linux: аппаратное ускорение

VLC также использует системное аппаратное ускорение, и имеет только общее окно-флажок для ‘Accelerated video output’ в настройках Video, которое во многих случаях просто ничего не делает. Наилучшая поддержка аппаратного ускорения — у QMpiay2; его Settings управляют всеми функциями плейера. Например, раздел Playing settings содержит список методов вывода видео. Вы можете сменить приоритет метода, перетаскивая его мышью вниз или вверх. У SMPlayer есть еще и рабочие опции для VAAPI и VDPAU, которые работают на поддерживаемом оборудовании, например, на ноутбуке со старым мобильным чипом Radeon HD. QMPlay2 и SMPlayer были единственными, которые сумели использовать свое оборудование и компьютер с графикой Intel Ivy Bridge. Ну, а Romp не справился ни с чем.

Состояние разработки. Активно ли они поддерживаются?

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

Хорошим примером того, что способно произойти, когда разработка не ведется, служит небезызвестная история с изменением API YouTube, которое произошло в начале 2015 г. и привело к тому, что интеграция кода во многих сторонних приложениях перестала работать, и разработчикам пришлось выпускать отладки. Сейчас интеграция YouTube использует отдельную утилиту под названием youtube-dl, которая позволяет скачивать видео и затем воспроизводить его локально — и пока это единственный приемлемый обходной путь.

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