Bagaimana saya bisa tahu jika nvidia vdpau berfungsi untuk mplayer / vlc / totem?


8

Saya memiliki laptop dengan kartu grafis Nvidia diskrit .

Bagaimana saya bisa tahu apakah pemutar video saya baik itu mplayer atau vlc atau totem menggunakan nvidia VDPAU atau tidak? Misalnya, menjalankan mplayer2 dengan skrip di bawah ini, saya mendapatkan pesan ini:

Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory

Tapi saya punya file seperti itu di sistem:

-rw-r--r-- 1 root root 1800952 2011-11-23 07:39 /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10

Script untuk mengetahui codec untuk file:

    #!/bin/bash
#Script to automatically find out which codec a file is using and determine whether or not to use VDPAU.

#if no input display usage
if [ -z "$1" ]; then
    echo usage: $0 /path/to/file
    exit
fi

#remember to change this to the path of your mplayer binary
mplayerlocation=/usr/bin/
cd $mplayerlocation

#kinda a lame way to do it, but bring up mplayer and pipe the output to a temporary file, then read which codec the file is
./mplayer -identify -vo vdpau $1 > /tmp/VIDEOCODEC &
sleep 0.5
killall mplayer
videocodec=`cat /tmp/VIDEOCODEC | grep ID_VIDEO_CODEC | cut -c 16-25`
rm /tmp/VIDEOCODEC

echo "VIDEO CODEC: $videocodec"

if [ $videocodec = "ffh264" ]; then
    codec='h264'
    echo \n Playing $1 with $codec codec \n
    ./mplayer -vo vdpau -vc ffh264vdpau $1

    exit
fi

if [ $videocodec = "ffmpeg2" ]; then
    codec='MPEG2'
    echo \n Playing $1 with $codec codec \n
    ./mplayer -vo vdpau -vc ffmpeg12vdpau $1

    exit
fi

if [ $videocodec = "ffwmv3" ]; then
    codec='WMV3'
    echo \n Playing $1 with $codec codec \n
    ./mplayer -vo vdpau -vc ffwmv3vdpau $1

    exit
fi

#VC1 is not supported on most gpus
#uncomment if it is supported on your gpu
#if [ $videocodec = "ffvc1" ]; then
#   codec='VC1'
#   echo \n Playing $1 with $codec codec \n
#   ./mplayer -vo vdpau -vc ffvc1vdpau $1
#
#   exit
#fi

#if it isnt one of those it is not supported by vdpau
#so we should play without vdpau
./mplayer $1
exit

EDIT: ternyata tidak dapat menemukan perpustakaan, bahkan ketika memanggilnya melalui bumblebee's v3 optirun, meskipun perpustakaan ada di sana:

optirun vdpauinfo 
display: :0.0   screen: 0
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
Error creating VDPAU device: 1
avilella@magneto:~$ locate libvdpau_nvidia.so | xargs ls
/usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so  /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.1  /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10

EDIT2: Saya mencoba lagi dengan Ubuntu 12.04 dan saya masih tidak bisa membuatnya bekerja.


Misalnya, untuk mplayer, saya mendapatkan: [vdpau] Kesalahan saat memanggil vdp_device_create_x11: 1
719016


Saya mencoba lagi dengan Ubuntu 12.04 dan saya masih tidak bisa membuatnya bekerja.
719016

Jawaban:


11

Untuk menjawab pertanyaan Anda & sedikit tentang mengaktifkan gpu decoding dengan mplayer atau vlc.

Mplayer

Cara termudah untuk melihat apakah Anda mendapatkan decoding GPU melalui vdpau adalah dengan melakukan apa yang telah Anda lakukan - jalankan mplayer dari terminal. Atm apa yang telah Anda tunjukkan menunjukkan Anda tidak mendapatkannya.

Persyaratan untuk mplayer adalah:

mplayer atau mplayer 2

nvidia-current atau driver nvidia langsung dari nvidia, paket nvidia-saat ini akan dilakukan.

libvdpau

Pastikan Anda telah memenuhi yang di atas, kemudian jalankan perintah yang Anda lakukan sebelumnya, meskipun pastikan videonya h.264

Ex. output terminal, menghapus garis yang tidak relevan

