收起左侧

AMD 890M核显开启硬件转码的思路

0
回复
73
查看
[ 复制链接 ]

1

主题

0

回帖

0

牛值

江湖小虾

之前看到了论坛中另一篇帖子介绍同配置的路子,因此产生了继续优化完善的想法;

https://club.fnnas.com/forum.php?mod=viewthread&tid=35522&highlight=

本篇尝试全程使用iflow自动化操作,严谨抄作业,并不能保证每一步的正确性,过程仅供参考!!!

大佬可尝试将这篇转为正式教程,最近市面上amd成品nas相比intel的多得多,希望官方也尽快在官方系统中修复。


正片开始

第一步

首先根据原帖说明,先实现在飞牛中能选择到的,这一步同样使用iflow自动修复;

通过提示让AI根据本机配置检查并更新gpu驱动,总结为第一篇文档

VAAPI 硬件加速配置指南

系统环境

项目 信息
系统 Debian 12 (bookworm)
内核 6.12.18-trim
CPU/GPU AMD Ryzen AI 9 HX PRO 370 with Radeon 890M
Mesa 初始版本 22.3.6

问题诊断

症状

vainfo
# 输出错误:
# amdgpu: unknown (family_id, chip_external_rev): (150, 20)
# vaInitialize failed with error code 2 (resource allocation failed)

原因分析

问题 说明
GPU 过新 Radeon 890M (gfx1150) 是 2024 年新品,旧版 Mesa 不支持
驱动版本过低 Mesa 22.3.6 不包含 gfx1150 支持
库路径冲突 /usr/trim/lib/mediasrv/ 存在旧版本库,优先级高于系统库

解决方案

步骤 1:升级 Mesa 驱动

从 Debian backports 安装新版 Mesa:

apt install -t bookworm-backports mesa-va-drivers mesa-vulkan-drivers -y

升级结果:

  • Mesa 版本:22.3.6 → 25.0.7
  • libdrm 版本:2.4.114 → 2.4.123

步骤 2:替换旧驱动文件

系统存在旧版本库路径 /usr/trim/lib/mediasrv/,需要替换:

# 替换 VAAPI 驱动
cp /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so \
   /usr/trim/lib/mediasrv/dri/radeonsi_drv_video.so

替换 libdrm_amdgpu 库

cp /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.123.0
/usr/trim/lib/mediasrv/libdrm_amdgpu.so.1.0.0

步骤 3:设置环境变量

export XDG_RUNTIME_DIR=/tmp/runtime-root
mkdir -p $XDG_RUNTIME_DIR

验证结果

vainfo

成功输出:

vainfo: VA-API version: 1.22 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 25.0.7-2~bpo12+1 
        for AMD Radeon Graphics (radeonsi, gfx1150, ACO, DRM 3.61, 6.12.18-trim)

支持的编解码格式

格式 解码 (VLD) 编码 (EncSlice)
H.264 (AVC)
HEVC (H.265)
HEVC 10-bit
VP9 -
VP9 10-bit -
AV1
JPEG -
视频后处理 (VideoProc) -

FFmpeg 使用示例

环境准备

export XDG_RUNTIME_DIR=/tmp/runtime-root
export LIBVA_DRIVER_NAME=radeonsi
export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri

H.264 硬件编码

ffmpeg -i input.mp4 -c:v h264_vaapi -bf 0 output_h264.mp4

HEVC 硬件编码

ffmpeg -i input.mp4 -c:v hevc_vaapi output_hevc.mp4

HEVC 10-bit 编码

ffmpeg -i input.mp4 -c:v hevc_vaapi -profile:v main10 output_hevc10.mp4

AV1 硬件编码

ffmpeg -i input.mp4 -c:v av1_vaapi output_av1.mkv

硬件解码 + 硬件编码

ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \
       -i input.mp4 -c:v hevc_vaapi output.mp4

常见问题

Q: vainfo 报错 "can't connect to X server"

A: 这是警告信息,可忽略。在无头环境中 VAAPI 仍可正常工作。

Q: 编码时报错 "failed to encode"

A: 确保已设置环境变量:

export XDG_RUNTIME_DIR=/tmp/runtime-root

Q: 性能不如预期

A: 检查电源管理模式,确保 GPU 处于高性能状态:

