基于Intel ARC A770显卡的FFmpeg QSV(OneVPL路径)HEVC与AV1硬件编码命令构建求助
基于Intel ARC A770显卡的FFmpeg QSV(OneVPL路径)HEVC与AV1硬件编码命令构建求助
大家好,我刚入手了Sparkle Intel ARC A770显卡,目标是在Linux环境下测试它的AV1和HEVC硬件编码能力。作为FFmpeg新手,我已经自己做了些功课,但还是需要大家帮忙构建基于OneVPL API的QSV编码命令——毕竟我编译FFmpeg时特意启用了--enable-libvpl参数,想用上最新的Intel工具链。先跟大家说说我的环境和目前的进展:
我的环境配置
- 显卡:Sparkle ARC A770
- Linux内核:6.6.10-1-default
- CPU:Intel Xeon Silver 4214(12核24线程,带超线程)
- FFmpeg编译细节:最近几周从源码编译,启用了
--enable-libvpl(OneVPL API),同时禁用了NVENC/NVDEC等非Intel加速选项,还加了libzimg、libplacebo等常用滤镜库 - VA-API驱动:Intel iHD driver 23.4.3,VA-API版本1.20(vainfo检测支持HEVC Main/Main10、AV1 Profile0等编码profile)
FFmpeg支持的硬件加速与编码器
# 可用硬件加速方式 ffmpeg -hwaccels # 输出:vaapi、qsv、drm、opencl、vulkan # AV1相关编码器 ffmpeg -hide_banner -encoders|grep av1 # 输出:librav1e、libsvtav1、av1_qsv、av1_vaapi # HEVC相关编码器 ffmpeg -hide_banner -encoders|grep hevc # 输出:libx265、hevc_qsv、hevc_vaapi
目前的测试进展
- 软件编码(libx265):完全正常,这条命令能顺利完成转码:
ffmpeg -y -v verbose -i "Input.mkv" -max_muxing_queue_size 1024 -filter_complex "[0:0]scale=1920:-2:flags=lanczos,setsar=1:1,zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=reinhard:desat=2,zscale=t=bt709:m=bt709:r=tv,format=yuv420p[v]" -map "[v]" -c:v libx265 -crf:v 18 -preset:v slow Output.mkv
- HEVC QSV硬件编码:能运行,但我不确定是不是走的OneVPL最新路径——而且感觉需要额外的硬件滤镜来完成内存拷贝,总觉得有点冗余。这条是我成功跑通的命令:
ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -v verbose -i Input.mkv -filter:v "scale=1920:-2,flags=lanczos,unsharp=5:5:.03:5:5:0.0" -c:v hevc_qsv -preset veryslow -extbrc 1 -look_ahead_depth 99 -b_strategy 1 -bf 7 -mbbrc 1 -rdo 1 -low_power 0 -adaptive_i 1 -adaptive_b 1 -async_depth 7 -b:v 25M -color_range tv -color_primaries:v bt709 -color_trc:v bt709 -colorspace:v bt709 Output.mkv
我需要的帮助
- 希望得到基于OneVPL API的HEVC QSV硬件编码最优命令,确保走最新的ARC显卡编码路径,尽量避免不必要的系统内存→GPU内存拷贝操作
- 希望得到基于OneVPL API的AV1 QSV硬件编码命令,目前还没成功测试AV1硬件编码,需要合适的参数配置(比如CRF模式、预设等级、画质优化相关参数)
- 如果能顺便解释下命令中关键参数的作用就更好了,方便我后续根据需求调整
备注:内容来源于stack exchange,提问作者videomouse




