mplayer使能支持vaapi

背景

环境:麒麟服务器操作系统v10

mplayer:1.4.0

实际在amd、intel、景嘉微等显卡上使用mplayer播放视频发现无法使用vaapi的硬件加速。

实现方案

参考网址:https://wiki.archlinux.org/title/Hardware_video_acceleration

参考上面的图的图,可以看到可以使用ffmpeg、mpv、vlc三个方案是可行的方案。
实际麒麟系统v10对应的fedora的版本跟29版本比较接近。

实现思路1

1. ffmpeg

ffmpeg:默认麒麟操作系统中是支持vaapi的硬件解码的,且最完善。

2. mpv

mpv:麒麟仓库中默认没有mpv的包可以下载,查看上游实际mpv在fedora的37版本中引入了mpv的仓库啊,参考代码地址如下:

c 复制代码
https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/37/Everything/source/tree/Packages/m/mpv-0.34.1-11.fc37.src.rpm

实际上面的版本在麒麟服务器v10版本上会有相关的包依赖以及版本问题,尝试查找其他版本进行(通过查找相关信息,对应的fedora的29版本对应的大概是mpv的0.29.x版本):
R系参考地址

1.参考地址1: mpv的srpm参考地址,这里面实际最低的版本是0.27/0.32和0.34,其中实际0.27/0.32版本下载不了。

  1. 参考地址2:mpv openeuler地址,其中openeuler的地址最低支持0.32的版本。

U系参考地址ubuntu的mpv版本地址,其中ubuntu18.04和ubuntu20.04分别对应版本0.27.x和0.32.x版本。

没有找到现成的.0.29的r系包,可以参考R系的0.32和U系的包自己编写对应的mpv.spec文件来实现完整的适配麒麟服务器的功能,该功能待进行迁移实现。

3. vlc

vlc:麒麟仓库中默认没有vlc的包可以下载,查看上游实际vlc在fedora的40版本中才引入了vlc的仓库,参考代码地址如下:

c 复制代码
https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/40/Everything/source/tree/Packages/v/vlc-3.0.20-12.fc40.src.rpm

总结:ffmpeg是现成的可用的方案,mpv和vlc需要做相关的适配迁移工作,待后续有时间可以进行。

实现思路2

1.通过mplayer强制支持vaapi支持

实际找到的版本都是v1.1??的版本我们系统用的是v1.4版本。

gitee中的mplayer-vaapi版本参考地址如下:

https://gitee.com/mirrors_gbeauchesne/mplayer-vaapi

https://gitee.com/mirrors_OpenMandrivaAssociation/mplayer-vaapi

github职工mplayer-vaapi版本参考地址如下:

https://github.com/OpenMandrivaAssociation/mplayer-vaapi

https://github.com/OpenMandrivaAssociation/mplayer-vaapi

实际尝试过上面的版本进行由于版本是基于ffmpeg3.x的,而我们实际用的是4.x的未成功,暂时也没有去调整对应的api接口。

2. 通过vdpua转vaapi进行处理

libvdpau-va-gl 通过vdpau转成vaapi使用,可以下载这个包进行测试,会有性能开销?

参考如下地址可以在麒麟服务器v10系统上重新编译即可使用。

c 复制代码
https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/29/Everything/source/tree/Packages/l/libvdpau-va-gl-0.4.2-9.fc29.src.rpm

$ VDPAU_DRIVER=va_gl mplayer -vo vdpau -vc ffh264vdpau,ffmpeg12vdpau xxx.mp4

实际测试的效果是mplayer的cpu占用还是比较低的5%以内,对应的播放文件是4k的H264压缩格式的视频文件,实际播放选择的是ffh264vdpau。

ffh264vdpau:H.264/AVC​ (如MP4、MKV中的高清视频)

ffmpeg12vdpau :MPEG-1/MPEG-2​ (如VCD、DVD、部分早期标清视频)

参考链接:

链接1:http://www.webupd8.org/2012/11/install-mplayer-with-va-api-hardware.html

链接2:http://www.webupd8.org/2012/11/install-mplayer-with-va-api-hardware.html

链接3:https://wiki.archlinux.org/title/Hardware_video_acceleration

备注:
vainfo(在包libva-utils中含对应的命令)
vdpauinfo(在包vdpauinfo中包对应的命令)

相关推荐
A.A呐9 小时前
【Linux第六章】进程状态和优先级
linux
iambooo9 小时前
Shell在日志分析与故障排查中的实战应用
linux·服务器·网络
一路往蓝-Anbo10 小时前
第 9 章:Linux 设备树 (DTS) ——屏蔽与独占外设
linux·运维·服务器·人工智能·stm32·嵌入式硬件
钛态10 小时前
Flutter for OpenHarmony:dio_cookie_manager 让 Dio 发挥会话管理能力,像浏览器一样自动处理 Cookie 深度解析与鸿蒙适配指南
android·linux·运维·flutter·ui·华为·harmonyos
王码码203510 小时前
Flutter for OpenHarmony:Flutter 三方库 bluez 玩转 Linux 风格的蓝牙操作(蓝牙底层互操作)
linux·运维·服务器·前端·flutter·云原生·harmonyos
A.A呐10 小时前
【Linux第七章】进程切换和命令行参数
linux
抓饼先生10 小时前
iceoryx编译和验证
linux·c++·零拷贝·iceoryx
栈低来信11 小时前
SLUB分配器
linux
吕司11 小时前
Linux信号产生
linux·运维·服务器
A.A呐12 小时前
【Linux第九章】程序地址空间
linux