Медиа.маги Документация

Last updated

vf/hwupload

vf/hwupload на холсте.

1. Сводка

Переносит кадры видео из системной памяти в память GPU или ускорителя. Требуется перед любым аппаратно-ускоренным кодером, чтобы кодер мог читать кадры прямо из памяти устройства без копирования.

2. Когда использовать

  • Питаете аппаратный кодер H.264, такой как qsv264 или ni264, на линейной скорости.
  • Собираете лёгкую для ЦПУ лестницу ABR, где кодирование идёт на GPU, а ЦПУ зарезервирован под ввод-вывод и упаковку.
  • Выгружаете длинное перекодирование с ЦПУ, чтобы параллельные задания продолжали идти на том же хосте.
  • Переключаете существующий ЦПУ-конвейер на аппаратный кодер без перестройки фильтров выше по потоку.

3. Входы

  • Videofiltergraph.VideoTransform. Видеопоток в системной памяти. Обязателен.

    Совместимые узлы выше по потоку:

    • vf/crop — обрезает кадр до интересующей области.
    • vf/dar — задаёт метаданные соотношения сторон при отображении.
    • vf/deinterlace — убирает артефакты чересстрочности.
    • vf/fieldorder — меняет или задаёт флаг порядка полей.
    • vf/format — преобразует пиксельный формат или цветовые свойства.
    • vf/fps — меняет частоту кадров на выходе.
    • vf/letterbox — дополняет кадр до целевого растра.
    • vf/overlay — накладывает графику на видео.
    • vf/scale — масштабирует видео до заданных размеров.
    • map/video — выбирает видеопоток для выхода.

4. Выходы

  • Videofiltergraph.VideoTransform. Видео в памяти устройства, готовое для аппаратного кодера.

    Совместимые узлы ниже по потоку:

    • vf/crop — обрезает кадр до интересующей области.
    • vf/dar — задаёт метаданные соотношения сторон при отображении.
    • vf/deinterlace — убирает артефакты чересстрочности.
    • vf/fieldorder — меняет или задаёт флаг порядка полей.
    • vf/format — преобразует пиксельный формат или цветовые свойства.
    • vf/fps — меняет частоту кадров на выходе.
    • vf/letterbox — дополняет кадр до целевого растра.
    • vf/overlay — накладывает графику на видео.
    • vf/scale — масштабирует видео до заданных размеров.
    • avcintra — кодирует видео профилями AVC-Intra.
    • dv — пишет выход как файл/контейнер DV.
    • ni264 — использует аппаратно-ускоренное кодирование H.264.
    • prores — кодирует видео в профили Apple ProRes.
    • qsv264 — кодирует H.264 через Intel Quick Sync Video.
    • x264 — программно кодирует видео H.264/AVC.
    • x265 — программно кодирует видео H.265/HEVC.
    • xdcam — кодирует XDCAM HD MXF для вещательной доставки.

5. Параметры

Форма «Настройки» узла vf/hwupload.

Форма «Настройки» — один столбец с двумя полями. Описаны в порядке следования в форме.

  • Device (string, по умолчанию qsv)

    Цель аппаратного ускорения.

    • Что задаёт. Ускоритель, который получает кадры. qsv нацеливается на Intel Quick Sync (в паре с qsv264); другие ускорители отображаются через свои хэндлы в паре с соответствующим кодером (например, NetInt для ni264).
    • Когда менять. Сопоставляйте с ускорителем, который использует кодер ниже по потоку. Несовпадение (hwupload в QSV, за которым кодер NVIDIA) падает с ошибкой во время выполнения.
  • Extra Hardware Frames (number, без значения по умолчанию)

    Дополнительные кадры, буферизуемые на устройстве.

    • Что задаёт. Число дополнительных декодированных кадров, удерживаемых в памяти устройства сверх естественной глубины конвейера кодера. Бо́льшие значения дают кодеру больше упреждения и сглаживают короткие заминки в цепочке фильтров выше по потоку.
    • Когда менять. Оставляйте пустым для типичных процессов. Повышайте до 416, когда кодер сообщает о голодании на быстрых ускорителях (QSV на высоком разрешении / лестницах из нескольких копий) или когда граф фильтров выше по потоку ЦПУ-связан и кодер ждёт кадры.

Соответствие JSON-ключей и названий полей

JSON-ключ Название поля
device Device
extra_hw_frames Extra Hardware Frames

8. Антипаттерны

  • Загрузка перед ЦПУ-кодером. Проталкивание кадров на GPU только ради того, чтобы снова скачать их для кодирования x264 или x265, тратит копию в память устройства впустую. Берите vf/hwupload только когда кодер ниже по потоку аппаратно-ускорен.

  • ЦПУ-связанные конверсии после vf/hwupload. Когда кадры уже в памяти устройства, шаг vf/format или vf/scale обычно требует копии обратно в системную память. Двигайте работу с пиксельным форматом и масштабированием выше vf/hwupload, чтобы устройство видело кадры уже в целевом формате.

  • Смешение ускорителей в одной цепочке. Загрузка QSV, за которой кодер NVENC, падает с ошибкой. Выбирайте один ускоритель на ветвь; используйте другую ветвь, когда нужен второй ускоритель.

Медиа.маги Документация