719*_*016 8 video-player nvidia
我有一台带有独立Nvidia 显卡的笔记本电脑。
我怎么知道我的视频播放器是 mplayer、vlc 还是 totem 是否在使用 nvidia VDPAU?例如,使用下面的脚本运行 mplayer2,我收到此消息:
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但我确实在系统中有这样的文件:
-rw-r--r-- 1 root root 1800952 2011-11-23 07:39 /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10
Run Code Online (Sandbox Code Playgroud)
查找文件编解码器的脚本:
#!/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
Run Code Online (Sandbox Code Playgroud)
编辑:显然它找不到库,即使通过 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
Run Code Online (Sandbox Code Playgroud)
EDIT2:我再次尝试使用 Ubuntu 12.04,但仍然无法正常工作。
dou*_*oug 12
解决您的问题以及有关使用 mplayer 或 vlc 启用 gpu 解码的一些问题。
播放器
查看是否通过 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.
Run Code Online (Sandbox Code Playgroud)
如果您确实通过 mplayer 支持/获取 vdpau,您可以设置vc=
一行~/.mplayer/config
以自动检查并使用适当的 ffvdpau* 解码器来获取支持的编解码器
另一种检查方法是使用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
Run Code Online (Sandbox Code Playgroud)
Vlc
如果您有 nvidia 硬件并且不能或没有 vdpau 支持,那么请不要打扰使用 vaapi 的 vlc,而且启用起来更麻烦。此外,vaapi 在 nvidia 上的性能在很大程度上取决于硬件。我在这里启用但不使用,ffmpeg 多线程在我的 vlc 硬件上更好。
这只是在 vlc 中获取 vaapi 和启用的基础知识。有关具体信息,您需要搜索 & 或询问如何。
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
Run Code Online (Sandbox Code Playgroud)
要通过 vaapi 和 ffmpeg 在 vlc 中启用 GPU 解码,有两种方法
从终端,无需在首选项中设置
vlc --ffmpeg-hw /path/to/supported/video/name
Run Code Online (Sandbox Code Playgroud)
要在 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.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32502 次 |
最近记录: |