Изучение кодировщика av1_vulka... Заметка
DEV Community на русском

Изучение кодировщика av1_vulkan в FFmpeg: действительно ли ваша видеокарта его поддерживает?

FFmpeg 8.x вводит av1_vulkan, первый кросс-вендерный GPU-кодек AV1, использующий расширения Vulkan для видео кодирования. Это направлено на унификацию кодирования AV1 на оборудовании NVIDIA, AMD и Intel через единый кодовый путь. Однако поддержка драйверов этих расширений не последовательна, требуя от пользователей сначала проверить возможности своей системы. Для этого необходимо убедиться, что у них установлен FFmpeg 8.x с включенным Vulkan и инструментом vulkaninfo.Критическим шагом является проверка того, что драйвер раскрывает необходимые расширения Vulkan для кодирования AV1. Успешное обнаружение означает, что оба VK_KHR_video_encode_av1 и VK_KHR_video_encode_queue перечислены инструментом vulkaninfo. Если эти расширения отсутствуют, основным решением является обновление драйвера GPU, поскольку это часто проблема на уровне драйвера, а не командной строки.Как только это будет подтверждено, рекомендуется провести синтетический тест кодирования с использованием lavfi's testsrc2, чтобы исключить проблемы, специфичные для файла. Если этот синтетический тест пройден, пользователи должны затем попытаться закодировать свой собственный контент, желательно сохраняя как декодирование, так и кодирование на GPU для максимальной эффективности. Для оценки производительности необходима оценка, сравнивающая av1_vulkan с SVT-AV1 (программным кодеком) на представительном контенте.Общий компромисс заключается в том, что аппаратное кодирование предлагает лучшую пропускную способность и энергоэффективность, в то время как программное кодирование обычно дает лучшее качество на бит. Решение о том, какой кодек использовать, зависит от конкретной рабочей нагрузки, при которой аппаратное ускорение предпочтительнее для прямого транскодирования, массового приема и предварительного просмотра, где пропускная способность является главным. Кросс-вендерная совместимость, предлагаемая Vulkan, упрощает управление конвейером и позволяет гибко масштабироваться на разных аппаратных средствах.Запуск av1_vulkan в контейнерах требует тщательной настройки, включая передачу устройств GPU и обеспечение совпадения версий драйверов между хостом и образом контейнера. Общие неудачи включают отсутствующие расширения кодирования AV1, которые решаются обновлением драйвера, или проблемы с обнаружением устройства Vulkan в контейнерах. Будущие разработки могут включать сторону декодирования кодирования видео Vulkan, еще больше улучшая процессорные конвейеры, работающие на GPU.