FPGA-платы / SoM / Индивидуальный дизайн / Интеграция IP
info@profpga.net +86 18621324348
Главная/Блог/Прикладная практика/Как оценить IP видеокодеков: компромиссы по полосе, задержке и качеству между аппаратным и программным кодированием H.264/H.265
Прикладная практика

Как оценить IP видеокодеков: компромиссы по полосе, задержке и качеству между аппаратным и программным кодированием H.264/H.265

2026-10-29 Время чтения: ~ 12 мин. Команда разработки Дуюань Электроникс

Любой видеопроект упирается в выбор кодека: четырёхканальный ститчинг 1080p нуждается в стриминге, массив камер — в обратной передаче, машинное зрение — в хранении. Аппаратный IP кодека или soft-ядро? Какой битрейт держит картинку чёткой? Удержится ли задержка в пределах одного кадра? В этой статье мы переводим компромиссы по полосе, задержке и ресурсам между аппаратным и программным кодированием в понятную систему расчётов для выбора.

Сначала различайте: аппаратный IP кодека, soft-ядро кодека и программное кодирование на CPU/GPU — это не одно и то же

Есть три маршрута видеокодека на FPGA, с разницей в стоимости ресурсов и задержке на порядок:

Маршрут Реализация Стоимость ресурсов Задержка Типичное применение
Аппаратный IP кодека Встроенный аппаратный кодек-движок в FPGA (Xilinx VCU / аппаратное ядро вендора) Почти не занимает логических ячеек Низкая (1–3 кадра) Многоканальное кодирование 1080p/4K в реальном времени и стриминг
Soft-ядро кодека IP кодека, написанный на RTL (использует LUT/BRAM/DSP) Высокая (один канал 1080p занимает 30 %+ логики) Средняя (3–8 кадров) Нет аппаратного кодека, нужен заказной алгоритм
Программное кодирование CPU/GPU ARM/PS-ядро выполняет программный кодер x264/x265 Использует ядра CPU, не занимает логику FPGA Высокая (10+ кадров) Нереальное время, офлайн-транскодирование, мало каналов

Ключевое суждение: если у вашего FPGA есть аппаратный кодек-движок (как Zynq UltraScale+ VCU), сначала используйте аппаратное кодирование; для чистых FPGA без аппаратного кодека (класс Kintex-7/Virtex-7) многоканальное кодирование в реальном времени — единственная причина рассматривать soft-ядро; одноканальное нереальное время — просто используйте программное кодирование на CPU.

Первый счёт: полоса (какой битрейт держит картинку чёткой)

Вывод кодека — это битовый поток, и битрейт напрямую определяет полосу хранения и передачи. Сначала посчитайте, сколько полосы нужно четырём каналам видео:

Типичный битрейт H.264 1080p@30fps:

Уровень качества Один канал Всего четыре канала 4K один канал
Низкое (уровень наблюдения) 2 Мбит/с 8 Мбит/с 8 Мбит/с
Среднее (инженерный уровень) 4–6 Мбит/с 16–24 Мбит/с 16–20 Мбит/с
Высокое (выставочный уровень) 8–12 Мбит/с 32–48 Мбит/с 30–40 Мбит/с

H.265 экономит примерно 40–50 % битрейта по сравнению с H.264: при том же качестве H.265 четырёхканальный 1080p среднего качества — около 10–12 Мбит/с, 4K один канал — около 10–12 Мбит/с.

Инженерный опыт: машинное зрение/промышленный контроль, H.264 4 Мбит/с достаточно, чтобы видеть детали чётко; дисплеи для выставок — H.265 8 Мбит/с и выше. Не начинайте сразу с 20 Мбит/с — полоса хранения и обратной передачи взорвётся.

Второй счёт: задержка (когда аппаратное кодирование действительно важно)

Реальное видео чувствительно к задержке: промышленные камеры нуждаются в замкнутом контуре, дистанционное управление — в следовании за рукой, низколатентный стриминг должен укладываться в один кадр.

Этап Аппаратный IP кодека Soft-ядро кодека Программное кодирование CPU
Задержка кодирования 1–2 кадра (33–66 мс @30fps) 3–6 кадров (100–200 мс) 10–30 кадров (300 мс–1 с)
Задержка декодирования В пределах 1 кадра 2–4 кадра 5–10 кадров
Сквозная (включая передачу) <100 мс 200–400 мс 500 мс+

Для дистанционного управления/хирургической навигации/промышленного замкнутого контура аппаратное кодирование — единственный выбор: задержка программного кодирования и soft-ядра просто не успевает. Для последующего воспроизведения с хранения программного кодирования достаточно, не нужно тратить логические ресурсы.

Третий счёт: стоимость ресурсов (сколько логики на самом деле съедает soft-ядро)

