/ openh264

OpenH264 — это библиотека кодеков, которая поддерживает кодирование и декодирование H.264. Он подходит для использования в приложениях реального времени, таких как WebRTC. Подробнее см. Http://www.openh264.org/.

Функции кодировщика

  • Ограничено Базовый профиль до уровня 5.2 (максимальный размер кадра составляет 36864 макроблока)
  • Произвольное разрешение, не ограниченное кратным 16×16
  • Управление скоростью с адаптивным квантованием, или постоянное квантование
  • Параметры фрагментов: 1 фрагмент на кадр, N фрагментов на кадр, N макроблоков на фрагмент или N байтов на фрагмент
  • Несколько потоков, автоматически используемых для нескольких фрагментов
  • Временная масштабируемость до 4 уровней в диадической иерархии
  • Simulcast AVC до 4 разрешений на одном входе
  • Пространственное одновременное преобразование вверх до 4 разрешений с одного входа.
  • Кадры долгосрочного задания (LTR)
  • Операция управления памятью (MMCO)
  • Контрольное изображение изменение списка
  • Единый опорный кадр для межкадрового предсказания
  • Несколько опорных кадров при использовании LTR и/или 3-4 временных слоев
  • Период ic и вставка кадра мгновенного обновления декодера (IDR) по требованию
  • Динамические изменения скорости передачи, частоты кадров и разрешения
  • Вывод потока байтов в приложении B
  • Планарный вход YUV 4: 2: 0

Особенности декодера

  • Базовый профиль с ограничениями до уровня 5.2 (максимальный размер кадра — 36864 макроблока)
  • Произвольное разрешение, не ограниченное кратным 16×16
  • Один поток для всех срезы
  • Кадры долгосрочного эталона (LTR)
  • Операция управления управлением памятью (MMCO)
  • Изменение списка эталонных изображений
  • Несколько опорных кадров, если они указаны в наборе параметров последовательности (SPS).
  • Входной поток байтов в приложении B
  • YUV 4: 2: 0, плоский выход

Поддержка ОС

  • 64-разрядная и 32-разрядная версии Windows
  • Mac OS X 64-бит и 32-бит
  • Linux 64-бит и 32-бит
  • Android 64-бит и 32-бит
  • 64-разрядная и 32-разрядная версии iOS
  • Windows Phon e 32-битный

Поддержка процессора

  • Intel x86 опционально с MMX/SSE ( пока нет AVX, помощь приветствуется)
  • ARMv7 опционально с NEON, AArch64 опционально с NEON
  • Любая архитектура, использующая резервные функции C/C ++

Сборка библиотеки

Для кода сборки необходимо установить NASM: работоспособная версия 2.10.06 или выше, NASM можно загрузить с http: //www.nasm.us/. Для 64-разрядной версии Mac OSX необходимо, чтобы NASM был ниже версии 2.11.08, поскольку NASM 2.11.08 представит ошибку при использовании адресов, относящихся к RIP, в 64-разрядной версии Mac OSX

Чтобы собрать сборку руки для Windows Phone, требуется препроцессор газа. Его можно скачать с git://git.libav.org/gas-preprocessor. git

Для сборок Android

Для сборки для платформы Android вам необходимо установить android sdk и ndk. Вам также необходимо экспортировать ** ANDROID_SDK **/tools в PATH. В Linux это можно сделать с помощью

  export PATH = ** ANDROID_SDK **/tools: $ PATH  

Кодек и демонстрацию можно создать с помощью

  make OS = android NDKROOT = ** ANDROID_NDK ** TARGET = ** ANDROID_TARGET **  

Действительный ** ANDROID_TARGET ** можно найти в ** ANDROID_SDK **/platform , например android-12 . Вы также можете установить ARCH , NDKLEVEL в соответствии с вашим устройством и версией NDK. ARCH определяет архитектуру Android устройство. В настоящее время поддерживаются arm , arm64 , x86 и x86_64 , по умолчанию рука . ( mips и mips64 также можно использовать, но для этих архитектур нет никакой специальной оптимизации.) NDKLEVEL указывает android api уровень, значение по умолчанию — 12. Доступные возможности можно найти в ** ANDROID_NDK **/platform , например, android-21 (удалите android- prefix).

