探测 FFmpeg 的 av1_vulkan 编码器:您的 GPU 是否真正支持它?
FFmpeg 8.x 引入了 av1_vulkan,这是首个跨厂商 GPU AV1 编码器,利用 Vulkan 的视频编码扩展。其目标是通过单一代码路径统一 NVIDIA、AMD 和 Intel 硬件上的 AV1 编码。然而,这些扩展的驱动支持尚不一致,用户需首先验证其系统能力。为此,必须确保已安装支持 Vulkan 的 FFmpeg 8.x 版本,并具备 vulkaninfo 工具。关键步骤是检查驱动是否暴露了 AV1 编码所需的关键 Vulkan 扩展。成功检测意味着 vulkaninfo 会列出 VK_KHR_video_encode_av1 和 VK_KHR_video_encode_queue 这两个扩展。若缺失这些扩展,更新 GPU 驱动是首要解决方案,因为问题通常源于驱动层面而非命令行配置。验证通过后,建议使用 lavfi 的 testsrc2 进行合成编码测试,以排除文件特定问题。若该合成测试通过,用户应尝试对其自有内容进行编码,理想情况下将解码与编码均置于 GPU 上以实现最高效率。为评估性能,需在代表性内容上对 av1_vulkan 与 SVT-AV1(软件编码器)进行基准对比。总体权衡在于:硬件编码提供更高的吞吐量和能效,而软件编码通常具有更好的每比特质量。选择哪种编码器取决于具体工作负载,其中硬件加速在实时转码、批量摄入和预览等对吞吐量要求极高的场景中更为有利。Vulkan 提供的跨厂商兼容性简化了流水线管理,并支持在不同硬件间灵活扩展。在容器中运行 av1_vulkan 需要谨慎配置,包括透传 GPU 设备并确保宿主机与容器镜像间驱动版本匹配。常见故障包括缺失 AV1 编码扩展(可通过驱动更新解决)或容器中 Vulkan 设备发现失败。未来开发可能涵盖 Vulkan 视频解码侧,进一步增强驻留 GPU 的处理流水线。