Instalacja VLC z VAAPI na Ubuntu

VAAPI (ang. Video Acceleration API) to otwarta biblioteka oprogramowania (libVA) i specyfikacja API. Umożliwia i zapewnia dostęp do kart graficznych (GPU) celem przyspieszenia przetwarzania wideo. VAAPI jest przeznaczone dla systemu X Window na Uniksopodobnych systemach operacyjnych (Linux, FreeBSD i Solaris). Przyspieszone przetwarzanie obejmuje zarówno dekodowanie wideo, kodowanie wideo, jak i rendering. Specyfikacja została zaprojektowana przez firmę Intel dla jej kart graficznych z serii GMA (Graphics Media Accelerator). Jednak VAAPI nie ogranicza się do kart graficznych Intela lub specjalnego sprzętu, inni producenci sprzętu mogą również swobodnie korzystać z VAAPI dla potrzeb sprzętowej akceleracji dekodowania wideo, co uczyniła firma ATI / AMD.

Jak wiadomo pod Linuksem najlepiej pracują karty nVidia, no ale skoro już kupiliśmy tą nieszczęsną kartę ATI / AMD wyciśnijmy z niej co się da. W tym wpisie przedstawię jak zmusić naszą kartę ATI / AMD do pomocy przy dekodowaniu materiałów video HD (ściślej mówiąc rozdzielczość nie ma tu właściwie znaczenia, ważne jak jakim kodekiem zakodowany jest materiał video – a chodzi nam mianowicie o H.264 / AVC).

Niniejszy wpis opisuje instalację VLC ze sprzętowym wsparciem dekodowania wideo VAAPI na Ubuntu 10.10 Maverick Meerkat z kartami ATI / AMD pracującymi na własnościowych sterownikach Catalyst / fglrx. W przypadku Ubuntu 11.04 Natty Narwhal występuje błąd, który jak do tej pory nie udało mi się rozwiązać, tak więc akceleracja VAAPI nie zdziała. Natomiast w przypadku Ubuntu 10.04 Lucid Lynx nie testowałem tego przepisu, jeśli akceleracja VAAPI nie zadziała, to polecam sprawdzony przeze mnie sposób Łukasza Klicha.

Instalacja sterowników Catalyst / fglrx

Pierwszą rzeczą jaką musimy zrobić to instalacja zamkniętych sterowników fglrx, zwanych oficjalnie Catalyst. Możemy to zrobić przy pomocy jednej z dwóch polecanych przeze mnie metod:

Instalacja z repozytoriów PPA

W tej metodzie skorzystamy z repozytoriów PPA X Updates. Zatem w konsoli / terminalu wykonujemy:

Podstawową zaletą tego rozwiązania jest to, że nie musimy martwić się o aktualizację, ale czasem bywa tak, że sterowniki w owym repozytorium uaktualniane są z opóźnieniem. W takim wypadku możemy skorzystać z alternatywnej metody.

Instalacja skryptem Kano

Skrypt ten oraz wiele innych niezwykle pożytecznych narzędzi dostępny jest tu. W konsoli / terminalu wykonujemy:

Po czym przechodzimy na terminal tekstowy i wykonujemy:

Ręczna instalacja sterowników

Ostatniej metody nie polecam, ale z kronikarskiego obowiązku odnotowują ją tu. Zatem wchodzimy na stronę ATI Catalyst™ Proprietary Display Driver – Linux x86 & Linux x86_64 i ściągamy najnowsza wersję, aktualnie jest to 11.2 Ewentualnie korzystamy z konsoli / terminala:

Niezależnie od wybranej metody instalacji sterowników, restartujemy system. Dla pewności możemy sprawdzić poprawność instalacji sterowników, wydając polecenie fglrxinfo.

Instalacja odtwarzacza VLC

Pora teraz na instalację odtwarzacza VLC. Tu również skorzystamy z repozytorium PPA obZen Video

W preferencjach VLC włączamy opcję Wykorzystaj przyspieszenie GPU (eksperymentalne).

