Làm thế nào tôi có thể biết nếu nvidia vdpau đang làm việc cho mplayer / vlc / totem?


8

Tôi có một máy tính xách tay với card đồ họa Nvidia riêng biệt .

Làm cách nào để biết trình phát video của tôi có phải là mplayer hoặc vlc hoặc totem đang sử dụng nvidia VDPAU hay không? Ví dụ: chạy mplayer2 với tập lệnh bên dưới, tôi nhận được thông báo này:

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

Nhưng tôi có tập tin như vậy trong hệ thống:

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

Script để tìm ra codec cho một tập tin:

    #!/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: dường như nó không thể tìm thấy thư viện, ngay cả khi gọi nó qua optirun v3 của bumblebee, mặc dù thư viện ở đó:

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: Tôi đã thử lại với Ubuntu 12.04 và tôi vẫn không thể làm cho nó hoạt động được.


Ví dụ: đối với người chơi, tôi nhận được: [vdpau] Lỗi khi gọi vdp_device_create_x11: 1
719016


Tôi đã thử lại với Ubuntu 12.04 và tôi vẫn không thể làm cho nó hoạt động được.
719016

Câu trả lời:


11

Để giải quyết câu hỏi của bạn và một chút về việc kích hoạt giải mã gpu bằng mplayer hoặc vlc.

Người chơi

Cách dễ nhất để xem bạn có đang giải mã gpu thông qua vdpau hay không là làm những gì bạn đã làm - chạy mplayer từ thiết bị đầu cuối. Atm những gì bạn đã thể hiện cho thấy bạn không nhận được nó.

Các điều kiện cần thiết cho người chơi là:

mplayer hoặc là mplayer 2

nvidia-current hoặc trình điều khiển nvidia trực tiếp từ nvidia, gói nvidia hiện tại sẽ làm.

libvdpau

Hãy chắc chắn rằng bạn đã đáp ứng các điều trên, sau đó chạy lệnh bạn đã làm trước đó, mặc dù hãy chắc chắn rằng video là h.264

Ví dụ. của đầu ra thiết bị đầu cuối, loại bỏ các dòng không liên quan

$ 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.

Nếu bạn hỗ trợ / nhận vdpau thru mplayer, bạn có thể đặt một vc=dòng ~/.mplayer/configđể tự động kiểm tra và sử dụng bộ giải mã ffvdpau * thích hợp cho các codec được hỗ trợ

Một cách khác để kiểm tra là sử dụng vdpauinfo. Gói chỉ có sẵn trong 12.04 nhưng có thể được cài đặt vào 11.10. Để làm như vậy, hãy tải xuống và cài đặt gdebi, mặc dù software centercó thể cài đặt cho bạn nếu bạn muốn thử

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

Để sử dụng mở một thiết bị đầu cuối và chạy vdpauinfo

Ví dụ. một số đầu ra của vdpauinfo trên máy tính xách tay có hỗ trợ vdpau cơ bản

$ 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

Vlc

Nếu bạn có phần cứng nvidia & không thể hoặc không có hỗ trợ vdpau thì đừng bận tâm với vlc sử dụng vaapi và là thủ thuật để kích hoạt. Ngoài ra, hiệu năng của vaapi trên nvidia phụ thuộc rất nhiều vào phần cứng. Tôi đã kích hoạt ở đây nhưng không sử dụng, đa luồng ffmpeg tốt hơn với phần cứng của tôi trong vlc.

Đây chỉ là những điều cơ bản để có được vaapi và kích hoạt trong vlc. Để biết cụ thể bạn cần tìm kiếm & hoặc hỏi làm thế nào.

Các điều kiện cần thiết cho vlc là:

vlc & ffmpeg chia sẻ libs có hỗ trợ vaapi, 11.10 là tốt ở đó.

libva1, cũng cài đặt libva-x11-1 vainfo

vdpau-va-driver

Vấn đề lớn nhất của bạn có thể là các phiên bản libva * & vdpau-va-driver của Ubuntu không đủ mới, bạn sẽ cần được tư vấn thêm ở đó. In 12.04 they are adequate

Chạy vainfotrong một thiết bị đầu cuối sẽ cho bạn biết nơi bạn đứng

Ví dụ. đây của 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

Để kích hoạt giải mã gpu trong vlc thru vaapi & ffmpeg, hai cách

Từ một thiết bị đầu cuối, không cần thiết lập tùy chọn

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

Để đặt trong gui của vlc, các bài đăng trước không chính xác như cách thức, cách thực tế được hiển thị trên màn hình

Công cụ> Tùy chọn> Đầu vào / Codecs> chọn hộp, đọc "Bỏ qua bộ lọc gỡ lỗi trong vòng lặp H.264" có thể chứng minh giá trị

