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


Ubuntu 12.04で再試行しましたが、まだ動作しません。
719016

回答:


11

mplayerまたはvlcでのGPUデコードの有効化に関する質問と少しに対処します。

Mplayer

vdpauを介してGPUデコードが行われているかどうかを確認する最も簡単な方法は、端末からmplayerを実行することです。Atmは、表示されていないことを示しています。

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をサポート/取得する場合は、vc=ライン~/.mplayer/configを自動チェックに設定し、サポートされているコーデックに適切なffvdpau *デコーダーを使用できます

確認するもう1つの方法は、を使用すること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を気にしないでください。さらに、nvidiaでのvaapiのパフォーマンスは、ハードウェアに大きく依存します。私はここで有効にしましたが、使用しません。fflcegマルチスレッドは、vlcのハードウェアに適しています。

これは、vaapiの取得とvlcでの有効化の基本に過ぎません。詳細については、検索するか、方法を尋ねる必要があります。

vlcの要件は次のとおりです。

vaapiをサポートするvlcおよびffmpeg共有ライブラリ。11.10が適しています。

libva1、またインストール libva-x11-1 vainfo

vdpau-va-driver

あなたの最大の問題は、ubuntuの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

VLCでvaapiおよびffmpegを介してGPUデコードを有効にするには、2つの方法があります

端末から、プリファレンスを設定する必要はありません

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

vlcのguiで設定するには、以前の投稿が実際の方法が画面に表示される方法に関して正しくありません

[ツール]> [設定]> [入力/コーデック]>チェックボックスをオンにすると、「H.264インループデブロッキングフィルターをスキップする」を読んで、価値があることがわかります

ここに画像の説明を入力してください

例 vlc gpuのターミナルからvaapiを介してデコードし、12.04のrepo vlcを使用しますが、1.2 / 1.3 / 2.0が推奨バージョンです。必要に応じて、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 Failed to open VDPAU backend libvdpau_nvidia.so:cannot open shared object file:No such file or directory Error 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
現在表示されているように、ハイブリッド/オプティマスビデオハードウェアを使用している場合は、NVIDIAチップを介してGPUデコードを許可する方法を調査する必要があります。私自身は、このようなハードウェアを所有したことがない、その問題への質問の具体的には、やると「固定」うまくいけば、この問題が直面したりしている人たちからいくつかの注目を集めること
ダグ

この質問ハイブリッド上のいくつかの情報を持っている、おそらく他の人がaskubuntu.com/questions/100786/...
ダグ

2

たとえば、再生プロセスのCPU使用率を確認することでそれを行うことができますtop。vdpauオフロードが有効な場合、CPU使用率は低くなければなりません。一方、CPUでデコードすると、CPUの負荷が高くなります。


0

VLC、デフォルトでは、プラットフォームのハードウェアアクセラレーションが使用可能な場合はそれを使用します。プレーヤーの[ ツール]-> [設定]-> [ビデオ]-> [アクセラレーテッドビデオ出力(オーバーレイ)]に移動して、チェックされているかどうかを確認できます。

そのため、Nvidiaグラフィックカードのドライバが正しくインストールされているかどうかを確認する必要があります。これは、[システム]-> [管理]-> [追加ドライバ]を使用して実行できます。


vlcの場合、[ツール]-> [設定]-> [ビデオ]-> [加速ビデオ出力(オーバーレイ)]が選択されていますが、mplayerで実行した場合と同じように動作するため、機能していないと推測しています。
719016 2011年

0

HD映画を再生するかどうかを確認するには、Apple / iTunesの映画の予告編Webサイトから予告編をダウンロードします。VLCで、[ツール]-> [設定]-> [ビデオ]-> [加速ビデオ出力(オーバーレイ)]に移動して無効にします。システムモニターを開き、[プロセス]タブに移動して、リストで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.