debian下使用Radeon 780M对ffmpeg进行硬件加速编码

前言

最近Hetzner活动免除了AX42杜甫的安装费,作为一名mjj手痒难耐,py唯一佬获得AX4224小时使用权。

鉴于该杜甫有一个不错的780M型号的GPU,决定测试一下ffmpeg编码视频能力

环境说明

服务器:AX42

系统平台:Debian sid(必须)

ffmpeg:lastest release

升级系统

Hetzner官方只提供debian12官方镜像,所以在安装了debian12之后,需要修改apt源到sid

(为什么要升级到不稳定分支?debian12的libva版本不支持ffmpeg调用vaapi中的libass模块,提示版本过低)

  1. 备份当前源列表: cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 编辑 sources.list 文件: nano /etc/apt/sources.list
  3. 修改源列表并更新系统 : apt update && apt full-upgrade -y
  4. 重启系统: reboot

配置GPU

1.安装amd的3D驱动

apt update -y && apt install -y firmware-amd-graphics

2. 安装开源驱动mesa-va-drivers和vainfo

apt update -y && apt install mesa-va-drivers vainfo -y

3.重启主机

reboot

4.验证硬件

ls -l /dev/dri

检查有无输出,特别是/dev/dri/renderD128

vainfo

检查核显硬件是否正常运行

安装ffmpeg

apt直接安装的ffmpeg可能缺斤少两,这里我们直接使用编译好的二进制文件,Ffmpeg-Build

1.下载ffmpeg release

wget https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n6.1-latest-linux64-gpl-6.1.tar.xz

这里我们选择ffmpeg 6.1(防止版本过低或者过高的问题XD)

2. 解压

tar Jxvf ffmpeg-n6.1-latest-linux64-gpl-6.1.tar.xz

3.添加到系统默认指令

nano ~/.bashrc

到最下面 添加ffmpeg路径后保存

export PATH="/root/ffmpeg-n6.1-latest-linux64-gpl-6.1/bin:$PATH"

保存文件并运行以下命令使更改生效:

source ~/.bashrc

使用ffmpeg指令验证是否成功

ffmpeg -version

安装所需字体

由于系统中并不包含中文字体,所以需要自己下载所需字体后刷新,下面给出一些选择

apt update
apt install fontconfig
apt install fonts-dejavu-core

我喜欢用鸿蒙字体(HarmonyOS Sans),你如果有自己喜欢的字体,可以将字体文件夹放入/usr/local/share/fonts下,然后刷新字体库

fc-cache -fv

验证字体是否成功安装

fc-list | grep "Harmony"

如上输出即为正确安装

使用ffmpeg压制视频

请注意 调用Radeon 780M进行硬件加速需要使用VAAPI,而不是AMF

注意是 VA-API而不是AMD-AMF!!!

注意是 VA-API而不是AMD-AMF!!!

注意是 VA-API而不是AMD-AMF!!!

这里使用test文件夹为例示,压制视频和字幕文件为1.flv和1.ass

ffmpeg -vaapi_device /dev/dri/renderD128 -i 1.flv -vf 'subtitles=1.ass,format=nv12,hwupload' -c:v av1_vaapi -b:v 15M output.mp4

注意:format=nv12,hwupload参数是必须

如果你要使用DanmakuRender进行自动化弹幕文件压制,请修改global.yml中相关内容为:

    # 硬件解码参数,默认由FFmpeg自动判断,如果出现问题可以设为空
    hwaccel_args: [-vaapi_device, /dev/dri/renderD128]
    # 视频编码器,NVIDIA设置为h264_nvenc,AMD设置为h264_amf,CPU设置为libx264
    vencoder: h264_vaapi
    advanced_render_args:
      # 直接定义video filter,这里的{DANMAKU}代表弹幕文件路径
      # 注意设置filter_complex之后将会禁用fps等其他有关filter的选项
      filter_complex: subtitles=filename='{DANMAKU}',format=nv12,hwupload

速度

为了保证输出视频的画质质量,我们指定了输出视频的码率为15M,如果你知道更多支持的相关参数,可以私聊我共同学习

没有测试过windows下使用AMF压制的速度,如果有本地使用Radeon 780M的大佬可以私聊我交流讨论一下

H264速度为6.64x

libx264的速度是3.64x,cpu占用满,根据速度区别,鉴定为正确使用硬件加速

HEVC速度为10x,速度最快,(太快了导致没有截图)

相比我现在正在使用12500,调用UHD770硬件加速(qsv),使用同视频+弹幕,且指定输出码率同样为15M,

h264_qsv的速度是5.3x

hevc_qsv的速度是2.16x

2024.07.10 Hostloc大佬anshi提供的netint T408硬件加速,h264_vaapi编码速度为4.3x

叠甲

感谢唯一佬提供的AX42独立服务器,么么哒

搜遍全网如何使用Radeon 核显对ffmpeg进行硬件加速编码,都没有教程

我一直以为应该使用amf来调用核显,怎么试都不行,直到看到Laizer大佬ax42部署jellyfin文章后才知道要用VAAPI,非常感谢大佬的思路

部分指令参考来源:ffmpeg文档

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