opus

Универсальный аудиокодек, разработанный для интерактивной передачи речи и музыки через Интернет. Он объединяет технологии SILK (ориентированный на речь) и CELT (ориентированный на музыку) в одном гибком формате, обеспечивая высокое качество звука при низкой задержке. Opus стандартизирован IETF как RFC 6716 и является обязательным кодеком для WebRTC, что делает его основой для современных коммуникационных приложений.

Особенности

  • гибридная архитектура, объединяющая кодеки SILK и CELT;
  • широчайший диапазон битрейтов: от 6 kb/s до 510 kb/s;
  • поддержка частот дискретизации от 8 кГц (узкополосный) до 48 кГц (полоса);
  • размер кадра от 2.5 мс до 60 мс для гибкого баланса задержки и качества;
  • поддержка моно, стерео и многоканального звука (до 255 каналов);
  • встроенная устойчивость к потерям пакетов и маскирование потерь (PLC);
  • динамическая настройка битрейта, полосы пропускания и размера кадра;
  • эталонная реализация libopus с оптимизациями для floating-point и fixed-point архитектур.

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

Библиотека libopus является эталонной реализацией кодека и предоставляет API для кодирования, декодирования и управления параметрами потока (подробнее с документацией можно ознакомиться здесь).

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

Модуль кодирования преобразует входной PCM-сигнал в сжатый поток Opus. Кодер автоматически выбирает оптимальный режим (SILK, CELT или гибридный) в зависимости от типа сигнала, битрейта и требований к задержке.

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

  • opus_encoder_create() — создание и инициализация состояния кодера;
  • opus_encode() и opus_encode_float() — кодирование кадра из целочисленных или floating-point PCM-данных;
  • opus_encoder_ctl() — управление параметрами (битрейт, сложность, режим, VBR/CBR и др.);
  • opus_encoder_destroy() — освобождение ресурсов кодера.

Кодер поддерживает три основных режима приложения: OPUS_APPLICATION_VOIP (оптимизация для речи), OPUS_APPLICATION_AUDIO (для музыки) и OPUS_APPLICATION_RESTRICTED_LOWDELAY (минимальная задержка).

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

Декодер восстанавливает PCM-сигнал из сжатого потока Opus с минимальной задержкой и встроенным механизмом сокрытия потерь пакетов.

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

  • opus_decoder_create() — создание состояния декодера;
  • opus_decode() и opus_decode_float() — декодирование пакета в целочисленный или floating-point PCM;
  • opus_decoder_ctl() — управление параметрами декодера (сброс состояния, получение информации);
  • opus_decoder_destroy() — освобождение ресурсов.

Репакетизатор

Репакетизатор позволяет объединять несколько пакетов Opus в один или разделять ранее объединённые пакеты. Это полезно для оптимизации сетевой передачи или адаптации к требованиям контейнеров.

Основные функции репакетизатора:

  • opus_repacketizer_create() — создание состояния репакетизатора;
  • opus_repacketizer_cat() — добавление пакета для объединения;
  • opus_repacketizer_out() — получение объединённого пакета;
  • opus_repacketizer_get_nb_frames() — получение количества кадров в объединённом пакете.

Информация о библиотеке

Вспомогательные функции для получения информации о версии и характеристиках библиотеки.

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

  • opus_get_version_string() — получение строки версии libopus;
  • opus_strerror() — строковое описание кода ошибки.

Управление параметрами через CTL

Все настройки кодера и декодера выполняются через единый интерфейс CTL (Control) с использованием макросов-констант.

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

  • OPUS_SET_BITRATE(x) — установка битрейта в бит/с;
  • OPUS_SET_COMPLEXITY(x) — сложность алгоритма (1–10);
  • OPUS_SET_VBR(x) — включение/отключение переменного битрейта (VBR);
  • OPUS_SET_APPLICATION(x) — изменение режима приложения «на лету»;
  • OPUS_GET_LOOKAHEAD() — получение задержки, вносимой кодером.

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

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

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

opus

Opus is a totally open, royalty-free, highly versatile audio codec.
Лицензия
BSD-3-Clause
Версия
Домашняя страница
Скачать
armv7
292.26 Kb
MD5: 05a2b51ea7603c97f729e9bff51d8213
Updated: 03.09.2025, 17:55:07
armv8
327.08 Kb
MD5: 3fca900cfca8d36e15f8c761286483b3
Updated: 03.09.2025, 17:54:57
x86_64
344.32 Kb
MD5: c13012dbb4dc7a4c94c40c8928a429e7
Updated: 03.09.2025, 17:55:10
Использование в проекте

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

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