VLC VAAPI

VLC VAAPI

Instalacja biblioteki xvba-video zapewniającej obsługę VAAPI

VLC wspiera sprzętowe wspomaganie odtwarzania video poprzez VAAPI, podczas gdy metoda akceleracji video zapewniona przez sterowniki Catalyst / fglrx to X-Video Bitstream Acceleration. Aby VLC mógł z niej skorzystać potrzebujemy jeszcze jedną bibliotekę xvba-video do ściągnięcia ze strony xvba-video – XvBA backend for VA API.

Uruchamiamy odtwarzacz w terminalu / konsoli poleceniem vlc. Otwieramy jakiś film zakodowany w H.264 / AVC. Jeśli nie mamy nic na podorędziu polecam ściągnąć wolny film stworzony w Blenderze – Sintel. I tu czeka nas niemiła niespodzianka:

VLC nie znajduje naszej świeżo zainstalowanej biblioteki. No cóż paczka od Splitted-Desktop Systems zawiera małą niedoróbkę, którą poprawimy wykonując:

Ponownie uruchamiamy VLC i… może się zdarzyć druga niemiła niespodzianka. Przy próbie odtworzenia filmu VLC zakończy działanie, wcześniej wypluwając następujący komunikat:

W chwili pisania tego artykułu najnowsza wersja xvba-video to 0.7.8 i właśnie ona powodowała u mnie naruszenie ochrony pamięci zainstalowanie teoretycznie niestabilnej wersji 0.7.8.pre2 rozwiązywało ten problem. Jeśli u Ciebie zdarzy się coś podobnego, wypróbuj po prostu starsze wersji biblioteki.

Teraz wszystko powinno być już dobrze, odpalamy vlc i wypatrujemy następującego komunikatu:

Jeśli go ujrzeliśmy, znaczy się że VAAPI działa, a procek ma trochę więcej czasu na inne zajęcia.

Czy udało Ci się uruchomić VLC z VAAPI?

View Results

Loading ... Loading ...
  • Unique Post

5 Comments

  1. Jak tak polecasz, to będę musiał uaktualnić 😉

  2. Dalej nic z Natty więcej nie wiadomo? Bo nie potrafię ogarnąć VAAPI dla tej wersji – której wersji xvba-video bym nie wybrał jest błąd z przedostatniego listingu :<

  3. Hej, próbuje zastosować Twoje porady z tą różnicą że jestem na opensuse 12.1 . Jak odpalam VLC
    filarsky@ASUS1215B:~> vlc
    VLC media player 1.1.13 The Luggage (revision exported)
    Blocked: call to unsetenv(“DBUS_ACTIVATION_ADDRESS”)
    Blocked: call to unsetenv(“DBUS_ACTIVATION_BUS_TYPE”)
    [0x80503fc] main libvlc: Uruchamianie vlc z domyślnym interfejsem. Użyj ‘cvlc’ aby używać vlc bez interfejsu.
    Blocked: call to setlocale(6, “”)
    Blocked: call to setlocale(6, “”)
    QPainter::begin: Paint device returned engine == 0, type: 2
    QPainter::setCompositionMode: Painter not active
    QPainter::begin: Paint device returned engine == 0, type: 2
    ^C[0x81ea574] signals interface error: Caught Przerwanie signal, exiting…
    filarsky@ASUS1215B:~> vainfo
    libva: libva version 0.32.0
    libva: User requested driver ‘fglrx’
    libva: Trying to open /usr/lib/dri/fglrx_drv_video.so
    libva: va_openDriver() returns 0
    vainfo: VA API version: 0.32
    vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA-API – 0.8.0
    vainfo: Supported profile and entrypoints
    VAProfileH264High : VAEntrypointVLD
    VAProfileVC1Advanced : VAEntrypointVLD

    Niby mam VAAPI zainstalowane, ale go VLC nie widzi, mógłbyś jakoś pomóc ?
    Pozdrawiam.

Leave a Reply

Your email address will not be published. Required fields are marked *