libvpx

Высокопроизводительная библиотека для кодирования и декодирования видео в форматах VP8 и VP9, разработанная Google. Она является ключевым компонентом проекта WebM и предоставляет оптимизированные реализации современных видеокодеков с открытым исходным кодом. Библиотека широко используется для потоковой передачи видео, видеоконференций и сжатия видео высокого качества.

Особенности

  • поддержка кодеков VP8 и VP9 с высоким качеством сжатия;
  • оптимизация для различных архитектур (x86, ARM, MIPS) с использованием SIMD-инструкций;
  • возможность работы в реальном времени с низкой задержкой;
  • интеграция с медиа-контейнерами WebM и Matroska.

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

libvpx состоит из нескольких модулей, предоставляющих полный набор инструментов для работы с видео в форматах VP8 и VP9 (подробнее с документацией можно ознакомиться здесь).

Кодирование видео (VP8/VP9)

Библиотека предоставляет мощный API для кодирования видео с поддержкой различных параметров сжатия, включая контроль битрейта, качество, скорость кодирования и многопоточность. Кодер оптимизирован для широкого спектра применений — от низкобитрейтного потокового видео до сжатия высокого разрешения.

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

  • vpx_codec_enc_init_ver() — инициализация кодера с указанием версии и параметров;
  • vpx_codec_encode() — кодирование кадра видео;
  • vpx_codec_get_cx_data() — получение закодированных данных;
  • vpx_codec_control() — управление параметрами кодирования во время выполнения;
  • vpx_codec_destroy() — освобождение ресурсов кодера.

Декодирование видео (VP8/VP9)

Декодер libvpx обеспечивает быстрое и эффективное декодирование видео с поддержкой аппаратного ускорения (где доступно). Он может обрабатывать как потоковые данные, так и файлы, и поддерживает все функции форматов VP8 и VP9.

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

  • vpx_codec_dec_init_ver() — инициализация декодера;
  • vpx_codec_decode() — декодирование сжатых данных;
  • vpx_codec_get_frame() — получение декодированного кадра;
  • vpx_codec_control() — управление параметрами декодирования;
  • vpx_codec_destroy() — освобождение ресурсов декодера.

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

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

Ключевые параметры кодирования:

  • Битрейт и качество: CBR, VBR, CRF (constant quality);
  • Скорость кодирования: пресеты от самого быстрого до самого медленного (best quality);
  • Ключевые кадры (keyframes): настраиваемый интервал и принудительная вставка;
  • Многопоточность: поддержка кодирования с использованием нескольких потоков;
  • Адаптивное сжатие: подстройка под движение, сложность сцены и сетевые условия.

Поддержка аппаратного ускорения

libvpx использует SIMD-инструкции (SSE, AVX, NEON и др.) для значительного ускорения операций кодирования и декодирования. Библиотека автоматически определяет доступные инструкции процессора и выбирает оптимальную реализацию.

Поддерживаемые оптимизации:

  • x86/x86-64: SSE, SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2;
  • ARM: NEON, ARMv8;
  • MIPS: MSA (MIPS SIMD Architecture);
  • Детектирование во время выполнения: выбор оптимальной реализации для текущего процессора.

Интеграция с контейнерами и потоками

libvpx легко интегрируется с медиа-контейнерами, такими как WebM и Matroska, и может использоваться в потоковых решениях через RTMP, HLS, DASH и другие протоколы. Библиотека предоставляет утилиты для работы с контейнерами и потоками.

Возможности интеграции:

  • Кодирование и декодирование в контексте контейнера WebM;
  • Поддержка потоковой передачи через различные протоколы;
  • Интеграция с медиа-фреймворками (GStreamer, FFmpeg);
  • Генерация фрагментов для адаптивного стриминга (DASH, HLS).

Инструменты командной строки

В состав libvpx входят утилиты командной строки для кодирования, декодирования и анализа видео, которые полезны для тестирования, отладки и пакетной обработки.

Основные утилиты:

  • vpxenc — кодирование видео в форматы VP8/VP9;
  • vpxdec — декодирование видео из форматов VP8/VP9;
  • vpx_temporal_svc_encoder — кодирование с временным масштабированием (SVC);
  • vpx_multi_resolution_encoder — кодирование с несколькими разрешениями;
  • vpx_ivf — работа с IVF-файлами (контейнер для VP8/VP9).

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

Документация по использованию 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 = (
        "libvpx/1.15.2@aurora",
    )    

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

libvpx

WebM VP8/VP9 Codec SDK
Лицензия
BSD-3-Clause
Версия
Домашняя страница
Скачать
armv7
1.34 Mb
MD5: 58c518a477905f2f01c81512f500ddb7
Updated: 10.09.2025, 14:12:42
armv8
1.33 Mb
MD5: 740d93e9caba5585e7095b6cd0c393a7
Updated: 10.09.2025, 14:12:36
x86_64
1.22 Mb
MD5: 6a0ec0be8386b192b98453e26641d785
Updated: 17.02.2026, 12:24:59
Использование в проекте

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

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