Для FPGA без аппаратного кодек-движка, выполняющего кодирование в реальном времени: сколько ресурсов на самом деле потребляет soft-ядро IP? На примере одноканального 1080p@30fps H.264-кодирования:

Ресурс Использование (один 1080p H.264-код) % от XCKU15P % от DUK7325T
LUT логические ячейки ~80K ~15 % ~40 %
BRAM ~6 Мб ~10 % ~25 %
DSP ~120 ~10 % ~30 %

Ключевой вывод: одноканальное 1080p soft-кодирование на XCKU15P (Kintex UltraScale+) управляемо, но четыре канала одновременно используют 60 %+ логики; DUK7325T (класс Kintex-7) одноканальное soft-кодирование уже съедает 40 % ресурсов, многоканально нужно аппаратное кодирование или переход на программное кодирование CPU.

Настоящее узкое место аппаратного IP кодека: не вычисления, а конфигурация

FPGA с аппаратным кодек-движком (как Zynq UltraScale+ VCU) имеют фиксированную пропускную способность кодирования — сколько каналов 1080p, сколько каналов 4K записано в железе. Настоящие подводные камни — в конфигурации:

1. Режим управления битрейтом: CBR (постоянный битрейт) для передачи, VBR (переменный битрейт) для хранения; неверный выбор приводит к размытой картинке или взрыву полосы.

2. Длина GOP: более длинный GOP даёт выше сжатие, но медленнее случайный доступ и поиск; наблюдение GOP 2–4 секунды, прямой эфир GOP 0,5–1 секунда.

3. B-кадры: включение B-кадров экономит битрейт, но добавляет задержку; для низколатентных сценариев отключите B-кадры, битрейт вырастет на 20–30 %.

4. Переключение разрешения: аппаратный кодек-движок нуждается в повторной инициализации при смене разрешения, не может динамически переключаться, как программное кодирование.

Аппаратное кодирование — это не «настроил и готово»: управление битрейтом, GOP и B-кадры напрямую определяют итоговое качество картинки и полосу; настраивайте по реальной картинке при отладке, не угадывайте.

Решение по выбору: какой маршрут для какого сценария

Сведём три счёта вместе и выберем по сценарию:

Сценарий Рекомендуемый маршрут Обоснование
Многоканальный 1080p стриминг в реальном времени (≥4 канала) Аппаратный IP кодека Низкая задержка, нет расхода логики, многоканальный параллелизм
Одноканальный дисплей 4K Аппаратный IP кодека (H.265) 4K soft-кодирование потребляет слишком много ресурсов
Машинное зрение: воспроизведение с хранения Программное кодирование CPU (H.264) Нереальное время, экономит логику FPGA
Чистый FPGA без аппаратного кодека + многоканальное кодирование Soft-ядро IP + сниженное разрешение Не хватает логики, уменьшите число каналов или разрешение
Дистанционное управление/низколатентный замкнутый контур Аппаратный IP кодека (B-кадры выкл.) Задержка должна быть в пределах одного кадра

Советы по выбору платы: как выбрать платы для проектов кодеков

  • XCKU15P ядро-плата (DUKU15P): Kintex UltraScale+ большой логический ресурс, подходит для многоканального soft-ядра кодека или высокополосных видеолинков, достаточный запас логики.
  • DUF7690T (FudanMicro JFM7VX690T): отечественный класс Virtex-7, большие ресурсы, подходит для видеокодек-линков в отечественных проектах.
  • DUK7325T (FudanMicro JFM7K325T): отечественный класс Kintex-7, средние ресурсы, подходит для одноканального кодирования или нереальных сценариев, проекты с чувствительностью к стоимости.

Ядро выбора кодека — не «у какого IP самая сильная производительность», а «сколько каналов, какое разрешение, какие требования к задержке у вашего сценария» — сначала определите параметры сценария, затем рассчитайте обратно полосу, задержку и стоимость ресурсов, а затем выбирайте аппаратное или программное кодирование. Не выбирайте сначала IP, а потом подгоняйте сценарий.

Дополнительное чтение

  • [Четырёхканальный ститчинг 1080p и вывод 4K: практика видеолинка FPGA](/article/four-channel-1080p-4k-output/)
  • [Планирование полосы PCIe: DMA, DMA-движки и распределение многоканальных данных](/article/pcie-bandwidth-planning/)
  • [Обратная передача по оптоволокну 10G/25G: линки по голому волокну и сопряжение оптических портов FPGA](/article/10g-25g-fiber-backhaul/)
FPGAH.264H.265Аппаратное кодированиеВидеокодекПрограммное кодирование
Дуюань Электроникс · Оригинальная техническая статья
‹ Предыдущая статья

Миграция в китайскую тулкит-цепочку FPGA PDS: конкретные шаги от Vivado к Pango/FudanMicro

Статья не ответила на ваш вопрос?

Свяжитесь с нами, описав ваши задачи, для персональной технической поддержки.

Контакты · +86 18621324348