nvidia vdpau가 mplayer / vlc / totem에서 작동하는지 어떻게 알 수 있습니까?


8

별도의 Nvidia 그래픽 카드 가 장착 된 노트북이 있습니다.

비디오 플레이어가 mplayer 또는 vlc인지 또는 토템이 nvidia VDPAU를 사용하는지 여부를 어떻게 알 수 있습니까? 예를 들어 아래 스크립트를 사용하여 mplayer2를 실행하면이 메시지가 나타납니다.

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

그러나 시스템에 그러한 파일이 있습니다.

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

파일 코덱을 찾는 스크립트 :

    #!/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

편집 : 분명히 라이브러리가 있지만 bumblebee의 v3 optirun을 통해 호출 할 때조차도 라이브러리를 찾을 수 없습니다.

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 : Ubuntu 12.04로 다시 시도했지만 여전히 작동하지 않습니다.


예를 들어 mplayer의 경우 다음과 같은 메시지가 나타납니다. [vdpau] vdp_device_create_x11 호출시 오류 : 1
719016


우분투 12.04로 다시 시도했지만 여전히 작동하지 않습니다.
719016

답변:


11

mplayer 또는 vlc를 사용하여 GPU 디코딩을 사용하도록 설정하는 방법

엠 플레이어

vdpau를 통해 GPU 디코딩을 받고 있는지 확인하는 가장 쉬운 방법은 터미널에서 mplayer를 실행하는 것입니다. 당신이 보여준 것은 당신이 그것을 얻지 못하고 있음을 나타냅니다.

mplayer의 필수 조건은 다음과 같습니다.

mplayer 또는 mplayer 2

nvidia-current 또는 nvidia에서 직접 제공되는 nvidia 드라이버를 사용하면 nvidia-current 패키지가 수행합니다.

libvdpau

위의 내용을 충족했는지 확인한 다음 이전에 수행 한 명령을 실행하십시오 (비디오가 h.264인지 확인).

전의. 터미널 출력, 관련없는 라인 제거

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

mplayer를 통해 vdpau를 지원 / 받으려면 지원되는 코덱에 적합한 ffvdpau * 디코더를 자동 확인하고 사용하도록 vc=줄을 설정할 수 있습니다~/.mplayer/config

확인하는 또 다른 방법 은을 사용하는 것 vdpauinfo입니다. 패키지는 12.04에서만 사용할 수 있지만 11.10에서 설치할 수 있습니다. 그래서 여기, 다운로드 & 사용하여 설치 할 수 gdebi있지만, software center당신이 시도하고자하는 경우 당신을 위해 설치할 수 있습니다

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

터미널을 열고 실행하려면 vdpauinfo

전의. vdpau가 기본 지원되는 랩톱에서 vdpauinfo 출력 중 일부

$ 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

nvidia 하드웨어가 있고 vdpau를 지원할 수 없거나 지원하지 않는 경우 vaapi를 사용하는 vlc를 사용하지 마십시오. 또한 엔비디아에서 vaapi의 성능은 하드웨어에 따라 크게 좌우됩니다. 여기에서 활성화했지만 사용하지 마십시오. ffmpeg 멀티 스레드가 vlc의 하드웨어에 더 좋습니다.

이것은 vaapi를 얻고 vlc에서 활성화하는 기본 사항입니다. 구체적인 내용은을 검색하거나 방법을 문의해야합니다.

vlc의 필수 조건은 다음과 같습니다.

vaapi를 지원하는 vlc & ffmpeg 공유 라이브러리, 11.10이 좋습니다.

libva1또한 설치 libva-x11-1 vainfo

vdpau-va-driver

가장 큰 문제는 우분투의 libva * 및 vdpau-va-driver 버전이 충분히 새롭지 않다는 것입니다. 추가 조언이 필요합니다. In 12.04 they are adequate

실행 vainfo당신이 어디에 서 터미널에서 당신을 말해야한다

전의. 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

vaapi & ffmpeg를 통해 VLC에서 GPU 디코딩을 활성화하려면 두 가지 방법

터미널에서 환경 설정을 할 필요가 없습니다

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

VLC의 GUI에서 설정하려면 이전 게시물이 어떻게 실제 화면이 화면에 표시되는지에 대해 올바르지 않습니다.