$ mplayer  -vo vdpau -vc ffh264vdpau /home/doug/Videos/sintel.mp4 
MPlayer2 UNKNOWN (C) 2000-2011 MPlayer Team
Playing /home/doug/Videos/sintel.mp4.
Detected file format: QuickTime/MPEG-4/Motion JPEG 2000 format (libavformat)
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang und
VIDEO:  [H264]  1280x546  24bpp  24.000 fps  1597.2 kbps (195.0 kbyte/s)
==========================================================================
Forced video codec: ffh264vdpau
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264vdpau] vfm: ffmpeg (FFmpeg H.264 (VDPAU))
VO: [vdpau] 1280x546 => 1280x546 H.264 VDPAU acceleration 
[vdpau] Got display refresh rate 59.991 Hz.

Jika Anda mendukung / mendapatkan vdpau melalui mplayer, Anda dapat mengatur vc=jalur ~/.mplayer/configuntuk memeriksa otomatis & menggunakan decoder ffvdpau * yang sesuai untuk codec yang didukung

Cara lain untuk memeriksa adalah menggunakan vdpauinfo. Paket ini hanya tersedia dalam 12,04 tetapi dapat diinstal pada 11,10. Untuk melakukannya buka di sini, unduh & instal dengan gdebi, meskipun software centermungkin menginstal untuk Anda jika Anda ingin mencoba

http://packages.ubuntu.com/precise/vdpauinfo

Untuk menggunakan buka terminal & jalankan vdpauinfo

Ex. dari beberapa output vdpauinfo pada laptop dengan dukungan vdpau dasar

$ vdpauinfo
display: :0   screen: 0
API version: 1
Information string: NVIDIA VDPAU Driver Shared Library  280.13  Wed Jul 27 17:18:15 PDT 2011

Video surface:

name   width height types
 -------------------------------------------
420     4096  4096  NV12 YV12 
422     4096  4096  UYVY YUYV 

Decoder capabilities:

name               level macbs width height
-------------------------------------------
MPEG1                 0  8192  2048  2048
MPEG2_SIMPLE          3  8192  2048  2048
MPEG2_MAIN            3  8192  2048  2048
H264_MAIN            41  8192  2048  2048
H264_HIGH            41  8192  2048  2048
VC1_SIMPLE            1  8190  2048  2048
VC1_MAIN              2  8190  2048  2048
VC1_ADVANCED          4  8190  2048  2048

Vc

Jika Anda memiliki perangkat keras nvidia & tidak bisa atau tidak memiliki dukungan vdpau maka jangan repot-repot dengan vlc yang menggunakan vaapi & adalah penipu untuk mengaktifkan. Selain itu kinerja vaapi pada nvidia sangat tergantung pada perangkat keras. Saya telah mengaktifkan di sini tetapi tidak menggunakan, ffmpeg multi-thread lebih baik dengan perangkat keras saya di vlc.

Ini hanyalah dasar-dasar untuk mendapatkan vaapi & mengaktifkan di vlc. Untuk spesifiknya Anda perlu mencari & atau bertanya bagaimana.

Persyaratan untuk vlc adalah:

vlc & ffmpeg membagikan lib yang memiliki dukungan vaapi, 11.10 bagus di sana.

libva1, juga instal libva-x11-1 vainfo

vdpau-va-driver

Masalah terbesar Anda mungkin adalah versi libva * & vdpau-va driver ubuntu tidak cukup baru, Anda harus mendapatkan saran lebih lanjut di sana. In 12.04 they are adequate

Berlari vainfodi terminal akan memberi tahu Anda di mana Anda berdiri

Ex. di sini vainfo

$ vainfo
libva: libva version 0.32.0
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/dri/nvidia_drv_video.so
libva: va_openDriver() returns 0
vainfo: VA API version: 0.32
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.3
vainfo: Supported profile and entrypoints
  VAProfileMPEG2Simple            : VAEntrypointVLD
  VAProfileMPEG2Main              : VAEntrypointVLD
  VAProfileH264Main               : VAEntrypointVLD
  VAProfileH264High               : VAEntrypointVLD
  VAProfileVC1Simple              : VAEntrypointVLD
  VAProfileVC1Main                : VAEntrypointVLD
  VAProfileVC1Advanced            : VAEntrypointVLD

Untuk mengaktifkan gpu decoding di vlc melalui vaapi & ffmpeg, dua cara

Dari terminal, tidak perlu diatur dalam preferensi

vlc --ffmpeg-hw /path/to/supported/video/name

Untuk mengatur dalam gui vlc, posting sebelumnya tidak benar tentang bagaimana, cara aktual ditampilkan di layar

Alat> Preferensi> Input / Codec> centang kotak, membaca "Lewati filter deblocking H.264 dalam-loop" mungkin terbukti bermanfaat

masukkan deskripsi gambar di sini