По умолчанию эти команды строятся для armeabi-v7a ABI. Чтобы построить для других AndroidABI, добавьте ARCH = arm64 , ARCH = x86 , ARCH = x86_64 , ARCH = mips или ARCH = mips64 . Чтобы построить для более старого ABI armeabi (который имеет armv5te в качестве базовой линии), добавьте APP_ABI = armeabi ( ARCH = arm неявно). Для сборки для 64-битного ABI, такого как arm64 , явно установите NDKLEVEL до 21 или выше.

Для сборок iOS

Вы можете создавать библиотеки и демонстрационные приложения, использующие файлы проекта xcode, расположенные в codec/build/iOS/dec и codec/build/iOS/enc .

Вы также можете собрать библиотеки (но не демонстрационные приложения), используя систему сборки на основе make из командной строки. Сборка с помощью

  make OS = ios ARCH = ** ARCH **  

Допустимые значения для ** ARCH ** — это обычные имена архитектуры iOS, такие как armv7 , armv7s , arm64 и i386 и x86_64 для симулятора. Другой настраиваемый параметр для iOS — это SDK_MIN , определяющий минимальную цель развертывания для встроенной библиотеки. Дополнительные сведения о сборке с использованием make в командной строке см. Ниже в разделе «Для всех платформ».

Для сборок Linux

Вы можете создавать библиотеки (но не демонстрационные приложения), используя систему сборки на основе make из командной строки. Сборка с помощью

  make OS = linux ARCH = ** ARCH **  

Вы можете установить ARCH в соответствии с вашим устройством Linux. ARCH определяет архитектуру устройства. В настоящее время поддерживаются arm , arm64 , x86 и x86_64

ВНИМАНИЕ: если ваш компьютер имеет архитектуру x86, для сборки библиотеки, которая будет использоваться на машине arm/aarch64, вам может потребоваться кросс-компилятор, например: make OS = linux CC = aarch64-linux-gnu -gcc CXX = aarch64-linux-gnu-g ++ ARCH = arm64ormake OS = linux CC = arm-linux-gnueabi-gcc CXX = arm-linux-gnueabi-g ++ ARCH = arm

Для сборок Windows

Наши сборки Windows используют MinGW, который можно загрузить с http://www.mingw.org/

Для сборки с gcc, добавьте каталог bin MinGW (например, /c/MinGW/bin ) к своему пути и следуйте приведенным ниже инструкциям «Для всех платформ».

Для сборки с Visual Studio вам нужно будет указать путь для запуска cl.exe. Самый простой способ — запустить MSYS из сеанса командной строки разработчика. Инструкции можно найти на http://msdn.microsoft.com/en-us/library/ms229859(v=vs.110).aspx. Если вам нужно сделать это вручную, вот пример из 64-битной установки VS2012 для Windows:

  export PATH = "$ PATH:/c/Program Files (x86)/ Microsoft Visual Studio 11.0/VC/bin:/c/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE " 

Вам также потребуется установить INCLUDE и LIB пути, указывающие на установки VS и SDK. Примерно так, снова из Win64 с VS2012 (обратите внимание на использование здесь путей в стиле Windows).

  export INCLUDE = "C:  Program Files (x86)  Microsoft Visual  Studio 11.0  VC  include; C:  Program Files (x86)  Windows Kits  8.0  Include  um; C:  Program Files (x86)  Windows Kits  8.0  Include  shared "export LIB =" C:   Программные файлы (x86)  Windows Kits  8.0  Lib  Win8  um  x86; C:  Program Files (x86)  Microsoft Visual Studio 11.0  VC  lib " 

Затем добавьте OS = msvc в строку make в инструкциях «Для всех платформ».

Для сборок Windows Phone

Следуйте приведенным выше инструкциям для обычных сборок Windows, но используйте OS = msvc-wp вместо OS = msvc . Вам также понадобится gas-препроцессор (как указано ниже в разделе «Создание библиотеки»).

При сборке для Windows Phone с MSVC 2013 не будет включенного файла bat, который устанавливает пути к библиотеке для Windows Phone kit, но это можно сделать с помощью такой команды:

  export LIB = "c:  Program Files (x86)  Microsoft Visual Studio 12.0  VC  lib  store   arm; c:  Program Files (x86)  Microsoft Visual Studio 12.0  VC  lib  arm; c:  Program Files (x86)  Windows Phone Kits  8.1  lib  arm " 

