Home > GNU/Linux, Guide pratiche GNU/Linux > Sfruttare al meglio l’accelerazione video delle schede nvidia su Ubuntu

Sfruttare al meglio l’accelerazione video delle schede nvidia su Ubuntu

Le schede Nvidia dalla serie 8 in su permettono la decodifica dei video mp2 e mp4 da parte della GPU della scheda stessa. Questa feature è chiamata Purevideo e su GNU/Linux e altri sistemi Unix si sfrutta tramite la libreria VDPAU (Video Decode and Presentation API for Unix).

Su GNU/Linux i lettori basati su mplayer e xine permettono di sfruttare l’accelerazione che, in sostanza, significa occupazione minima della CPU del PC in quanto il grosso del carico viene spostato sulla scheda. Qui spiegherà come sfruttare appieno vdpau con mplayer.

Prima di tutto controlliamo di avere installati i pacchetti libvdpau1 e nvidia-185-libvdpau.

Possiamo anche aggiungere l’apposito repository con le versioni aggiornate della libreria in questione. Il repo è ppa:nvidia-vdpau/ppa (questa stringa va aggiunta con “sorgenti software”)

Teniamoci aggiornati aggiungendo il repository medibuntu, se non lo abbiamo già fatto.

sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update

e poi

sudo apt-get --yes install app-install-data-medibuntu apport-hooks-medibuntu

Ora installiamo il necessario e anche qualcos’altro per avere tutti i codec disponibili:

sudo apt-get install ubuntu-restricted-extras non-free-codecs libavcodec-extra-52 libavdevice-extra-52 libavfilter-extra-0 libavformat-extra-52 libavutil-extra-49 libpostproc-extra-51 libswscale-extra-0 mplayer mplayer-gui

Diversi di questi pacchetti in realtà non servono per il nostro scopo ma sono comunque utili per aver un po’ tutto l’armamentario di codec.

Ora una spiegazione: ci sono due cose che fa vdpau. La prima è la decodifica, la seconda è il ridimensionamento del video e la sua conversione dallo spazio di colore YUV del video a quello RGB del monitor. Queste ultime due vengono fatte anche dall’estensione XV di Xorg sempre via hardware, quindi non avremmo grossi vantaggi. Per attivare invece la decodifica è necessario istruire mplayer perché dalla gui è solo possibile selezionare vdpau come uscita video ma non come codec (e comunque poi sarebbe un problema per la decodifica di altri formati).

Dando:

gmplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau nomedelfile.mp4

possiamo sfruttare l’accelerazione.

EDIT: modificata grazie ai suggerimenti di Gufetto e Telperion

Per rendere le cose più comode configuriamo mplayer.

gedit .mplayer/config

e scriviamo

# Write your default config options here!

vc=ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau, #attenzione alla virgola finale!
vo=vdpau
ao=pulse # questo solo su GNOME!

