vf/hwupload

1. Сводка
Переносит кадры видео из системной памяти в память GPU или ускорителя. Требуется перед любым аппаратно-ускоренным кодером, чтобы кодер мог читать кадры прямо из памяти устройства без копирования.
2. Когда использовать
- Питаете аппаратный кодер H.264, такой как qsv264 или ni264, на линейной скорости.
- Собираете лёгкую для ЦПУ лестницу ABR, где кодирование идёт на GPU, а ЦПУ зарезервирован под ввод-вывод и упаковку.
- Выгружаете длинное перекодирование с ЦПУ, чтобы параллельные задания продолжали идти на том же хосте.
- Переключаете существующий ЦПУ-конвейер на аппаратный кодер без перестройки фильтров выше по потоку.
3. Входы
Video—filtergraph.VideoTransform. Видеопоток в системной памяти. Обязателен.Совместимые узлы выше по потоку:
- vf/crop — обрезает кадр до интересующей области.
- vf/dar — задаёт метаданные соотношения сторон при отображении.
- vf/deinterlace — убирает артефакты чересстрочности.
- vf/fieldorder — меняет или задаёт флаг порядка полей.
- vf/format — преобразует пиксельный формат или цветовые свойства.
- vf/fps — меняет частоту кадров на выходе.
- vf/letterbox — дополняет кадр до целевого растра.
- vf/overlay — накладывает графику на видео.
- vf/scale — масштабирует видео до заданных размеров.
- map/video — выбирает видеопоток для выхода.
4. Выходы
Video—filtergraph.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. Параметры

Форма «Настройки» — один столбец с двумя полями. Описаны в порядке следования в форме.
Device (
string, по умолчаниюqsv)Цель аппаратного ускорения.
- Что задаёт. Ускоритель, который получает кадры.
qsvнацеливается на Intel Quick Sync (в паре с qsv264); другие ускорители отображаются через свои хэндлы в паре с соответствующим кодером (например, NetInt для ni264). - Когда менять. Сопоставляйте с ускорителем, который использует кодер ниже по потоку. Несовпадение (hwupload в QSV, за которым кодер NVIDIA) падает с ошибкой во время выполнения.
- Что задаёт. Ускоритель, который получает кадры.
Extra Hardware Frames (
number, без значения по умолчанию)Дополнительные кадры, буферизуемые на устройстве.
- Что задаёт. Число дополнительных декодированных кадров, удерживаемых в памяти устройства сверх естественной глубины конвейера кодера. Бо́льшие значения дают кодеру больше упреждения и сглаживают короткие заминки в цепочке фильтров выше по потоку.
- Когда менять. Оставляйте пустым для типичных процессов. Повышайте до
4–16, когда кодер сообщает о голодании на быстрых ускорителях (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, падает с ошибкой. Выбирайте один ускоритель на ветвь; используйте другую ветвь, когда нужен второй ускоритель.