cat /sys/class/drm/card0/device/power_dpm_force_performance_level
# 如需高性能模式:
echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level

文件变更记录

文件路径 操作
/usr/trim/lib/mediasrv/dri/radeonsi_drv_video.so 替换为新版本
/usr/trim/lib/mediasrv/libdrm_amdgpu.so.1.0.0 替换为新版本

参考信息

  • Mesa 版本:25.0.7
  • VA-API 版本:1.22
  • GPU 架构:gfx1150 (RDNA 3.5)
  • 驱动:radeonsi (ACO 编译器)

第二步

通过上述指令修复后,如原帖所说,可以在飞牛影视中设置开启硬件加速,但实际播放时选择硬件编码会出现开启硬件加速失败的提示,因此继续通过AI分析系统日志尝试多种修复方案;

image.png
最后尝试一种“彻底放手”的方法后,AI最终定位到了问题;通过飞牛的日志工具导出系统日志,并且将iflow定位到日志目录下,让自行分析所有日志文件;

查询当前目录gpu转码失败的相关日志并分析

image.png

最终总结出如下文档

视频转码失败问题 - 修复总结

一、问题现象

时间:2026年2月26日 12:16 以后

错误信息


[error] av_hwdevice_ctx_create_derived error, device type vulkan, device /dev/dri/renderD128
[error] [ffmpeg] errno -19, msg 'No such device'
[error] init_video_stream_map error, errcode 68157450

错误来源services/mediasrv.log


二、根本原因

项目 说明
GPU AMD Radeon 890M (gfx1150) - 较新款显卡
问题 mediasrv 自带的 Vulkan 驱动版本过旧
具体原因 /usr/trim/lib/mediasrv/libvulkan_radeon.so 不识别 gfx1150

错误根源


amdgpu: unknown (family_id, chip_external_rev): (150, 20)


三、诊断过程

3.1 系统环境

  • CPU: AMD Ryzen AI 9 HX PRO 370
  • GPU: Radeon 890M (gfx1150, family_id=150, chip_rev=20)
  • 内核驱动: amdgpu 3.61.0 ✅ 正常加载
  • 内核版本: 6.12.18-trim

3.2 验证测试

测试环境 结果
系统 Vulkan ✅ 正常识别 AMD Radeon Graphics (RADV GFX1150)
mediasrv Vulkan 库 ❌ 报错 unknown (family_id, chip_external_rev): (150, 20)

3.3 文件对比

文件 大小 MD5 状态
系统 /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so 13,851,832 字节 0ed6b7eb77fa8d5b27a5999ad036c68a ✅ 支持 gfx1150
mediasrv /usr/trim/lib/mediasrv/libvulkan_radeon.so 11,717,776 字节 **099c15455929ceff4ae05df2ad2d ❌ 不支持 gfx1150

四、修复方案

4.1 修复步骤

# 1. 备份原文件
cp /usr/trim/lib/mediasrv/libvulkan_radeon.so /usr/trim/lib/mediasrv/libvulkan_radeon.so.bak

2. 替换为系统驱动

cp /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so /usr/trim/lib/mediasrv/libvulkan_radeon.so

3. 重启服务

systemctl restart mediasrv

4.2 验证结果

修复后 Vulkan 正确识别 GPU:

deviceName = AMD Radeon Graphics (RADV GFX1150)
driverID   = DRIVER_ID_MESA_RADV
driverInfo = Mesa 25.0.7-2~bpo12+1

五、回滚方法

如需回滚修复:

cp /usr/trim/lib/mediasrv/libvulkan_radeon.so.bak /usr/trim/lib/mediasrv/libvulkan_radeon.so
systemctl restart mediasrv

六、附加信息

6.1 相关日志文件

  • services/mediasrv.log - mediasrv 主日志,包含转码错误
  • system/vainfo.log - VA-API 支持信息
  • system/syslog - 系统日志,包含 amdgpu 驱动信息

6.2 系统状态

  • VA-API: ✅ 正常工作
  • Vulkan (系统): ✅ 正常工作
  • Vulkan (mediasrv): ✅ 修复后正常

修复日期:2026-02-26


上述执行完成后,重新尝试影视播放硬解成功!

效果1.png

效果2.png

收藏
送赞 2
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则