Это необходимо только для построения библиотеки DLL; статическая библиотека может быть создана без этой настройки.

Обратите внимание, поддерживается только Windows Phone 8.1 или новее, 8.0 больше не поддерживается.

Для всех платформ

Использование make

Из основного каталога проекта:

  • make для автоматического определения архитектуры и построения соответственно
  • make ARCH = i386 для 32-разрядных сборок x86
  • make ARCH = x86_64 для 64-разрядных сборок x86
  • make V = No для тихой сборки (без отображения фактических команд компилятора)
  • make DEBUGSYMBOLS = True для две библиотеки, одна — обычные библиотеки, другая — удаляет записи таблицы отладочных символов (созданные с помощью опции -g)

Программы командной строки h264enc и h264dec появятся в основном каталоге проекта.

Сценарий оболочки для запуска приложений командной строки находится в testbin/ CmdLineExample.sh

Информацию об использовании можно найти в testbin/CmdLineReadMe

Использование мезона

Определение мезона build defi Были добавлены разделы, которые, как известно, работают в Linux и Windows, для x86 и x86 64-бит.

См. http://mesonbuild.com/Installing.html для получения инструкций по установке meson, затем:

 meson builddirninja -C builddir 

Запустите тесты с помощью:

 meson test -C builddir -v 

Установить с помощью:

 ninja -C builddir install 

Использование исходного кода

  • codec — кодировщик, декодер, консоль (тестовое приложение), build (makefile, vcproj)
  • build — скрипты для системы сборки Makefile
  • test — файлы модульных тестов GTest.
  • testbin — сценарии автоматической сборки, файлы конфигурации тестовых приложений.
  • res — тестовые файлы yuv и битового потока

Известные проблемы

См. средство отслеживания проблем на https ://github.com/cisco/openh264/issues

  • Ошибки кодировщика, когда разрешение превышает 3840×2160
  • Ошибка кодировщика или если размер сжатого кадра превышает половину несжатого размера
  • Ошибки декодера, когда размер сжатого кадра превышает 1 МБ
  • Encoder RC требует включения пропуска кадра для достижения целевого битрейта, если пропуск кадров отключен, возможно превышение целевого битрейта

Лицензия

BSD, см. Подробную информацию можно найти в файле LICENSE .



Сжатие видео H.264

Получите более подробное объяснение H.264 и его приложений в этом видео.

H.264 — широко известный формат сжатия видео стандарт для цифрового видео высокой четкости. Также известный как MPEG-4 Part 10 или Advanced Video Coding (MPEG-4 AVC), H.264 определяется как блочно-ориентированный стандарт сжатия видео на основе компенсации, который определяет несколько профилей (инструментов) и уровней (максимальные битрейты и разрешения). ). Этот формат поддерживает 4K и до 8K Ultra High-Definition.

Кодек, основанный на стандарте H.264, сжимает цифровой видеофайл (или поток), так что ему требуется только половина дискового пространства. (или пропускная способность сети) MPEG-2. Благодаря этому сжатию кодек может поддерживать такое же качество видео, несмотря на то, что он использует только половину дискового пространства.

Целью создания H.264/AVC было создание нового стандарта цифрового видео, способного обеспечивать хорошее качество видео при существенно более низкой скорости передачи данных, чем предыдущие стандарты, без чрезмерного усложнения конструкции, чтобы реализация оставалась практичной. , и относительно недорогой в реализации. Следующее поколение сжатия известно как H.265 или HEVC, предлагая еще один качественный скачок в эффективности.

Стандарт H.264 также достаточно гибок, чтобы его можно было применять в широком спектре приложений и сетей. , и системы, включая системы с низкой и высокой скоростью передачи данных, видео с низким и высоким разрешением, широковещание, хранение, пакетные IP-сети, многие типы сетей, такие как Интернет, MPLS, спутниковые, кабельные, а также системы мультимедийной телефонии ITU-T . H.264 широко применяется во многих отраслях и на широком спектре устройств — от профессиональных декодеров до браузеров и мобильных устройств.

ПРОДОЛЖИТЬ ЧТЕНИЕ

Передовые технологии кодирования HEVC и H.264

Кодировщик Makito X H.264

Оцените статью
logicle.ru
Добавить комментарий