Ex. dari terminal vlc gpu decoding melalui vaapi , menggunakan repo vlc di 12.04 meskipun 1.2 / 1.3 / 2.0 adalah versi yang lebih disukai, ppa untuk 2.0 harus tersedia jika diinginkan

vlc --ffmpeg-hw '/home/doug/Videos/sintel.mp4' 
VLC media player 1.1.13 The Luggage (revision exported)
clipped .....

libva: libva version 0.32.0
Xlib:  extension "XFree86-DRI" missing on display ":1".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/dri/nvidia_drv_video.so
libva: va_openDriver() returns 0
[0x863468c] avcodec decoder: Using VA API version 0.32 for hardware decoding.

Bahkan ketika memanggilnya melalui bumblebee's optirun, tidak dapat menemukan perpustakaan, meskipun ada di sana: optirun vdpauinfo display:: layar 0,0: 0 Gagal membuka backend VDPAU libvdpau_nvidia.so: tidak dapat membuka file objek bersama: Tidak ada file atau direktori tersebut Kesalahan membuat perangkat VDPAU: 1 avilella @ magneto: ~ $ loc libvdpau_nvidia.so | xargs ls /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.1 /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10
719.016

2
Jika, seperti yang sekarang muncul, Anda memiliki perangkat keras video hybrid / optimus maka Anda harus meneliti cara mengizinkan decoding gpu melalui chip nvidia. Saya sendiri belum pernah memiliki perangkat keras seperti itu, pertanyaan khusus untuk masalah ini dapat menarik perhatian dari mereka yang sedang & sedang menghadapi atau mudah-mudahan 'memperbaiki' masalah ini
doug

pertanyaan ini memiliki beberapa info tentang hybrid, kemungkinan orang lain askubuntu.com/questions/100786/…
doug

2

Anda dapat melakukannya dengan memeriksa penggunaan CPU dari proses bermain misalnya top. Jika vdpau offloading berlaku, penggunaan cpu harus rendah. Di sisi lain, decoding pada cpu akan menghasilkan beban cpu yang tinggi.


0

VLC, Secara default menggunakan akselerasi perangkat keras platform jika tersedia. Anda dapat memverifikasi dengan membuka Alat pemain-> Preferensi-> Video-> Output Video yang Dipercepat (Overlay) dan lihat apakah dicentang.

Jadi, Anda harus memeriksa apakah driver untuk kartu grafis Nvidia diinstal dengan benar, yang Anda dapat dengan menggunakan System-> Administration-> Driver Tambahan .


Untuk vlc, Tools-> Preferences-> Video-> Output Video yang Dipercepat (Overlay) dicentang, tetapi berperilaku seperti ketika saya menjalankannya dengan mplayer, jadi saya kira itu tidak berfungsi juga.
719016

0

Untuk memeriksa apakah saya akan memutar film HD, Unduh trailer dari situs web trailer apple / iTunes movie. pada VLC sampai ke Tools-> Preferences-> Video-> Output Video yang Dipercepat (Overlay) dan nonaktifkan. Buka Monitor sistem dan buka tab "Proses" dan temukan VLC pada daftar.

Mulai trailer atau film yang Anda miliki dan lihat seberapa tinggi proses VLC menggunakan CPU. Sekarang hentikan film di VLC dan pergi ke Tools-> Preferences-> Video-> Output Video yang Dipercepat (Overlay) kemudian "Aktifkan" akselerasi Hardware dan Simpan pengaturan Anda. Mungkin perlu untuk menutup lalu mulai ulang VLC agar perubahan diterapkan. Saya akan me-restart agar aman.

Setelah VLC dihidupkan ulang dengan overlay perangkat keras diaktifkan. Mainkan film / trailer yang sama seperti sebelumnya dan lihat apakah Sumber Daya CPU lebih rendah pada panel Monitor Sistem.

Jika mereka secara signifikan lebih rendah itu berarti itu berfungsi.

dalam kasus saya VLC berubah dari menggunakan 60-70% CPU menjadi hanya 20-30%. Saya perhatikan bahwa MPlayer menggunakan lebih sedikit. mulai dari 60-70% menjadi di bawah 5% dengan akselerasi Hardware.

Hasil Anda akan bervariasi tetapi jika akselerasi Hardware berfungsi dengan baik, Anda akan melihat penurunan yang cukup signifikan pada penggunaan CPU pada proses spesifik di bawah Monitor Sistem.

Dari apa yang saya pahami, akselerasi Perangkat Keras Video tidak kompatibel dengan semua format video dan itu tergantung pada GPU Anda sejauh format mana yang dapat didekodekan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.