openh264

Библиотека для кодирования и декодирования видео в формате H.264, разработанная компанией Cisco. Она спроектирована для использования в приложениях реального времени, таких как WebRTC, и обеспечивает оптимальный баланс между производительностью и качеством сжатия.

Особенности

  • поддержка кодирования и декодирования H.264;
  • возможность работы с произвольным разрешением, не кратным 16x16;
  • гибкий контроль над битрейтом: адаптивная квантизация (RC) или постоянная квантизация;
  • поддержка многопоточного кодирования;
  • временная масштабируемость до 4 уровней;
  • пространственная симуляция до 4 разрешений с одного входа;
  • поддержка кадров долгосрочного ссылания, MMCO и модификации списков ссылок;
  • динамическое изменение битрейта, частоты кадров и разрешения во время работы.

Основные компоненты

OpenH264 предоставляет разработчикам два ключевых модуля — кодер и декодер, а также набор вспомогательных утилит (подробнее с документацией можно ознакомиться здесь).

Кодирование видео

Модуль кодирования реализует профиль Constrained Baseline и поддерживает расширенные сценарии, включая симуляцию и множественные слайсы.

Основные функции кодера:

  • Управление битрейтом: постоянный битрейт (CBR), переменный битрейт (VBR) или постоянное качество (CRF) с адаптивной квантизацией.
  • Слайсы: настройка количества слайсов — один на кадр, несколько на кадр, по числу макроблоков или по размеру в байтах.
  • Масштабирование: пространственная симуляция (до 4 потоков разного разрешения) и временная масштабируемость (до 4 иерархических уровней).
  • Динамическая перенастройка: изменение параметров кодирования (битрейт, FPS, разрешение) без пересоздания кодера.
  • Долгосрочные ссылки: поддержка LTR-кадров для повышения устойчивости к потерям.

Декодирование видео

Декодер OpenH264 ориентирован на максимальную совместимость с потоком H.264 и эффективное восстановление после ошибок.

Ключевые особенности декодера:

  • Устойчивость к ошибкам: улучшенные алгоритмы сокрытия ошибок (error concealment) с несколькими режимами работы.
  • Парсинг без декодирования: режим bParseOnly, позволяющий только разобрать битстрим без фактического декодирования.
  • Обработка LTR и MMCO: корректное восстановление ссылочных картинок при использовании долгосрочных ссылок.
  • Информация о временных метках: возврат временных меток кадров в выходной структуре.

Поддерживаемые платформы и процессоры

OpenH264 доступна на большинстве современных платформ и использует аппаратные оптимизации для ускорения работы.

Процессорные архитектуры и оптимизации:

  • x86/x86-64: MMX/SSE (без AVX, помощь приветствуется);
  • ARM: NEON для ARMv7, AArch64 с NEON;
  • Универсальный C/C++ fallback для любых других архитектур.

Масштабирование и многопоточность

Библиотека спроектирована для эффективного использования многоядерных процессоров и сценариев с множеством одновременных потоков видео.

Возможности масштабирования:

  • Многопоточное кодирование: автоматическое распараллеливание по слайсам.
  • Симуляция (Simulcast): одновременное кодирование одного исходного потока в несколько разрешений без дополнительных затрат на повторное чтение кадров.
  • Временные уровни: иерархическая структура P-кадров для адаптации к меняющейся пропускной способности канала.

Управление параметрами кодирования

API OpenH264 позволяет тонко настраивать поведение кодера под конкретные задачи. Большинство параметров доступны через структуру SEncParamBase / SEncParamExt и могут изменяться динамически.

Основные настраиваемые параметры:

  • iTargetBitrate — целевой битрейт;
  • fMaxFrameRate — максимальная частота кадров;
  • iPicWidth / iPicHeight — разрешение;
  • iRCMode — режим контроля скорости (RC_QUALITY_MODE, RC_BITRATE_MODE, RC_BUFFERBASED_MODE);
  • iMultipleThreadIdc — количество потоков кодирования;
  • bEnableFrameSkip — разрешение пропуска кадров для соблюдения битрейта (важно для RC);
  • iSpatialLayerNum — количество пространственных слоёв для симуляции.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "openh264/2.5.0@aurora",
    )    

Процесс локальной сборки описан в документации.

openh264

Open Source H.264 Codec
Лицензия
BSD-2-Clause
Версия
Домашняя страница
Скачать
armv7
558.16 Kb
MD5: 60499a3b514aefcda0b7266a83d767b9
Updated: 03.09.2025, 17:11:45
armv8
599.42 Kb
MD5: e765634f779dae3293f7b1125cac56ef
Updated: 03.09.2025, 17:11:32
x86_64
628.79 Kb
MD5: 4c21a001bfaac0e49ec2019de43ea809
Updated: 03.09.2025, 17:11:48
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.