主要内容
本章主要内容就是讲解在Linux平台上目前主流的开源播放器,以及播放器如何使用硬件加速操作。
播放器
播放器实质是集成解码,编码,显示以及后处理(可能有)功能于一体的工具,如果是带UI的播放器,那么就需要将播放器进行再次封装,方便用户使用。常见的播放器有ffplay,mpv,mplayer,vlc等。大多数播放器都支持硬件加速功能,什么是硬件加速,请参考: 硬件加速的概念,以下会对部分播放器如何使用硬件加速命令进行举例说明。
环境安装和设置
首先需要安装依赖库文件
//安装图形显示库 sudo apt install libdrm-dev xorg libx11-dev libwayland-dev libwayland-dev libxcb1-dev libx11-xcb-dev libudev-dev libglx-dev //安装VAAPI和VDPAU sudo apt install libva-dev libvdpau-dev //安装VAAPI和VDPAU对应工具 sudo apt install vainfo vdpauinfo查看库文件
mpv播放器
mpv播放器基本已经支持VAAPI和VDPAU硬件加速标准,在Linux系统中使用以下命令即可使用硬件加速播放片源。
环境安装
//安装工具 sudo apt install mpv查看支持的硬件加速标准
其中vaapi和vdpau可以直接使用硬件编解码和显示,其他选项只是作为显示输出使用。
使用硬件加速播放命令
// mpv+vaapi mpv --vo vaapi --hwdec=vaapi --no-audio videoclips // mpv+vdpau mpv --vo vdpau --hwdec=vdpau --no-audio videoclipsmplayer播放器
mplayer播放器基本支持VDPAU硬件加速标准,在Linux系统中使用以下命令即可使用硬件加速播放片源。
环境安装
//安装工具 sudo apt install mplayer查看支持的硬件加速标准
mplayer -vc help |grep vdpau使用硬件加速播放命令
// mlayer+vdpau mplayer -vo vdpau -ao null -vc ffxxx_vdpau videoclips(xxx代表编码类型如hevc,h264 vc1等)gstreamer播放器
gstremaer播放器基本已经支持VAAPI插件,在Linux系统中使用以下命令即可使用硬件加速播放片源。
环境安装
//安装gstreamer基本工具 sudo apt install gstreamer-tools gstreamer1.0-libav gstreamer0.10-nice gstreamer1.0-vaapi gstreamer0.10-alsa gstreamer1.0-x //安装gstreamer插件库 sudo apt install gstreamer1.0-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly环境变量设置
export GST_VAAPI_ALL_DRIVERS=XXX(XXX为驱动前缀,如iHD,i965)查看gstreamer的信息
//查看gstreamer版本 gst-inspect-1.0 --version 或者 gst-launch-1.0 --gst-version //查看vaapi插件 gst-inspect-1.0 vaapi使用硬件加速播放命令
MP4播放:gst-launch-1.0 filesrc location=videopath ! qtdemux ! vaapidecodebin ! vaapisink MKV播放:gst-launch-1.0 filesrc location=videopath ! matroskademux ! vaapidecodebin ! vaapisink AVI播放:gst-launch-1.0 filesrc location=videopath ! avidemux ! vaapidecodebin ! vaapisink //使用playbin自动搜寻demux,decoder和sink //使用top命令查看CPU占用率,确定软解还是硬解 视频播放:gst-launch-1.0 playbin uri=file:videopath //打开调试信息 视频播放:gst-launch-1.0 playbin uri=file:videopath --gst-debug-level=7 视频播放:gst-launch-1.0 playbin uri=file:videopath --gst-debug=vaapisink:7,vaapi:5查看管线图
//安装工具 sudo apt-get install graphviz //指定dot图位置 export GST_DEBUG_DUMP_DOT_DIR=/tmp/ //播放视频 gst-launch-1.0 playbin uri=file:videopath //将dot图转化为png图 dot -Tpng -o test1.png /tmp/xxx.dot移除插件黑名单
//当vaapi加载错误时会将其加入黑名单,使用命令查看黑名单 gst-inspect-1.0 -b //删除gstreamer的cache文件 //arch 代表系统架构 x86_64,arm等 rm ~/.cache/gstreamer-1.0/registry.arch.binffmpeg播放器
ffmpeg基本已经支持VAAPI和VDPAU,但是ffplayVAAPI和VDPAU,不一定支持在Linux系统中使用以下命令即可使用硬件加速,但是由于ffplay无法使用VAAPI和VDPAU进行解码播放,所以只能使用ffmpeg进行硬件解码截图操作。
环境安装
//安装工具 sudo apt install ffmpeg查看支持的硬件加速标准
ffmpeg -hwaccels
查看支持的硬件解码器
使用硬件加速标准截图
//使用vaapi硬件标准对videopath的video截取开始位置到之后2秒的图像,每秒25帧,输出名称为output_xxxx.png //xxxx为0001,0002,以此类推,总计图像为50帧 ffmpeg -r 25 -ss 0 -t 2 -hwaccel vaapi -i videopath output_%4d.png //也可以截取不同格式的图片 ffmpeg -r 25 -ss 0 -t 2 -hwaccel vaapi -i videopath -pix_fmt yuv444p/yuv422p/yuv420p/yuyv422 output_%4d.yuv //也可以截取一定数量的图片 ffmpeg -ss 0 -t 2 -hwaccel vaapi -i videopath -pix_fmt yuv444p/yuv422p/yuv420p/yuyv422 -vframes 10 output_%4d.yuv //显示yuyv格式图片 ffplay -i test.yuv -pix_fmt yuv444p -s 640x480