nhập mô tả hình ảnh ở đây

Ví dụ. từ thiết bị đầu cuối của vlc gpu giải mã thông qua vaapi , sử dụng repo vlc trong 12.04 mặc dù 1.2 / 1.3 / 2.0 là phiên bản ưa thích, nên có sẵn ppa cho 2.0 nếu muốn

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.

Ngay cả khi gọi nó thông qua optirun của bumblebee, không thể tìm thấy thư viện, mặc dù nó có: optirun vdpauinfo hiển thị :: màn hình 0,0: 0 Không thể mở VDPAU backend libvdpau_nvidia.so: Không thể mở tệp đối tượng được chia sẻ: Không có tệp hoặc thư mục bị chia sẻ tạo thiết bị VDPAU: 1 avilella @ Magneto: ~ $ định vị libvdpau_nvidia.so | xargs ls
usr/lib/nvidia

2
Nếu, như bây giờ, bạn có phần cứng video lai / tối ưu thì bạn sẽ cần nghiên cứu cách cho phép giải mã gpu thông qua chip nvidia. Bản thân tôi chưa bao giờ sở hữu phần cứng như vậy, một câu hỏi cụ thể cho vấn đề đó có thể thu hút được sự chú ý từ những người đang và đang phải đối mặt hoặc hy vọng 'khắc phục' vấn đề này
doug

Câu hỏi này có một số thông tin về hybrid, rất có thể những người khác hỏiubub.com/questions/100786/ triệt
doug

2

Bạn có thể làm điều đó bằng cách kiểm tra việc sử dụng cpu của quá trình chơi chẳng hạn top. Nếu giảm tải vdpau có hiệu lực, việc sử dụng cpu sẽ thấp. Mặt khác, giải mã trên cpu sẽ dẫn đến tải cpu cao.


0

VLC, theo mặc định sử dụng khả năng tăng tốc phần cứng của nền tảng nếu có. Bạn có thể xác minh bằng cách truy cập Công cụ của người chơi-> Tùy chọn-> Video-> Đầu ra video được tăng tốc (Lớp phủ) và xem nếu nó được chọn.

Vì vậy, bạn nên kiểm tra xem các trình điều khiển cho card đồ họa Nvidia đã được cài đặt đúng chưa, bằng cách sử dụng System-> Quản trị-> Trình điều khiển bổ sung .


Đối với vlc, Công cụ-> Tùy chọn-> Video-> Đầu ra video được tăng tốc (Lớp phủ) được đánh dấu, nhưng nó hoạt động như khi tôi chạy nó với mplayer, vì vậy tôi đoán nó cũng không hoạt động.
719016

0

Để kiểm tra tôi sẽ phát phim HD, Tải xuống đoạn giới thiệu từ trang web giới thiệu phim apple / iTunes. trên VLC đã vào Công cụ-> Tùy chọn-> Video-> Đầu ra video được tăng tốc (Lớp phủ) và vô hiệu hóa nó. Mở Trình giám sát hệ thống và chuyển đến tab "Quy trình" và tìm VLC trong danh sách.

Bắt đầu đoạn giới thiệu hoặc phim bạn có và xem quá trình VLC sử dụng CPU cao đến mức nào. Bây giờ hãy dừng phim trên VLC và đi đến Công cụ-> Tùy chọn-> Video-> Đầu ra video được tăng tốc (Lớp phủ) sau đó "Bật" tăng tốc Phần cứng và Lưu cài đặt của bạn. Có thể cần phải đóng sau đó khởi động lại VLC để các thay đổi có hiệu lực. Tôi sẽ khởi động lại nó để được an toàn.

Khi VLC được khởi động lại với lớp phủ phần cứng được kích hoạt. Phát cùng một bộ phim / đoạn giới thiệu như trước và xem Tài nguyên CPU có thấp hơn trên bảng điều khiển Hệ thống không.

Nếu chúng thấp hơn đáng kể có nghĩa là nó đang hoạt động.

trong trường hợp của tôi, VLC đã chuyển từ sử dụng CPU 60-70% xuống chỉ còn 20-30%. Tôi nhận thấy rằng MPlayer được sử dụng ít hơn. nó đã tăng từ 60-70% xuống dưới 5% khi tăng tốc Phần cứng.

Kết quả của bạn sẽ thay đổi nhưng nếu khả năng tăng tốc Phần cứng hoạt động tốt, bạn sẽ thấy sự giảm sút đáng kể về việc sử dụng CPU trên quy trình cụ thể đó trong System Monitor.

Theo những gì tôi hiểu, khả năng tăng tốc của Phần cứng Video không tương thích với tất cả các định dạng video và nó phụ thuộc vào GPU của bạn theo như định dạng mà nó có thể giải mã.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.