도구> 기본 설정> 입력 / 코덱> 확인란을 선택하십시오. "Skip H.264 인 루프 디 블로킹 필터"를 읽어보십시오.

여기에 이미지 설명을 입력하십시오

전의. 1.2 / 1.3 / 2.0이 선호되는 버전이지만 12.04의 repo vlc를 사용하여 vaapi를 통해 vlc gpu 디코딩의 터미널 에서 2.0을위한 ppa를 사용할 수 있어야합니다

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.

bumblebee의 optirun을 통해 호출 할 때도 라이브러리가 없습니다. optirun vdpauinfo display : : 0.0 screen : 0 VDPAU 백엔드를 열지 못했습니다 libvdpau_nvidia.so : 공유 객체 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리 오류가 없습니다 VDPAU 장치 작성 : 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
719016

2
이제 보이는 것처럼 하이브리드 / 최적화 비디오 하드웨어를 사용하는 경우 엔비디아 칩을 통해 GPU 디코딩을 허용하는 방법을 연구해야합니다. 나 자신도 그런 하드웨어를 소유 한 적이 없다.이 문제와 관련된 질문은이 문제에 직면하고 있거나 희망적으로 '고정 된'사람들의 관심을 끌 수있다
doug

이 질문은 하이브리드에 관한 정보를 가지고 있으며 아마도 다른 것들 askubuntu.com/questions/100786/…
doug

2

예를 들어 재생 프로세스의 CPU 사용량을 확인하여 수행 할 수 있습니다 top. vdpau 오프 로딩이 유효하면 CPU 사용량이 낮아야합니다. 반면, CPU에서 디코딩하면 CPU 부하가 높아집니다.


0

VLC, 플랫폼이 사용 가능한 경우 기본적으로 플랫폼의 하드웨어 가속을 사용합니다. 플레이어의 도구-> 환경 설정-> 비디오-> 가속 비디오 출력 (오버레이)으로 이동 하여 틱되었는지 확인하십시오.

따라서 시스템-> 관리-> 추가 드라이버 를 사용하여 Nvidia 그래픽 카드 용 드라이버가 올바르게 설치되어 있는지 확인해야합니다 .


vlc의 경우 도구-> 환경 설정-> 비디오-> 가속 비디오 출력 (오버레이)이 선택되지만 mplayer로 실행할 때와 같이 작동하므로 작동하지 않는 것 같습니다.
719016

0

HD 영화를 재생할 것인지 확인하려면 apple / iTunes 영화 예고편 웹 사이트에서 예고편을 다운로드하십시오. VLC에서 Tools-> Preferences-> Video-> Accelerated Video Output (Overlay)로 가서 비활성화하십시오. 시스템 모니터를 열고 "프로세스"탭으로 이동하여 목록에서 VLC를 찾으십시오.

예고편이나 영화를 시작하고 VLC 프로세스가 CPU를 얼마나 많이 사용하는지 살펴보십시오. 이제 VLC에서 동영상을 중지하고 도구-> 기본 설정-> 비디오-> 가속 비디오 출력 (오버레이)으로 이동 한 다음 하드웨어 가속을 "활성화"하고 설정을 저장하십시오. 변경 사항을 적용하려면 VLC를 닫았다가 다시 시작해야 할 수도 있습니다. 안전을 위해 다시 시작하겠습니다.

하드웨어 오버레이가 활성화 된 상태에서 VLC를 다시 시작하면 이전과 동일한 영화 / 트레일러를 재생하고 시스템 모니터 패널에서 CPU 리소스가 더 낮은 지 확인하십시오.

그것들이 상당히 낮 으면 작동한다는 의미입니다.

필자의 경우 VLC는 60-70 % CPU 사용에서 20-30 %로 이동했습니다. MPlayer의 사용량이 훨씬 적다는 것을 알았습니다. 하드웨어 가속으로 60-70 %에서 5 % 미만으로 증가했습니다.

결과는 다양하지만 하드웨어 가속이 제대로 작동하면 시스템 모니터에서 해당 특정 프로세스의 CPU 사용량이 상당히 줄어 듭니다.

내가 이해 한 바에 따르면 비디오 하드웨어 가속은 모든 비디오 형식과 호환되지 않으며 디코딩 할 수있는 형식까지 GPU에 따라 다릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.