пятница, 8 октября 2010 г.

Аппаратное декодирование HD видео на ATI под Ubuntu

Заметил, что видео в разрешении от 1280x720 и выше, периодически притормаживает и идет меленьким рывками. Крайне неприятно для просмотра. Загрузка процессоров не превышала 50%, но все равно решил покопать. Оказалось, можно использовать декодирование силами видеокарты.

Устанавливаем драйвер ATI Catalyst с сайта производителя 



На скаченном файле кликаем правой кнопкой мыши. Выбираем "Свойства", закладка "Права" - разрешить выполнение как программы. Предварительно удалив прежние проприентарные драйвера, запускаем установку.

Добавляем пакеты для компиляции mplayer

sudo apt-get build-dep mplayer

Добавляем пакеты для работы аппаратного ускорения. Смотрим самые новые.

Процесс можно автоматизировать
sudo dpkg -i libva-dev_0.31.1-1+sds4_i386.deb

wget http://www.splitted-desktop.com/~gbeauchesne/xvba-video/xvba-video_0.7.5-1_i386.deb
sudo dpkg -i xvba-video/xvba-video_0.7.5-1_i386.deb

Проверяем что получилось
sudo apt-get install vainfo
vainfo
Скачиваем и компилируем mplayer-vaapi. Отправляем в usr/bin

wget http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/mplayer-vaapi-latest-FULL.tar.bz2
tar xvjf mplayer-vaapi-latest-FULL.tar.bz2
cd `tar tf mplayer-vaapi-latest-FULL.tar.bz2 | head -n 1 | grep -E mplayer-vaapi-[[:digit:]]{8}`
./checkout-patch-build.sh
sudo cp mplayer-vaapi/mplayer /usr/bin/mplayer-vaapi

Настраиваем smplayer:

 выбираем закладку vaapi


  -va vaapi


Многое почерпнуто отсюда, хотя данное руководство устарело. 
При желании, можно перекомпилить и кодеки FFmpeg, тогда можно будет пользовать под VLC... но, в моем случае, возникнут проблемы с видеонаблюдением.

Для проигрывания mkv не забудте поставить пакет x264
sudo apt-get install x264
! Если у вас интегрированная видеокарта, и видео на динамических сценах идет рывками, словно порциями, зайдите в настройки BIOS материнсской платы и замените значение "auto" кеша видеопамяти на максимально возможное.

! Если видео идет с горизонтальными разрывами. 
Зайдите в Catalist Control Center. 
3D>Сглаживание>4Х
3D>Дополнительные>Ждать вертикального обновления> выставить "всегда включено".

P.S. Для карт NVIDIA Есть репозиторий со сборками VLC и mplayer с поддержкой аппаратного ускорения (vdpau):
https://launchpad.net/~nvidia-vdpau/+archive/cutting-edge-multimedia

P.P.S.Еще статьи по теме:
Включаем аппаратное декодирование видео в Ubuntu 10.10
Ubuntu 11.04 и проприетарный драйвер ATI
Свежая статья для 64х системы:
Аппаратное декодирование видео на AMD Radeon в Ubuntu 

7 комментариев:

  1. Спасибо, большое. Поставил на ноутбук Asus K40AB Ubuntu 10.10. Сделал всё как было Вами указано. Но для правильной работы на моем ноутбуке пришлось сделать дополнительные настройки в SMPlayer, а именно:
    - на вкладке "Основные" убираем все "галки" кроме "Закрывать по окончании воспроизведения";
    - на вкладке "Видео" дополнительно убираем "галку" с пункта "Разрешить постобработку по умолчанию".
    После этих манипуляций все замечательно заработало. Нагрузка на процессоры 12-14%. HD Video воспроизводится плавно, перемотка работает, всё только радует.
    Еще раз, спасибо за опубликованный материал.

    ОтветитьУдалить
  2. To All:
    Если кто-нибудь знает как аппаратно декодировать HD видео на ATI видеокартах серии HD в PCLinuxOS 2010, пожалуйста опишите этот метод.

    ОтветитьУдалить
  3. У меня почему то тормозит видео в SMPlayer, если файл просмотреть командой
    mplayer-vaapi -vo vaapi:gl -va vaapi file

    то все ОК.
    Подскажите что еще можно подкрутить.

    ОтветитьУдалить
  4. Разобрался. На закладке Аудио дополнительно установил галочку Автоматическая синхронизация аудио/видео.

    P.S. Исправьте опечатку
    sudo dpkg -i xvba-video/xvba-video_0.7.5-1_i386.deb

    Надо так
    sudo dpkg -i xvba-video_0.7.5-1_i386.deb

    ОтветитьУдалить
  5. cd `tar tf mplayer-vaapi-latest-FULL.tar.bz2 | head -n 1 | grep -E mplayer-vaapi-[[:digit:]]{8}`
    ./checkout-patch-build.sh

    это команда вообще не фурычит

    ОтветитьУдалить
  6. "Проверяем что получилось

    sudo apt-get install vainfo
    vainfo"
    Что должно получиться?

    ОтветитьУдалить
  7. vainfo

    libva: libva version 0.31.0
    Xlib: extension "XFree86-DRI" missing on display ":0.0".
    libva: va_getDriverName() returns -1
    vaInitialize failed with error code -1 (unknown libva error),exit

    Естественно, mplayer видео с vaapi не показывает. Что я сделал не так и как это исправить? Карточка - HD4670.

    ОтветитьУдалить