(i commenti dopo il # non copiateli 😉 ) Ci basterà quindi cliccare con il destro sul file e scegliere di aprirlo con mplayer. Possiamo eventualmente impostarlo come default sempre da proprietà > apri con.

Lo stesso può essere fatto con i file mpeg2 (ad esempio i vob dei dvd) o wmv che usano il codec vc1 (ovvero di norma il formato wmv 8 o 9) anche se in questo caso il supporto è da considerarsi sperimentale. Io l’ho provato con i video HD del sito Microsoft ed è perfettamente funzionante.

Il risultato è che il processo gmplayer occupa il 2-4%, invece che il 30% con lo stesso video 🙂 nel caso di video HD in formato wmv si passa dal 54-54% all’8-10%.

Consiglio di visitare il blog di telperion per l’uso con altri programmi di vdpau.

  1. Jay
    4 Maggio 2010 alle 9:04

    Non è possibile farlo con vlc?

    "Mi piace"

    • telperion
      4 Maggio 2010 alle 10:18

      vlc dovrebbe usare le vaapi per accedere all’accelerazione VDAPU, per info:
      http://wiki.videolan.org/VLC_VAAPI

      "Mi piace"

      • Jacopo
        4 Maggio 2010 alle 11:22

        Quindi ci si deve ricompilare VLC con il supporto a VAAPI attivo, se ho ben capito.

        "Mi piace"

        • telperion
          4 Maggio 2010 alle 12:52

          si

          http://tinyurl.com/2w7ry38
          considera che libva non c’è ancora in nessuna distribuizione e quindi te la devi compilare, che va ricompilato ffmpeg per attivare libva, i driver VAAPI-VDPAU eccetera, capisci perchè fai prima ad usare mplayer …

          "Mi piace"

          • Jay
            4 Maggio 2010 alle 20:21

            Ok mi avete convinto 😀 userò mplayer :p

            "Mi piace"

  2. 4 Maggio 2010 alle 10:03

    Io, invece di fare uno script, ho editato .mplayer/config e scritto dentro

    vo=vdpau
    vc=ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau,ffodivxvdpau
    ao=pulse

    Ciao!!!

    "Mi piace"

    • telperion
      4 Maggio 2010 alle 10:13

      Che penso sia la soluzione migliore, perchè imposta mplayer (il player a riga di comando) nella maniera corretta a prescindere dall’interfaccia usata.

      "Mi piace"

    • 4 Maggio 2010 alle 14:34

      be’ volendo puoi farlo pure da GUI… ma se ti trovi un codec diverso? ad esempio un realmedia. O se la tua scheda non è di livello b e c?

      "Mi piace"

      • 4 Maggio 2010 alle 14:42

        p.s. volendo si possono creare dei profili per ogni tipo di file. Ma non mi sbatto a fare cose complicate 😉

        "Mi piace"

      • telperion
        4 Maggio 2010 alle 16:32

        se usi

        vc=ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau,

        con la —-virgola finale—–, usa *automaticamente* gli altri codec, semplicemente prima usa quelli. eventualmente gli altri.

        "Mi piace"

        • 4 Maggio 2010 alle 18:33

          ah, non lo sapevo. Mo provo e aggiorno la guida.

          edit: sembra che la gui se ne freghi … e non esiste una famiglia di codec da impostare.
          Gnome-mplayer sembra andare ma introduce un terribile tearing, è un bug noto.

          "Mi piace"

  3. Emanuele
    4 Maggio 2010 alle 11:03

    Ma con Totem è possibile attivare la decodifica? Se sì, come?

    "Mi piace"

    • 4 Maggio 2010 alle 14:33

      no, non ancora. Esiste un plugin vpdau per gstreamer ma è ancora acerbo, causa solo crash.

      "Mi piace"

  4. The Wise Dj
    4 Maggio 2010 alle 11:58

    A me personalmente il comando non funziona per due motivi:

    1) La variabile $1 può generare errori se il file presenta spazi, quindi va corretta con “$1”
    2) Mi dice che non trova gli adeguati mezzi per riprodurre e di fatto sento solo l’audio.

    "Mi piace"

    • 4 Maggio 2010 alle 14:32

      hai ragione, correggo. E’ che io li tolgo sempre gli stazi per cui non me ne sarei mai accorto 🙂

      "Mi piace"

  5. The Wise Dj
    4 Maggio 2010 alle 12:01

    P.S:

    Cannot find codec matching selected -vo and video format 0x44495658.

    "Mi piace"

    • telperion
      4 Maggio 2010 alle 12:43

      occorre

      scheda serie 8 o maggiore, vedi
      http://tinyurl.com/2ak78bm
      VDPAU features A, A1, B, B1,C

      driver NVIDIA
      e pacchetto/i VDPAU installato/i

      mplayer con supporto VDPAU

      mplayer -vc help | gerp vdpau

      mc@debian:~$ mplayer -vc help | grep vdpau
      ffmpeg12vdpau ffmpeg working FFmpeg MPEG-1/2 (VDPAU) [mpegvideo_vdpau]
      ffwmv3vdpau ffmpeg problems FFmpeg WMV3/WMV9 (VDPAU) [wmv3_vdpau]
      ffvc1vdpau ffmpeg problems FFmpeg WVC1 (VDPAU) [vc1_vdpau]
      ffh264vdpau ffmpeg working FFmpeg H.264 (VDPAU) [h264_vdpau]
      ffodivxvdpau ffmpeg working FFmpeg MPEG-4,DIVX-4/5 (VDPAU) [mpeg4_vdpau]

      i -vc che supporta la scheda (tipo A B C) sono qui
      http://tinyurl.com/262f6ju

      Le Schede con VDPAU C supportano anche ffodivxvdpau

      "Mi piace"

      • telperion
        4 Maggio 2010 alle 12:44

        refuso

        mplayer -vc help | grep vdpau

        "Mi piace"

        • The Wise Dj
          4 Maggio 2010 alle 13:10

          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          bt_audio_service_open: connect() failed: Connection refused (111)
          ffmpeg12vdpau ffmpeg working FFmpeg MPEG-1/2 (VDPAU) [mpegvideo_vdpau]
          ffwmv3vdpau ffmpeg problems FFmpeg WMV3/WMV9 (VDPAU) [wmv3_vdpau]
          ffvc1vdpau ffmpeg problems FFmpeg WVC1 (VDPAU) [vc1_vdpau]
          ffh264vdpau ffmpeg working FFmpeg H.264 (VDPAU) [h264_vdpau]

          "Mi piace"

          • bonimba3
            4 Maggio 2010 alle 19:11

            Ho una GeForce 8600m GS (quindi livello A) e mplayer di lucid, ma a me dà questi errori:
            “error opening/initialing the selected video_out (-vo) device ”
            “cannot find the codec for audio format 0x162”
            Col comando- mplayer -vc help | grep vdpau -ho gli stessi errori di The Wise DJ(poco sopra).

            P.S.
            Ho seguito la seconda versione della guida!

            "Mi piace"

      • 4 Maggio 2010 alle 14:28

        io ffodivxvdpau non ce l’ho. Che versione di ffmpeg hai? (è solo una curiosità tanto la mia scheda è livello B)

        "Mi piace"

        • The Wise Dj
          4 Maggio 2010 alle 15:34

          Io ho una Nvidia 8400M GS, anche se non so se lo hai chiesto a me (problema di tab).

          "Mi piace"

          • The Wise Dj
            4 Maggio 2010 alle 15:34

            P.S E di Mplayer l’ultima disponibile, sono su lucid.

            "Mi piace"

        • telperion
          4 Maggio 2010 alle 16:29

          MPlayer SVN-r31027-4.4.3 (C) 2000-2010 MPlayer Team
          150 audio & 337 video codecs

          svn compilato da me con ffmpeg e il resto embebbed, due file, mplayer e mencoder e passa la paura …

          "Mi piace"

  6. 4 Maggio 2010 alle 13:24

    Info per la comune edificazione.
    Con vlc si può! Andrew di Webupd8 ha caricato nel suo repository la versione di VLC 1.1 con supporto per l’accellerazione grafica. QUI avete l’articolo!

    Saluti
    Lippol94

    "Mi piace"

    • 4 Maggio 2010 alle 14:27

      sconsiglio vivamente di installarlo. Prima di tutto non sfrutta ancora bene vdpau (vlc arriva al 22%) ma soprattutto poi non ti funziona più mplayer e diversi altri programmi che sfruttano ffmpeg.
      Non bisogna *MAI* aggiornare ffmpeg ad una versione successiva perché non c’è compatibilità delle ABI tra una versione e l’altra, il che richiederebbe di ricompilare tutti i programmi multimediali come mplayer e le librerie come xine e gstreamer. In quel repo c’è solo gstreamer.

      "Mi piace"

      • 4 Maggio 2010 alle 14:53

        Scusami. Hai ragione.
        Io non usando ne Xine ne Mplayer non ho avuto di questi problemi!

        Non ci ho badato
        :$

        "Mi piace"

      • The Wise Dj
        4 Maggio 2010 alle 15:31

        Io con vlc su lucid sono arrivato a 8% della cpu, di default *boh*

        "Mi piace"

      • telperion
        4 Maggio 2010 alle 16:35

        Infatti chi fa questi pacchetti dovrebbe installarli in /opt con tutte le dipendenze previste, usare un nome diverso tipo vlc-hwacc e creare un wrapper nel path, così da non incasinare il sistema.

        "Mi piace"

  7. ::VeRBaL::
    4 Maggio 2010 alle 17:41

    qualcosa per sfruttare le schede inferiori alla serie 8?

    "Mi piace"

    • 4 Maggio 2010 alle 18:44

      le schede inferiori non hanno vdpau/purevideo. Quindi non c’è nulla da fare.

      "Mi piace"

    • telperion
      6 Maggio 2010 alle 0:09

      Una cpu quadcore, allora l’accelerazione non serve più …
      LOL

      "Mi piace"

  8. Emanuele
    4 Maggio 2010 alle 19:54

    Non ho il pacchetto libvdpau1 installato perché sono ancora su Karmic, ma ho nvidia-185-libvdpau.

    mplayer -vc help | grep vdpau

    mi restituisce lo stesso output di Telperion qualche commento fa (ad esclusione della riga di ffodivxvdpau).

    Posso provare lo stesso a seguire la guida? Non vorrei combinare pasticci.

    "Mi piace"

  9. Pap
    5 Maggio 2010 alle 9:12

    Sì ma alla fine mi sembra che con vlc si veda molto meglio (senza accelerazione hardware). Con tutti i player comunque soffro di leggero tearing quando ci sono variazioni di luminosità.

    Tra l’altro ogni volta che chiudo mplayer mi becco una sequela di finestre di errori, crash report etc..

    "Mi piace"

  10. Marco Simonelli
    5 Maggio 2010 alle 14:03

    qualcuno sa dirmi perché ora al posto dei suoni di sistema ho delle belle scuregge e mplyer non riproduce alcun suono? nvidia 9500m gs su lucid

    "Mi piace"

    • Marco Simonelli
      5 Maggio 2010 alle 14:09

      edit: succede solo quando apro mplayer, se non riavvio continua l’aerofagia

      "Mi piace"

  11. 11 Maggio 2010 alle 15:11

    Ho provato con diversi video di trailer in FullHD di diversi formati e funziona alla grande!
    Alcuni video con totem o vlc nemmeno si visualizzavano o mancava l’audio o scattavano. Ora la CPU quasi non lavora!
    (Intel Core2Duo T6400 e Nvidia 9600mGT)
    GRAZIE

    "Mi piace"

  12. Roberto
    12 Maggio 2010 alle 19:18

    Funziona molto bene!!!
    unica domanda…in chiusura mplayer mi restituisce questo errore:
    MPlayer interrupted by signal 11 in module: unknown
    Qualcono sa cosa è?

    "Mi piace"

  13. davide
    1 luglio 2010 alle 8:19

    ciao, posso sfruttare in qualche modo questa tua guida anche se sono su kubuntu 10.04?

    grazie!

    "Mi piace"

  14. shouldes
    10 luglio 2010 alle 1:36

    davide (08:19:32) :
    Usa smplayer su kubuntu 10.04, non c’è necessità di usare alcun repository esterno, basta settare le opzioni del player, come spiegato da telperion.
    Devi solo aprire synaptic e installare libvdpau1.
    Se hai problemi di flickering durante i movimenti veloci, ti basta andare nei settaggi kwin e attivare sync vblank, che non sfarfallerà con nessun player esistente e nessuna uscita.
    Al limite avresti bisogno di una versione più recente del motore mplayer, rispetto a quella di lucid (per i sottotitoli dei dvd con smplayer).
    Ma in quel repository non c’è mplayer e non c’è mplayer-nogui per lucid, quindi non ci fai nulla al momento.

    Su gnome io usavo totem-xine…. Usavo…
    Ora uso smplayer sia su gnome che su kde.
    Neppure per la 9.10 c’era necessità di quel repository, invece per la 9.04 erano comodi, visto che mplayer era vecchiotto, smplayer era vecchiotto, ecc… (praticamente non c’era supporto vdpau coi repository ufficiali, con la 9.04 e precedenti).

    "Mi piace"

  15. 20 dicembre 2012 alle 11:58

    Your mode of describing the whole thing in this piece of writing is really
    nice, every one can without difficulty be aware of it, Thanks a lot.

    "Mi piace"

  16. 4 marzo 2013 alle 17:14

    The Federal Emergency Management Agency (FEMA) has made
    available to communities literature which provides guidance and technical information educating
    communities on how to become disaster resistant in the face of natural disasters.
    Remove other nearby wireless devices, such as a cordless or cellular telephone and make sure
    the mouse is at least eight inches away from a wireless keyboard.
    While the older 17 inch Mac – Book Pros lack the benefits of the unibody design,
    they do have the added feature of user-replaceable batteries.

    "Mi piace"

  17. 27 giugno 2014 alle 18:01

    Wow, outstanding weblog format! The way very long have you been posting to get? you create writing a blog glance easy. The complete appearance of the web site is superb, much less the material materials!

    "Mi piace"

  1. No trackbacks yet.

Scrivi una risposta a Marco Simonelli Cancella risposta