Анализ распространенных форматов кодирования видео [просто для понимания]
Анализ распространенных форматов кодирования видео [просто для понимания]

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

общийвидеоАнализ формата кодирования

Каталог статей

1.Технология кодирования MPEG2-TS

1.1. Введение в MPEG-TS.

MPEG2-TS(Transport Stream (Transport Stream); также известный как TS, TP, MPEG-TS или M2T) — это протокол связи для звука, изображения и данных. Впервые он был использован при передаче DVD-программ в реальном времени. разница:   Формат MPEG2 в программах DVD, точнее MPEG2-PS, полное название — Program. Stream (поток программы), а полное имя TS — Transport. Поток (транспортный поток). MPEG2-PS в основном используется для хранения программ фиксированной продолжительности, таких как фильмы на DVD, и позволяет добавлять субтитры и другие программные операции. MPEG-TS в основном используется для передачи программ в реальном времени, например телепрограмм в реальном времени.   Проще говоря, отрезание первой части VOB-файла на DVD (или повреждение данных) приведет к тому, что весь файл невозможно будет декодировать, а телепрограммы можно будет декодировать (просматривать) в любой момент, когда Телевизор включен. Таким образом, особенностью формата MPEG2-TS является то, что его можно декодировать независимо, начиная с любого сегмента видеопотока.

1.2. Основные понятия и обзор потока TS.

(1) Поток ES (Элементарный поток, элементарный поток): поток элементарного кода, непрерывный поток кода несегментированного аудио, видео или другой информации. (2) Поток PES (пакетированный элементарный поток, пакетированный элементарный поток): Поток ES основного кодового потока разделяется на пакеты данных разной длины по мере необходимости, и добавляется заголовок пакета для формирования потока PES упакованного элементарного кодового потока. (3) Поток PS (программный поток): поток кода, который организует несколько компонентов программы в соответствии с их взаимными отношениями и добавляет описания отношений между каждым компонентом. Поток PS — это контейнер инкапсуляции для мультиплексирования цифрового аудио, видео и т. д. Это один или несколько потоков PES с общей временной разверткой, объединенных в общий поток, в основном используемый для хранения программ. Длина пакета не является фиксированной и большой. После потери информации о синхронизации получатель не может определить положение синхронизации следующего пакета, что приведет к синхронизации и серьезной потере информации. Потоковая передача PS подходит для сред с небольшими битовыми ошибками и хорошими каналами, таких как студии, домашние условия и носители данных. (4) Поток TS (транспортный поток): он организует несколько компонентов программы в соответствии с их взаимными отношениями, добавляет описания отношений каждого компонента и информацию о составе программы и дополнительно инкапсулирует их в поток транспортного кода. Поток TS упаковывает видео, аудио, PSI и другие данные в транспортные пакеты для передачи. В основном используется для передачи программ. Длина пакета передачи TS фиксирована и обычно составляет 188 байт. (5) Поток TS и поток PS — это два выходных кодовых потока, определенные в стандарте MPEG-2. В формате TS любой сегмент видеопотока можно декодировать независимо, а в формате PS — нет. Поскольку поток TS обладает высокой способностью противостоять ошибкам передачи, кодовые потоки MPEG-2, передаваемые в настоящее время в среде передачи, в основном используют формат пакета потока TS. (6) Воспроизведение потока TS: перед воспроизведением измените суффикс файла потока TS на .mpg или .mpeg и откройте его для воспроизведения с помощью проигрывателя, который может напрямую воспроизводить поток MPEG-TS (подойдет любой обычный проигрыватель). ). (7) Преимущества потока TS: ① Динамическое распределение полосы пропускания: поскольку длина пакета передачи TS фиксирована, указанную общую полосу частот канала можно гибко распределять в режиме реального времени для видео, аудио и информации данных через PID. Используя эту функцию, ключ дешифрования можно вставить в поток TS в режиме реального времени до того, как платная программа будет транслироваться и отправлена ​​большинству пользователей. ② Масштабируемость: позволяет повторно использовать мультиплексированный поток транспортного кода с другими базовыми потоками видео- и аудиокода для создания потока TS более высокого уровня, занимающего широкую полосу пропускания. ③ Масштабируемость ④ Защита от помех ⑤ Стоимость приемника низкая. (8) Процесс формирования потока ТС: ① Сжимайте [единицу отображения] для создания [единицы ввода], а последовательные [единицы ввода] образуют базовый поток кода. ② Упакуйте ES (базовый поток кода) для формирования PES. ③ Добавьте информацию о времени (PTS/DTS) в пакет PES. ④ Распределите содержимое пакета PES на серию пакетов передачи фиксированной длины. ⑤ Добавьте информацию о времени (PCR) в пакет передачи. ⑥ Добавьте в пакет передачи информацию, специфичную для программы (PSI). ⑦ Непрерывно выводить транспортные пакеты для формирования потока MPEG-TS с постоянной скоростью передачи данных.

1.3.Основной процесс

На следующем рисунке показан подробный процесс реализации единого кодового потока на этапе кодирования в системе MPEG-2:

Рисунок 1-1 Процесс кодирования MPEG-2 TS

(1) После аналого-цифрового преобразования элементарный поток ES получается посредством кодирования со сжатием MPEG-2. Объем данных этого потока велик и представляет собой только информацию выборки кадров IPB. (2) С помощью упаковщика PES упакуйте и вставьте логотип PTS/DTS в каждый кадр для программирования PES. То, что изначально было форматом потока, теперь представляет собой сегментированную форму пакетов данных. (3) ПЭС упаковывается в пакеты ПС или ТС для хранения по мере необходимости.

1.4.Анализ структуры потокового пакета TS (сокращенно пакета TS)

MPEG-2 предусматривает, что длина транспортного пакета TS составляет 188 байт. Однако среда связи добавит к пакету байты проверки ошибок, в результате чего длина пакета будет отличаться от 188 байт. Например: В правилах DVB длина пакета составляет 204 байта: ① При прохождении через модулятор после каждого пакета передачи добавляется 16-байтовый код прямого исправления ошибок Рида-Соломона, образуя таким образом 204-байтовый пакет данных. После модуляции всегда остается 204 байта пакетов данных. ② Перед модуляцией вставьте код RS или фиктивный код RS в мультиплексор. В правилах ATSC в качестве длины пакета используется 208 байт: добавляются 20 байтов кода прямого исправления ошибок RS (Рида-Соломона). В отличие от DVB, ATSC предусматривает, что коды RS могут появляться только в модулированных потоках TS. Все пакеты TS разделены на части заголовка и полезной нагрузки. В пакет TS можно заливать много чего (заполненное заполняет часть payload), в том числе: видео, аудио, данные (включая PSI, SI и любую другую форму данных).

Поток TS представляет собой формат битового потока на основе пакетов. Каждый пакет имеет размер 188 байтов (или 204 байта, с добавлением 16 байтов данных проверки CRC после 188 байтов, а остальные форматы такие же). Весь поток TS имеет следующий вид:

Для анализа информации заголовка см. 1.4.1. Адаптивная область пакета TS состоит из четырех частей: длины адаптивной области, различных индикаторов флагов, информации, относящейся к вставленным флагам, и данных заполнения. Часть флага состоит из 8 частей: индикатор разрыва связи, индикатор произвольного доступа, индикатор оптимизации ES, флаг PCR, флаг контакта, флаг выделенных данных передачи, флаг исходной PCR и флаг расширения адаптивной области. Важным является поле PCR в части флага, которое может предоставлять данные синхронизации для тактовой частоты кодека 27 МГц для синхронизации. Процесс заключается в использовании PLL для сравнения локальной фазы PCR во время декодирования с входной мгновенной фазовой синхронизацией PCR, чтобы определить, синхронизирован ли процесс декодирования. Если нет, используйте эту мгновенную фазу PCR для регулировки тактовой частоты. Поскольку в цифровых изображениях используются сложные и разные алгоритмы кодирования сжатия, данные каждого изображения различны, что делает невозможным получение тактовой информации непосредственно из начала сжатых и закодированных данных изображения. С этой целью адаптивные области некоторых (но не всех) пакетов TS выбираются для передачи информации о синхронизации. Следовательно, адаптивная область выбранного пакета TS может использоваться для измерения битов управления и важной управляющей информации информации пакета. Адаптивную область не обязательно отправлять с каждым пакетом. Объем отправки в основном определяется параметром метки времени, специфичным для передачи, выбранного пакета TS. Индикатор произвольного доступа и метка контакта в метке обеспечивают произвольную точку входа для потока сжатых I-кадров данных при изменении программы, а также обеспечивают удобство вставки локальных программ. Данные заполнения в адаптивной области обусловлены тем, что длина пакета PES не может быть преобразована в целое число, кратное размеру пакета TS. Последний пакет TS сохраняет небольшую часть полезной емкости и заполняется байтами заполнения. Это может предотвратить опустошение буфера и его заполнение. поддерживать Общая скорость передачи данных остается постоянной.

1.4.1.Заголовок пакета TS

В заголовке пакета TS содержится информация о передаче: синхронизация, есть ли ошибки, есть ли скремблирование, PCR (опорный такт программы) и другие флаги. Длина заголовка пакета TS не фиксирована, первые 32 бита (4 байта) фиксированы, за ними может следовать поле адаптации (поле адаптации). 32 бита (4 байта) — это минимальный заголовок. Структура заголовка фиксирована следующим образом:

Язык кода:javascript
копировать
typedef struct TS_packet_header
{
	unsigned sync_byte : 8;
	unsigned transport_error_indicator : 1;
	unsigned payload_unit_start_indicator : 1;
	unsigned transport_priority : 1;
	unsigned PID : 13;
	unsigned transport_scrambling_control : 2;
	unsigned adaption_field_control : 2;
	unsigned continuity_counter : 4;
} TS_packet_header;
  • sync_byte: фиксированное значение 0100 0111 (0x47); этот байт распознается декодером и позволяет отделить заголовок и полезную нагрузку друг от друга.
  • Transport_error_indicator: Поверхность '1' указывает, что в соответствующем транспортном пакете имеется по крайней мере один бит неисправимой ошибки. Если установлено значение 1, оно не может быть сброшено в 0, пока ошибка не будет исправлена.
  • payload_unit_start_indicator (флаг начала загрузки единицы): когда он равен 1, после первых 4 байтов будет байт корректировки, и его значение соответствует длине последующего поля корректировки. Поэтому начало полезной нагрузки должно быть смещено еще на 1+[длина] байт.
  • transport_priority(Приоритет передачи):‘1’поверхностьявный приоритет перед другими с таким жеPID Однако этот бит не установлен в «1» для пакетов с высоким уровнем.
  • PID:Packet Идентификатор — уникальный номер, соответствующий разным пакетам и указывающий тип данных, хранящихся в полезной нагрузке пакета. Значение ПИД0x0000-0x000Fбронировать. Среди них 0x0000 — PATбронировать; 0x1fff — группировать бронировать, то есть пустой пакет;
  • Transport_scrambling_control (управление скремблированием): поверхность указывает режим шифрования полезной нагрузки пакета потока TS. Пустой пакет — «00».,Если заголовок транспортного пакета включает поле корректировки,Не должен быть зашифрован.
  • Adaptation_field_control (управление доменом адаптации): поверхность указывает, имеет ли заголовок поле настройки или полезную нагрузку. «00» — это бронирование для будущего использования ISO/IEC. «01» содержит только полезную нагрузку;,Нет поля настройки «10» Никакой полезной нагрузки, только поля настройки «11»;,Предыдущий байт в поле настройки поверхности указывает длину поля настройки.,Начало полезной нагрузки должно быть смещено на [длину] байт дальше. Пустые пакеты должны иметь номер «10».
  • Continuous_counter (счетчик непрерывности): увеличивается с каждым пакетом потока TS с тем же PID и возвращается к 0, когда достигает максимального значения. Диапазон: 0~15.

PID — это уникальный идентификационный знак в потоке TS, а содержимое пакетных данных определяется PID. Если PID в заголовке пакета в потоке TS равен 0x0000, то пакетными данными этого пакета является таблица DVB PAT, а не другие типы данных (такие как видео, аудио или другая бизнес-информация). В следующей таблице приведены значения PID для некоторых таблиц, эти значения фиксированы и не подлежат изменению.

поверхность

Значение ПИД

PAT

0x0000

CAT

0x0001

TSDT

0x0002

EIT,ST

0x0012

RST,ST

0x0013

TDT,TOT,ST

0x0014

1.4.2.Часть полезной нагрузки пакета TS

Информация, передаваемая полезной нагрузкой в ​​пакете TS, включает два типа:   ① Видео, аудио PES пакеты и вспомогательные данные;   ② Информация, специфичная для программы PSI.   Конечно, пакет TS также может быть пустым. Пустые пакеты используются для заполнения потока TS и могут быть вставлены или удалены во время ремультиплексирования.   При повторном использовании системы потоки видео и аудио ES должны быть упакованы для формирования потоков видео и аудио PES. Вспомогательные данные (например, информация телетекста) не должны быть упакованы в пакеты PES. Длина пакета PES не фиксирована, аудиопакет PES меньше или равен 64 КБ, а видеопакет обычно представляет собой один пакет PES на кадр. Пакет PES изображения обычно передается множеством пакетов TS. MPEG-2 предусматривает, что пакет PES должен передаваться целым числом пакетов TS. Если последний пакет TS, содержащий пакет PES, не заполнен, он заполняется байтами заполнения, когда формируется новый пакет PES, для начала передачи необходимо использовать новый пакет TS; (1) Связанные с ПЭУ   PES — это упакованный ES со вставленными PTS и DTS. Обычно один PES представляет собой один кадр изображения.

Рисунок 1-2. Состав пакета пакетированного элементарного потока (PES).

PES упаковывается в потоки TS или PS, и часто один PES делится на несколько пакетов TS. ① Начальный код пакета PES:   Префикс кода начала пакета представляет собой фиксированную структуру кодового слова, а его значение равно 0x000001, которое используется для синхронизации пакетов PES как на отправляющей, так и на принимающей стороне. ② Длина PES-пакета:   Длина пакета PES является переменной. Поле длины пакета PES имеет два байта, общая длина которых составляет 16 бит. Таким образом, максимальная длина пакета PES составляет 65535 байт. ③ PES-заголовок:   Функции заголовка PES варьируются в зависимости от конкретных приложений, включая управление скремблированием, приоритет, скорость потока ES и CRC и т. д., среди которых есть две важные задачи: PTS и DTS.   Как видите, PTS/DTS включен в пакет PES. Эти два параметра являются ключом к решению проблемы синхронного отображения видео и звука и предотвращению переполнения или опустошения входного буфера декодера. ПТСповерхностьшоу Единица отображения появляется в целевом декодере системы (STD: system target декодера), поверхность DTS указывает время, когда все байты единицы доступа удаляются из буфера декодирования ES STD. Каждый заголовок I, P и Б-кадр имеет PTS и DTS, но PTS и DTS одинаковы для Б-кадр, и нет необходимости отмечать DTS Б-кадр. Для I-кадров и P-кадров они должны быть сохранены в буфере переупорядочения декодера перед отображением, а затем отображены после задержки (переупорядочение должно быть отмечено соответственно). (2) Информация, специфичная для программы PSI (программа Specific Information)   Для управления различными типами пакетов данных TS необходимы некоторые специальные пакеты TS для установления взаимосвязи между каждым пакетом данных TS. Информация, содержащаяся в этих специальных пакетах TS, является информацией, специфичной для программы. В разных стандартах он имеет разные названия:   ① В MPEG-2 называется PSI;   ② Стандарт DVB расширяет PSI в соответствии с фактическими потребностями, что называется информацией SI;   ③ В стандарте ATSC это информация PSIP; В MPEG-2 предусмотрены следующие методы описания информации PSI:

  • SurfaceTable: структурная запись программной информации;
    • Программное объединениеповерхность Программа Association Table(PAT)0x0000
    • Карта карты поверхности Таблицы карт программы (PMT)
    • Таблица условного доступа (CAT) 0x0001
    • Поверхность сетевой информации Таблица сетевой информации (NIT) 0x0010
    • транспортный потокописыватьповерхностьTransport Stream Description Table(TSDT)
  • Раздел: Сопоставление содержимого формата поверхности с потоком TS; Частный сегмент Частный_ раздел
  • описыватьDescriptor: Предоставляет информацию о составе программы (видеопоток).、аудиопоток、язык、уровень、Системные часы, скорость кода и т. д.) информация;

ITU-T Rec.H.222.0 | ISO/IEC Как определено в 13818-1 PSI-поверхность может быть разделена на один или несколько сегментов и помещена в пакеты транспортного потока. Абзац — это грамматическая структура, используемая для объединения ITU-T Rec.H.222.0 | ISO/IEC Как определено в 13818-1PSIповерхность отображается в пакет транспортного потока. 1)PATповерхность   Поток TS содержит одну или несколько поверхностей PAT. Поверхность PAT передается пакетом TS с PID 0x0000. Его функция заключается в предоставлении каждому мультиплексированному транспортному потоку включенной программы и номера программы, а также позиции PMT соответствующей программы, то есть номера TS. пакет ПМТ. ПИД,Также указано местоположение NIT.,То есть значение PID пакета TS NIT.

  • table_id: исправлено на 0x00,отметитьповерхностьдаPATповерхность。
  • section_syntax_indicator: Флаг грамматики раздела, фиксированное значение 1.
  • section_length: поверхность указывает количество полезных байтов, следующих за этим байтом, включая CRC32. Количество комплектов программ: (длина секции-9)/4
  • Transport_stream_id: 16-битное поле,поверхность указывает идентификатор потока TS,Отличается от других мультиплексированных потоков в той же сети.
  • номер_версии: поверхность указывает номер версии PAT.
  • current_next_indicator: поверхность указывает, действительна ли отправленная поверхность PAT в данный момент или следующий PATэффективный.
  • section_number: поверхность указывает номер секции. PAT может быть разделен на несколько передач,Первый сегмент равен 0,Добавляйте 1 к каждому последующему сегменту,Может быть до 256 сегментов.
  • Last_section_number: поверхность указывает номер последней секции PAT.
  • Номер программы: номер программы
  • network_PID: PID поверхности сетевой информации (NIT). Когда номер программы равен 0, соответствующий идентификатор — network_PID.
  • Карта программы PID: номер PID поверхности карты программы (PMT).,Когда номер программы больше или равен 1,Соответствующий идентификатор — program_map_PID. В PAT может быть несколько идентификаторов program_map_PID.
  • CRC_32: 32-битное поле, код проверки CRC32 Cyclic RedundancyCheck.

2)PMTповерхность   PMT используется в транспортном потоке для указания положения видео, аудио и данных, составляющих определенный набор программ в транспортном потоке, то есть значения соответствующего пакета TS. PID и расположение поля Program Clock Reference (PCR) для каждой программы.

  • Идентификатор таблицы: исправлено на 0x02.,Логотип поверхности — поверхность PMT.
  • Индикатор синтаксиса раздела: Для PMTповерхность установите значение 1.
  • Длина секции: поверхность указывает количество полезных байтов, следующих за этим байтом, включая CRC32.
  • Номер программы: указывает, что программа соответствует соответствующему PID карты программы.
  • Номер версии: указывает номер версии PMT.
  • Индикатор текущей следующей: когда позиция равна «1», передаваемый в данный момент раздел карты программы доступен; когда позиция равна «0», это указывает на то, что передаваемый в данный момент раздел карты программы недоступен и раздел карты программы следующего потока TS. действителен.
  • Номер секции: всегда устанавливается равным 0x00 (поскольку поверхность PMT указывает на служебную информацию, а длины секции достаточно).
  • Номер последнего раздела: значение этого поля всегда равно 0x00.
  • PCR PID: PID в транспортном потоке, который содержит допустимое поле PCR в программе.
  • Program info длина: 12-битное поле, первые две цифры — 00. В этом поле указывается байт, за которым следует запись информации о программе. число.
  • Stream тип: 8-битное поле, указывающее тип пакета программного элемента конкретного PID. PID здесь задается элементарно PID указано. поверхность, показанная ниже, соответствует соответствующему типу исходного потока。

Тип исходного потока

1.5.PS трансляция программы

Для потоков PS каждый заголовок пакета PES содержит PTS и DTS, коды идентификации потока, которые используются для различения ES с различными свойствами. Пакеты PES затем мультиплексируются в пакеты PS через мультиплексор PS. Фактически пакет PES разбивается на более мелкие пакеты PS. Во время декодирования демультиплексор разлагает PS на пакеты PES, а распаковщик затем разлагает пакеты PES на видео и аудио ES и, наконец, вводит их в соответствующие декодеры для декодирования. Один вопрос: Как обеспечить синхронизацию видео и звука при декодировании каждого ES? Помимо взаимодействия между PTS и DTS, еще одним важным параметром является SCR (системная тактовая частота). Во время кодирования PTS, DTS и SCR генерируются STC (системными часами времени). Во время декодирования STC восстанавливает и использует локальную фазу SCR и вводит ее через контур фазовой автоподстройки частоты (мгновенная фаза SCR). lock сравнивается, чтобы определить, синхронизирован ли процесс декодирования. Если он не синхронизирован, этот мгновенный SCR используется для настройки локальной тактовой частоты 27 МГц. Наконец, PTS, DTS и SCR работают вместе, чтобы решить проблему одновременного воспроизведения видео и аудио. Отрывок в формате PS выглядит следующим образом:

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

2.Технология кодирования MPEG-4

ссылка:«Точки знания кодека MPEG-4видео»

2.1.Обзор MPEG-4

MPEG-4 означает «Группа экспертов по движущимся изображениям 4». Это набор стандартов кодирования сжатия аудио- и видеоинформации. Он установлен «Группой экспертов по движущимся изображениям» при Международной организации по стандартизации (ISO) и Международной электротехнической комиссии. (IEC Group (MPEG), первая версия была принята в октябре 1998 года, а вторая версия — в декабре 1999 года. Формат MPEG-4 в основном используется для потоковой передачи онлайн, оптических дисков, передачи голоса (видеотелефония) и телевещания.

Хотя H.264 — это стандарт кодека нового поколения.,Стремясь к более высокой эффективности кодирования и лаконичной форме выражения поверхности,Также предлагает очень хорошее качество видео.,На данный момент это самый эффективный метод сжатия видео.,Однако из-за внедрения различных новых технологий кодирования в H.264,Это приводит к резкому увеличению вычислительной нагрузки кодека.,Не идеально подходит для систем кодеков на базе портативных и беспроводных устройств.,В сравнении,На основе простой архитектуры(Simple Профиль, SP) и MPEG-4 Стандарт SP очень подходит для таких систем.

Особенности MPEG-4:

  • (1) Для разных объектов можно использовать разные алгоритмы кодирования, тем самым дополнительно повышая эффективность сжатия;
  • (2) Объекты относительно независимы, что улучшает возможность повторного использования мультимедийных данных;
  • (3) Разрешить пользователям управлять отдельными объектами, обеспечивая беспрецедентную интерактивность;
  • (4) Позволяет гибко распределять скорости кода между различными объектами. Важным объектам можно выделить больше байтов, а второстепенным — меньше, что позволяет добиться более высокой производительности при низких скоростях кода.
  • (5) Видеообъекты с естественным звуком и видеообъекты с синтетическим звуком могут быть легко интегрированы.

MPEG-4: Выдающейся особенностью стандарта MPEG-4 является работа на основе контента, доступ и передача аудио- и видеоданных. Стандарт MPEG-4 представляет собой открытую, гибкую и расширяемую структурную форму. В любое время можно добавлять новые эффективные шаблоны алгоритмов, а декодеры можно настраивать на месте в соответствии с требованиями различных приложений.

По сравнению с MPEG-1, MPEG-2 и H.264, MPEG-4 уделяет больше внимания интерактивности и гибкости мультимедийных систем. Наиболее существенным отличием является то, что он использует концепцию объектно-ориентированного кодирования, то есть во время кодирования сцена делится на несколько видео- и аудиообъектов, которые связаны между собой во времени и пространстве, и кодируются отдельно и мультиплексируются перед передачей на устройство. Принимающая сторона декодирует разные объекты отдельно. Наконец, синтезируйте необходимое видео и аудио. Это облегчает различное кодирование и операции с разными объектами, а также способствует интеграции разных типов данных.

Он не только поддерживает мультимедийную связь со скоростью передачи данных ниже 64 кбит/с, но также поддерживает видеоприложения вещательного и телевизионного уровня. MPEG-4 будет широко использоваться в цифровом телевидении, динамических изображениях, мультимедийном мониторинге в реальном времени, мультимедийных системах, основанных на хранении и поиске контента, визуальных играх, видеоконференциях на основе моделей лица, интерактивных мультимедийных приложениях, студийном телевидении и т. д. Продвижение Окончательная интеграция трех основных сетей телекоммуникаций, компьютеров, радио и телевидения станет основным направлением стандартов сжатия в будущем.

MPEG-4 может использовать разные инструменты кодирования и декодирования для разных приложений, а также предлагает концепцию профиля. Класс — это подмножество набора инструментов, которые могут реализовать определенную функцию MPEG-4. Профиль позволяет пользователям выбирать и использовать соответствующие инструменты MPEG-4 в соответствии со своими потребностями, и при построении декодера нет необходимости готовить соответствующие алгоритмы декодирования для всех алгоритмов кодирования, используемых в MPEG-4.

MPEG-4Стандарт определяет многиевизуальные инструменты,Каждый инструмент выполняет работу по кодированию. Каждый класс имеет свой набор поддерживаемых инструментов.,Адаптироваться к использованию в различных средах。Simpile профиль в основном использует следующие видеоинструменты:

i.Iкодирование кадра(I-VOP),внутреннийVOP:Кодируйте только свою собственную информацию。MPEG-4Стандарт будет8Область пикселей 8 становится блоком, а 1616Область пикселя называется макроблоком.(macroblock)。IЕсть толькоintraкусок,Блоки **intra** сжимаются только внутри кадра. I-кадр — это независимый кадр, служащий основой для прогнозирования.,Имеет меньшую степень сжатия.

ii.Pкодирование кадра(P-VOP),Односторонний прогнозируемый VOP: Он кодируется с использованием технологии компенсации движения, основанной на расположенном перед ним VOP. P-кадр содержит внутриблочный и межблочный, P-кадр интер (межкадровый) Блок использует изображение перед этим кадром в качестве опорного значения для выполнения прогнозирования движения. из-за использования Одностороннее прогнозирование движения,PКадры могут иметь умеренную степень сжатия.。MPEG-4видео Есть еще один видБ-кадр(Двустороннее предсказаниеVOP,B-VOP),Прогнозирование двунаправленного движения с использованием двух изображений из прошлого и будущего,Можно получить более высокую степень сжатия,Но его расчетная сумма также является самой большой среди трех типов кадров. Простой профиль не поддерживает B-каркасы.

Четвертая категорияVOP (Плоскость видеообъекта):внутреннийVOP(I-VOP)、Односторонний прогнозируемый VOP (P-VOP)、Двунаправленный прогнозируемый VOP (B-VOP)、Панорамный ВОП (С-ВОП).

iii. Прогнозирование переменного/постоянного тока. Прогнозирование AC/DC выполняется на блочной основе. Поскольку данные изображения имеют пространственную корреляцию, при внутриблочном кодировании значение компонента DC/AC (AC/DC) верхнего левого блока изображения после преобразования DCT может использоваться для прогнозирования значения компонента DC/AC нижнего правого блока. .

iv.разделение данных(Data Partition)。существоватьвидео При кодировании данных,Закодированные данные можно разделить на текстуры,Три части: вектор движения и управляющее слово. на принимающей стороне,Ошибки в управляющих словах оказывают наибольшее влияние на декодирование.,вектор движения секунда,Текстура оказывает минимальное влияние. Поскольку для кодирования каналов,Хорошая помехоустойчивость означает введение большей избыточности в поток кода. так,Если источник данных закодирован, разделите эти три части.,Используйте разные методы кодирования канала соответственно,Это может максимально улучшить помехоустойчивость при передаче с низкой полосой пропускания.

v. Обратный VLC (обратный VLC). Для обычного кодирования VLC,Если в потоке кода есть ошибка,Никакие последующие данные не могут быть декодированы. Поверхность обратного кода VLC специально разработана.,Декодирование может осуществляться и в обратном направлении. так,Если возникает ошибка во время передачи данных в инвертированном кодировании VLC,Может декодировать вперед с конца потока кода VLC.,Решайте до тех пор, пока не ошибетесь,Таким образом, можно успешно восстановить больше потоков кода. Инвертированный VLC повышает помехоустойчивость кодирования,Но за это приходится платить более низкой эффективностью кодирования, чем у обычного VLC.

vi. короткая голова header)。MPEG-4существовать В процессе кодирования в качестве завершения кодового потока добавляется множество управляющих слов.。Если используется короткая головка,Многие управляющие слова будут опущены.,Декодер будет декодировать в соответствии с фиксированной конфигурацией протокола. Короткие заголовки жертвуют некоторой гибкостью кодирования.,В обмен на эффективность и скорость кодирования.

Декодирование MPEG-4 — это процесс вызова соответствующих инструментов для управления кодовым потоком на основе управляющей информации в кодовом потоке.

2.2. Различные части MPEG-4.

MPEG-4 состоит из ряда подстандартов.,позвонил в министерство,Включает следующие разделы. Для медиакодеков,фокуссосредоточиться наPart2,Part 3,Part 10Часть 1 (ИСО/МЭК 14496-1): Система   Описывает метод синхронизации и микширования видео и аудио (мультиплексирование, сокращенно MUX). Определяет формат контейнера MP4 и поддерживает интуитивно понятные и интерактивные функции, такие как меню DVD. Часть 2 (ИСО/МЭК 14496-2): Видео   Определяет кодек для различной визуальной информации, включая видео, неподвижные текстуры, компьютерную графику и многое другое. Для видеочасти одним из наиболее часто используемых «Профилей» является «Расширенный». Simple Profile (ASP), например, кодировка XviD принадлежит MPEG-4Part 2. Включая 3ivx, DivX4/Project Mayo,DivX 5,Envivio,ffmpeg/ffds,pegable,Nero Digital, QuickTime, Sorenson, XviD и другие распространенные видеоформаты. Важно отметить, что Divx 3.11,MS MPEG-4, RV9/10, VP6 и WMV9 не относятся к стандартному стандарту MPEG-4. Часть 3 (ИСО/МЭК 14496-3): Аудио   Определяет набор кодеков для кодирования различных аудиосигналов. Включает расширенное кодирование звука (расширенное Audio Кодировка, сокращенно AAC) Несколько вариантов и других инструментов кодирования аудио/речи. То есть аудиостандарты AAC, включая LCAAC, HE AAC и т. д. поддерживают кодирование каналов 5.1, что позволяет добиться лучших результатов при более низкой скорости передачи данных (по сравнению с MP3, OGG и т. д.). Часть 4 (ИСО/МЭК 14496-4): Консистенция   Определены процедуры тестирования соответствия других частей настоящего стандарта. Часть 5 (ИСО/МЭК 14496-5): Справочное программное обеспечение   Программное обеспечение предоставляется для демонстрации функций и иллюстрации функций других частей настоящего стандарта. Часть 6 (ИСО/МЭК 14496-6): Структура интеграции передачи мультимедиа.   Это DMIF: Доставка Multimedia Integration Framework Часть 7 (ИСО/МЭК 14496-7): Оптимизированное эталонное программное обеспечение.   Приводятся примеры оптимизированных реализаций (здесь реализация относится к части 5). Часть 8 (ИСО/МЭК 14496-8): Передается по IP-сети.   Определяет способ передачи контента MPEG-4 по IP-сетям. Часть 9 (ИСО/МЭК 14496-9): Эталонное оборудование.   Решения по проектированию аппаратного обеспечения предназначены для демонстрации того, как функции других частей настоящего стандарта могут быть реализованы в аппаратном обеспечении. Часть 10 (ИСО/МЭК 14496-10): Расширенное кодирование видео, также известное как ITU. H.264, часто пишется как H.264/AVC.   Или называется Advanced Video Coding (Расширенное кодирование видео). Video Кодирование, сокращенно AVC): определяет видеокодек (кодек), AVC и XviD оба относятся к кодировке MPEG-4, но поскольку AVC принадлежит к MPEG-4Part 10. По техническим характеристикам лучше MPEG-4. XviD Part2 нуждается в доработке. С технической точки зрения это то же самое, что и ITU-T. Стандарт H.264 является последовательным, поэтому он называется MPEG-4. AVC/H.264。 Часть 11 (ИСО/МЭК 14496-11): Описание сценария и механизм приложения.   Интерактивные медиа доступны для нескольких профилей, включая версии 2D и 3D. Пересмотренный MPEG-4 Part 1:2001 и две редакции Части 1. Он определяет механизм приложения (доставка, жизненный цикл, формат, поведение загружаемых приложений с байт-кодом Java), формат двоичного сценария. (BIFS:Binary Format for Сцена), расширяемый текстовый формат MPEG-4 (текстовый формат, использующий XMLописывать мультимедийный контент MPEG-4), описание поверхности системного уровня. Это MPEG-4 BIFS, XMT, MPEG-J в части 21. Часть 12 (ИСО/МЭК 14496-12): формат медиафайлов на основе ISO.   Определяет формат файла для хранения медиаконтента. Часть 13 (ИСО/МЭК 14496-13):IP   Управление и защита интеллектуальной собственности (IPMP) for Intellectual Property Management and Защита) расширение. Часть 14 (ИСО/МЭК 14496-14): формат файла MPEG-4.   Определяет формат видеофайла для хранения контента MPEG-4 на основе части 12. Часть 15 (ИСО/МЭК 14496-15): формат файла AVC.   Определяет формат файла на основе Части 12 для хранения видеоконтента Части 10. Часть 16 (ИСО/МЭК 14496-16): Расширение платформы анимации (AFX : Animation Framework eXtension)。 Часть 17 (ИСО/МЭК 14496-17): формат синхронизированных текстовых субтитров. Часть 18 (ИСО/МЭК 14496-18): Сжатие и потоковая передача шрифтов (для общедоступных форматов шрифтов). Часть 19 (ИСО/МЭК 14496-19): Поток синтезированного материала (Синтезированный Texture Stream)。 Часть 20 (ИСО/МЭК 14496-20): Простое представление поверхности сцены (LASeR: Lightweight Scene Representation)。 Часть 21 (ИСО/МЭК 14496-21): расширение MPEG-J для рендеринга (рендеринг). Часть 22 (ИСО/МЭК 14496-22): Открытый формат шрифта (Открытый Font Format)。 Часть 23 (ИСО/МЭК 14496-23): Символическая музыкальная поверхность. Music Representation)。 Часть 24 (ИСО/МЭК 14496-24): Звук и взаимодействие с системой (Аудио and systems interaction)。 Часть 25 (ИСО/МЭК 14496-25): Модель сжатия 3D-графики (3D Graphics Compression Model)。 Часть 26 (ИСО/МЭК 14496-26): Проверка целостности звука.   Определите тестовые аудиоданные с помощью ISO/IEC 14496-3 Последовательен ли метод (Аудио conformance)。 Часть 27 (ИСО/МЭК 14496-27): проверка целостности 3D-графики.   Определите тестовые трехмерные графические данные с помощью ISO/IEC. 14496-11:2005, ISO/IEC 14496-16:2006, ISO/IEC 14496-21:2006 и ISO/IEC. 14496-25:2009 Согласован ли метод (3D Graphics conformance)。

2.3.Иерархия MPEG-4

Давайте сначала проанализируем его иерархическую структуру. Ее можно разделить на 5 уровней (соответствующая картина очень ясна):

  • (1) последовательность видеообъектов VOS.
  • (2)VO (Видеообъект): видеообъект,это объект в сцене,В простейшем случае это прямоугольная коробка.,у него есть срок жизни,Он состоит из множества кадров, последовательных во времени.
  • (3) VOL (слой видеообъекта): слой видеообъекта.,На этом уровне кодируются три атрибутивные данные VO.,Этот слой в основном используется для расширения временного и пространственного разрешения ВО.,Реализация разделена на кодировки.
  • (4) GOV: группа плоскостей видеообъектов,От видео Плоское портфолио,является необязательным ингредиентом. Слой видеообъектов может быть напрямую объединен с помощью VOP,Он также может состоять из GOV.
  • (5) VOP (плоскость видеообъекта): плоскость видеообъекта.,Это можно рассматривать как выборку ВО в определенный момент.,Это один кадр озвучки.

В MPEG-4 представлен видеообъект VO (Видео Объект), поддерживающая интерактивные функции на основе контента и иерархическое расширение (классификация в воздушной области, классификация во временной области). Видеообъектом может быть любая область видеосцены, а время его существования может быть сколь угодно большим. Видео объектная плоскость ВОП (Видео Object Plane)дав каждый конкретный моментвидеообъект。Таким образом, сцена в каждом кадре последовательности изображений,Рассматривается как состоящий из VOP разных плоскостей видеообъектов.,тот же объектнепрерывныйVOPназываетсяVO。видеообъект Можетдавидео Люди или конкретный пейзаж в эпизоде,как диктор в телевизионных новостях,Или движущаяся машина по телевизору, это также может быть двухмерная или трехмерная графика, синтезированная с помощью компьютерных технологий.

Процесс кодирования и декодирования MPEG-4 выполняется на VOP. Таким образом, входная видеопоследовательность может быть разделена на несколько видеообъектов посредством анализа.,V0P формируется после кодирования одного и того же ВО. Кодирование VOP использует принципы кодирования, аналогичные принципам предыдущего стандарта MPEG: такие алгоритмы, как DCT и оценка движения. Поскольку V0P может иметь любую форму,Следовательно, система кодирования должна обрабатывать информацию о форме.,Это сильно отличается от традиционного стандарта кодирования видео, который может обрабатывать только прямоугольные последовательности кадров. В MPEG-4,Прямоугольные рамки считаются частным случаем V0P.,В это время системе кодирования не требуется обрабатывать информацию о форме.,Переродился во что-то похожее на MPEG. 2м. 263 традиционное кодирование видео.

Потоки кода MPEG4 часто начинаются следующим образом:

Язык кода:javascript
копировать
00 00 01 B0 F5 00 00 01 B5 09 00 00 01 00 00 00
01 20 08 86 84 00 3F 18 58 21 20 A3 1F 00 00 01
B2 58 76 69 44 30 30 36 32 00 00 01 B6

Согласно стандарту, определение выглядит следующим образом:   00 00 01 B0 — это метка начала последовательности видеообъекта (VISOBJSEQ_START_CODE), а последующие данные имеют только один бит F5. Поверхность указывает, что типы профиля и уровня этой последовательности кодирования видеообъекта — XVID_PROFILE_AS_L4. Значения типа профиля определены в xvid.h.   00 00 01 B5 — это флаг начала видеообъекта (VISOBJ_START_CODE), за которым следует только одно шестнадцатеричное значение 09. Из этого бита данных можно получить номер версии видеообъекта, информацию о типе видео и типе видеосигнала.   00 00 01 00 — флаг начала видеообъекта (VIDOBJ_START_CODE), 00 00 01 20 — это флаг начала слоя видеообъекта (VIDOBJLAY_START_CODE), а последующие 11-битные шестнадцатеричные данные более важны. Соотношение сторон VOP, форма видеообъекта, разрешение изображения и другие данные, необходимые для декодирования, получаются из этих 11-битных данных. .   00 00 01 B2 — это флаг начала пользовательских данных (USERDATA_START_CODE), имеется 8 бит шестнадцатеричных пользовательских данных.   00 00 01 B6 — это метка начала VOP (VOP_START_CODE). Каждые закодированные данные VOP начинаются с заголовка идентификации VOP. Если используется шестнадцатеричная поверхность данных, значение равно 00. 00 01 Б6. При декодировании используйте 00 00 01 B6 определяет, является ли это началом VOP, и считывает тип кодирования, значение квантования и другие параметры из данных после заголовка VOP, чтобы завершить декодирование кадра VOP. Сразу за VOP идет 2-битный Знак используется для обозначения того, является ли данный Фрейм I Frame,P Frame,B Рамка или S Frame(GMS-VOP)。   Признаки следующие:        00: I Frame        01: P Frame        10: B Frame        11: S Frame   00 00 01 Два старших бита следующего байта после b6, 00поверхность указывают на I. frame, 01поверхность ПоказыватьP рама, 10 поверхностей ПоказыватьB рамка. Просто объяснить это можно картинкой. На картинке ниже начинается первый VOS, а второй — I. Frame:

Технология кодирования 3.H.264

3.1.H.264 Обзор

Существуют две международные организации, которые разрабатывают технологии кодирования и декодирования видео. Одна из них — «Международный союз электросвязи (ITU-T)», которая разрабатывает такие стандарты, как H.261, H.263, H.263+ и т. д., и Другой - «Международный союз электросвязи (ITU-T)». Организация по стандартизации (ISO). Она разработала такие стандарты, как MPEG-1, MPEG-2, MPEG-4 и т. д. H.264 — это совместная группа по видео (JVT, Joint), созданная совместно двумя организациями (Группа экспертов по кодированию видео ITU-T (VCEG) и Группа экспертов по движущимся изображениям ISO/IEC (MPEG)). Video Это стандарт цифрового видеокодека с высокой степенью сжатия, совместно разработанный группой ITU-T, поэтому он одновременно является стандартом H.264 ITU-T и стандартом усовершенствованного кодирования видео MPEG-4 ISO/IEC (Advanced Video Coding). Video Кодирование, AVC) 10 место часть. Поэтому будь то MPEG-4 AVC、MPEG-4 Part 10 или ИСО/МЭК 14496-10, все относятся к H.264.   Каждая основная часть стандарта H264 включает в себя Access Unit разделитель (разделитель единицы доступа), SEI (дополнительная информация расширения), первичный coded изображение (базовое кодирование изображения), избыточное Coded Изображение (избыточное кодирование изображения). И мгновенное Decoding Обновление (IDR, мгновенное обновление декодирования), гипотетическое Reference Декодер (HRD, гипотетическое эталонное декодирование), Гипотетический Stream Планировщик (HSS, гипотетический планировщик потоков). Преимущества:   (1) Низкая скорость кода (Низкая Bit Скорость): и MPEG2 и MPEG4 По сравнению с ASP и другими технологиями сжатия при том же качестве изображения объем данных, сжатых с помощью технологии H.264, составляет всего 1/8 от MPEG2 и 1/3 от MPEG4.   (2) Высококачественные изображения: H.264 обеспечивает непрерывное, плавное изображение высокого качества (качество DVD).   (3) Высокая отказоустойчивость: H.264 предоставляет необходимые инструменты для устранения таких ошибок, как потеря пакетов, которые легко возникают в нестабильных сетевых средах.   (4) Высокая сетевая адаптируемость: H.264 обеспечивает уровень сетевой абстракции (сетевой уровень). Abstraction Layer), позволяющий легко передавать файлы H.264 в различных сетях (таких как Интернет, CDMA, GPRS, WCDMA, CDMA2000 и т. д.).   Самым большим преимуществом H.264 является высокая степень сжатия данных. При тех же условиях качества изображения степень сжатия H.264 более чем в 2 раза выше, чем у MPEG-2, и в 1,5–2 раза выше, чем у MPEG-4. Например, если размер исходного файла составляет 88 ГБ, он становится 3,5 ГБ после сжатия с использованием стандарта сжатия MPEG-2 со степенью сжатия 25:1 и становится 879 МБ после сжатия с использованием стандарта сжатия H.264. от 88 ГБ до 879 МБ. Степень сжатия H.264 достигает поразительного показателя 102:1. Низкая скорость кода (Low Bit Скорость) играет важную роль в высокой степени сжатия H.264, а также MPEG-2 и MPEG-4. По сравнению с ASP и другими технологиями сжатия, технология сжатия H.264 значительно сэкономит пользователям время загрузки и стоимость трафика данных. Особо стоит отметить, что H.264 не только имеет высокую степень сжатия, но также обеспечивает высококачественное и плавное изображение. Благодаря этому видеоданные, сжатые с помощью H.264, требуют меньшей пропускной способности при передаче по сети.   H.264/AVC может работать на различных скоростях и широко используется в службах потоковой передачи мультимедиа, видео по запросу, видеоиграх и мобильных мультимедийных коммуникациях с низкой скоростью передачи данных в Интернете/интранете. (видео Мобильные телефоны и т. д.), интерактивные мультимедийные приложения, мультимедийный мониторинг в реальном времени, цифровое телевидение и студийное телевидение, виртуальные видеоконференции и т. д. имеют тенденцию доминировать в вышеуказанных областях и имеют очень широкие перспективы развития и применения.

3.2.Анализ формата кодирования H.264

3.2.1.Пояснение терминов

(1) Поле и кадр: Поле или кадр видео можно использовать для создания кодированного изображения. В телевидении для уменьшения мерцания большой площади кадр делится на два переплетающихся поля. (2) Срез: в каждом изображении несколько макроблоков расположены в виде срезов. Фильмы делятся на фильмы I, фильмы B, фильмы P и некоторые другие фильмы. Слайс I содержит только макроблоки I, срез P может содержать макроблоки P и I, а срез B может содержать макроблоки B и I.

  • Макроблоки используют декодированные пиксели из текущего слайса в качестве эталонов для внутреннего предсказания.
  • Макроблок P использует ранее закодированное изображение в качестве опорного изображения для внутреннего предсказания.
  • Макроблоки B используют двунаправленные опорные изображения (предыдущий кадр и следующий кадр) для внутрикадрового предсказания.

Назначение срезов — ограничить распространение и передачу битовых ошибок, чтобы срезы кодирования были независимы друг от друга.   При прогнозировании определенного фрагмента нельзя использовать макроблоки в других фрагментах в качестве опорных изображений, чтобы ошибка прогнозирования в определенном фрагменте не распространялась на другие фрагменты.   (3) Макроблок: кодированное изображение обычно делится на несколько макроблоков. Макроблок состоит из яркостного пикселя размером 16×16 и дополнительного пикселя 8×8. Cb и 8×8 Состоит из блоков пикселей цвета Cr.   (4) Связь между данными: В структуре H.264 закодированные данные видеоизображения называются кадром. Кадр состоит из одного фрагмента (среза) или нескольких фрагментов. Слайс состоит из одного или нескольких макроблоков (МБ). Макроблок состоит из 16 составных фрагментов. данных ×16 юв. Макроблок — это базовая единица кодирования H264.   (5) Три разные формы данных в процессе кодирования H264:     ① Битовая строка данных SODB -->Самые оригинальные закодированные данные, то есть данные VCL;     ② RBSP Полезная нагрузка необработанной последовательности байтов --->Конечный бит (RBSP) добавляется после SODB trailing биты: один бит «1», несколько бит «0») для выравнивания байтов;     ③ EBSP Полезная нагрузка расширенной последовательности байтов —- > существоватьRBSPПо сути, добавляется ложный проверочный байт.(0X03)это причинада:существоватьNALUдобавить вAnnexbВовремя,Перед каждой группой NALU необходимо добавлять стартовый код StartCodePrefix.,Если срез, соответствующий NALU, является началом кадра, 4-битная байтовая поверхность используется для обозначения 0x00000001.,В противном случае 3-битная байтовая поверхность используется для представления 0x000001 (который является частью кадра). кроме того,Чтобы предотвратить включение в тело NALU стартового кода, конфликтующего с,во время кодирования,Каждый раз, когда встречаются два байта, они равны 0.,Просто вставьте байт 0x03. Удалите 0x03 при декодировании. Также называется операцией обстрела.

3.2.2.Режим инкапсуляции H.264

Кодовый поток H.264 разделен на два формата: Приложение-B и AVCC.

Формат AVCC:также называетсяAVC1Формат,формат MPEG-4,Выравнивание байтов,поэтомутакже называетсяByte-Stream Формат. для mp4/flv/mkv, VideoToolbox。 Формат Приложения-B:также называетсяMPEG-2 transport stream формат формата (формат ts), Формат ElementaryStream.

Есть два различия: одно — организационный формат наборов параметров (SPS, PPS), другое — разделение;

  • Annex-B:использоватьstart разделенный кодом NAL(начало Код — три байта или четыре байта, 0x000001 или 0x00000001, обычно в заголовке поточно (то есть в ES) записываются SPS и PPS;
  • AVCC:использоватьNALUдлина(фиксированные байты,Обычно4 байта)отдельныйNAL;существовать Заголовок содержитextradata(илиsequence заголовок) структура. (дополнительные данные содержат количество разделенных байтов, SPS и PPS, конкретная структура показана ниже) Уведомление: SPS и PPS инкапсулированы в контейнер, и каждому кадру предшествует длина заголовка SPS — 0x67, а заголовка PPS — 0x68. Это необходимо для обеспечения чувствительности к данным.

(1)Annex B

(2)extradata

1> H.264/AVC extradata грамматика

Ссылка: «Структурированное видео модуля NAL ISO/IEC 14496-15». Структура AVCDecoderConfigurationRecord: (минимальная длина 7 байтов).

MPEG-4 Part 15 “Advanced Video Coding (AVC) file format” section 5.2.4.1 Положения заключаются в следующем:

Язык кода:javascript
копировать
aligned(8) class AVCDecoderConfigurationRecord { 
 
unsigned int(8) configurationVersion = 1; 
unsigned int(8) AVCProfileIndication; 
unsigned int(8) profile_compatibility; 
unsigned int(8) AVCLevelIndication;  
bit(6) reserved = ‘111111’b;
unsigned int(2) lengthSizeMinusOne;  
bit(3) reserved = ‘111’b;
unsigned int(5) numOfSequenceParameterSets; 
for (i=0; i< numOfSequenceParameterSets;  i++) { 
 
unsigned int(16) sequenceParameterSetLength ; 
bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnit; 
} 
unsigned int(8) numOfPictureParameterSets; 
for (i=0; i< numOfPictureParameterSets;  i++) { 
 
unsigned int(16) pictureParameterSetLength; 
bit(8*pictureParameterSetLength) pictureParameterSetNALUnit; 
} 
}

Примечание. В FFmpeg анализ дополнительных данных см. в ff_h264_decode_extradata().

Уведомление: Последние 2 бита 5-го байта поверхности представляют собой NAL. Количество байт размера. В формате AVCC каждому NAL будет предшествовать NAL. поле размера. НАЛ размер может быть 1 байт, 2 байта или 4 байта (чаще встречается 4 байта). Важной целью анализа дополнительных данных является подтверждение этого значения. (А формат Приложения-B требует разделения NAL, просто определите 0x000001)

2> H.264 extradata Пример (формат AVCC)

Язык кода:javascript
копировать
extradata    Как указано выше
extrasize    47
05| FF          NAL size:  4 байта
06| E1          SPS num:   1
07| 00 1F       SPS size:  31 байт
09| 67          NAL type:  SPS
40| 01          PPS num:   1
41| 00 05       PPS size:  5 байт
42| 68          NAL type:  PPS
3.2.3.H.264/AVC Структурный анализ

H.264 разделен на два уровня с иерархической точки зрения: уровень кодирования видео (VCL, Video Coding уровень) и уровень сетевого извлечения (NAL, Network Abstraction Слой). VCL выводит исходный битовый поток данных (SODB, String of data бит), поверхность показывает фактический исходный поток двоичного кода после завершения кодирования элемента грамматики H.264. SODB обычно не может гарантировать выравнивание байтов, поэтому его необходимо дополнить исходной загрузкой последовательности байтов (RBSP, Raw Byte Sequence Полезная нагрузка). Уровень NAL фактически представляет собой конечный выходной поток кода H.264. Он состоит из NALU. Каждый NALU включает в себя набор информации заголовка NAL, соответствующей данным кодирования видео, и исходную загрузку последовательности байтов (RBSP, Raw). Byte Sequence Полезная нагрузка). Связь между вышеуказанными существительными следующая:

Язык кода:javascript
копировать
RBSP = SODB + RBSP trailing bits
NALU = NAL header(1 byte) + RBSP
H.264 = Start Code Prefix(3 bytes) + NALU + Start Code Prefix(3 bytes) + NALU +…

Таким образом, структура потока кода H.264 выглядит следующим образом:

Иерархия потоков кода h.264:

Кодер помещает каждый NALU в группу независимо и полностью. Поскольку группы имеют заголовки, декодер может легко обнаружить границы NALU и по очереди извлечь NALU для декодирования. Каждый NALU разделен стартовым кодом (Start Code префикс) разделены, стартовый код делится на два типа: 0x000001 (3 bytes)or 0x00000001(4 байт), декодер обнаруживает каждый стартовый код как начальный идентификатор NALU. Когда обнаруживается следующий стартовый код, текущий NALU завершается. если НАЛУ Соответствующий фрагмент это начало кадра, используйте 4 Байтовое отображение поверхности, то есть 0x00000001, в противном случае используйте 3; Байт поверхности, 0x000001. NALU разработал механизм предотвращения конфликтов для начального кода. Если кодировщик обнаруживает, что данные NALU содержат 0x000000, 0x000001, 0x000002 или 0x000003, кодер вставит новый байт 0x03 перед последним байтом следующим образом: 0x00 00 00 -> 0x00 00 03 00 0x00 00 01 -> 0x00 00 03 01 0x00 00 02 -> 0x00 00 03 02 0x00 00 03 -> 0x00 00 03 03   Когда декодер обнаруживает 0x000003, он отбрасывает 03 и восстанавливает исходные данные (операция распаковки). При декодировании декодер сначала считывает данные NALU побайтно, подсчитывает длину NALU, а затем начинает декодирование.

3.2.4.Декодирование H.264/AVC

NALU — это кадр закодированных данных. Каждая единица NAL представляет собой байтовую строку переменной длины, состоящую из определенных элементов грамматики.,Включает один байт информации заголовка (используется для указания типа данных).,и несколько целочисленных байтов данных загрузки。одинNALединица Может携带одинкусок кода、A/B/Cформаразделение данные или последовательность или Набор параметров изображение. Заголовок NALU используется для определения типа данных следующего RBSP, будут ли на него ссылаться другие кадры и есть ли ошибки при передаче по сети. Процесс работы блока декодирования NAL выглядит следующим образом:

(1)NAL заголовок представляет собой байт (длина = 1byte): forbidden_bit(1bit) + nal_reference_bit(2bit) + nal_unit_type(5bit)   ① запрещенный_бит: Запрещенный бит, первоначально 0. Когда сеть обнаруживает, что в блоке NAL имеется битовая ошибка, она может установить этот бит в 1, чтобы получатель мог исправить ошибку или отбросить блок.   ② nal_reference_bit: индикатор важности nal, обозначающий важность блока NAL. Диапазон значений: чем больше значение, тем оно важнее. Когда декодер не может его декодировать, он может отбросить NALU с важностью 0. . H.264 предусматривает, что если текущий NALU представляет собой набор параметров последовательности, параметр изображения и т. д., значение должно быть больше 0. Например, когда nal_unit_type равен 5, nal_reference_bit больше 0; когда nal_unit_type равен 6, 9, 10, 11 или 12, nal_reference_bit равен 0.

Важность различных типов NALU указана ниже на поверхности.

Nal_unit_type

Тип НАЛ

Nal_reference_bit

0

Не используется

0

1

Фильмы без IDR

Если этот фильм принадлежит кадру отсчета, он не равен 0. Если он не принадлежит кадру отсчета, он равен 0.

2

Раздел фрагментных данных A

То же, что и выше

3

Раздел данных среза B

То же, что и выше

4

Срез данных раздела C

То же, что и выше

5

часть изображения РДЭ

5

6

Дополнительный информационный блок по усовершенствованию (SEI)

0

7

набор параметров последовательности

не-0

8

Набор параметров изображения

не-0

9

разделитель

0

10

конец последовательности

0

11

Конец потока кода

0

12

наполнение

0

13…23

бронировать

0

24…31

Нетбронировать

0

Так называемый опорный кадр — это кадр, на который необходимо ссылаться при декодировании других кадров. Например, на I-кадр может ссылаться один или несколько B-кадров, а на B-кадр может ссылаться P-кадр.   Из этой поверхности мы также можем видеть, что I-кадр DIR очень важен. Если он потерян, все кадры в этой последовательности не могут быть декодированы; параметров последовательностии Набор параметров изображение тоже важно, никакого набора параметров по последовательности кадры этой последовательности не могут быть решены без Набора; параметров изображения, затем используйте этот Набор параметров Даже рамки изображения не могут быть решены.   ③ nal_unit_type: значение типа NALU следующее:

Nal_unit_type

Тип НАЛ

C

0

Не используется

1

Фрагменты в образах без IDR, в которых не используется секционирование данных.

2,3,4

2

Сегментация данных класса A в изображениях, отличных от IDR

2

3

Сегментация данных класса B в изображениях без IDR

3

4

Сегментация данных класса C в изображениях без IDR

4

5

часть изображения РДЭ

2,3

6

Дополнительный информационный блок по усовершенствованию (SEI)

5

7

набор параметров последовательности

0

8

Набор параметров изображения

1

9

разделитель

6

10

конец последовательности

7

11

Конец потока кода

8

12

наполнение

9

13…23

бронировать

24…31

Без бронирования (будет использоваться при RTP-упаковке)

Тип расширения при упаковке RTP

24

STAP-A

Single-time aggregation packet

25

STAP-B

Single-time aggregation packet

26

MTAP16

Multi-time aggregation packet

27

MTAP24

Multi-time aggregation packet

28

FU-A

Fragmentation unit

29

FU-B

Fragmentation unit

30-31

undefined

Требования к заказу НАЛУ:   Стандарт H.264/AVC предъявляет строгие требования к порядку блоков NAL, отправляемых в декодер. Если порядок блоков NAL сбивает с толку, их необходимо реорганизовать в соответствии со спецификацией и отправить в декодер, иначе декодер не сможет декодировать. правильно.   1)набор параметров последовательностиNALединица   Все это необходимо отправить заранее Параметры передаются до обращения к другим блокам NAL, но допускается дублирование набора среди этих блоков NAL. параметров последовательностиNALединица。 Подробное объяснение так называемого повторения: набор параметров по последовательностиNAL блоки имеют свою специализированную идентификацию, если два набора параметров по последовательностиNAL единицы имеют одинаковую идентичность, поэтому можно считать, что последний является просто копией предыдущего, а не новым набором параметров последовательности。   2)Набор параметров изображенияNAL-блок   Это нужно использовать всегда Параметры передаются перед упоминанием других блоков NAL, но между этими блоками NAL допускается дублирование набора. параметров изображенияNAL-блок,Это согласуется с вышеизложеннымнабор параметров Блок последовательностиNAL тот же.   3) Единицы срезов и подразделения данных в различных базовых кодированных изображениях. Единицы раздела не могут пересекаться друг с другом последовательно, то есть не допускается серия блоков слайса и блоков раздела данных, принадлежащих определенному базовому кодированному изображению. Единица раздела внезапно появляется еще один сегмент единицы среза базового кодированного изображения и сегмент единицы раздела данных (данные раздел) единица.   4) Влияние эталонного изображения: если изображение использует другое изображение в качестве эталона, все единицы среза и подразделения данных, принадлежащие первому, раздел) единица должна находиться после фрагментов и фрагментов разделения данных, принадлежащих последнему, будь то базовое кодированное изображение или избыточное кодированное изображение, это правило должно соблюдаться.   5) Все блоки срезов и блоки разделения данных базового кодированного изображения (данные Блок раздела должен находиться между блоком среза и блоком раздела данных, принадлежащим соответствующему избыточному кодированному изображению. раздел) единица раньше.   6) Если в потоке данных имеются последовательные неэталонные изображения с базовым кодированием, изображение с наименьшим порядковым номером будет находиться впереди.   7) Если для произвольного_slice_order_allowed_flag установлено значение 1, то единица среза (среза) и сегмент разделения данных (данные) в базовом кодированном изображении Порядок блоков раздела является произвольным. Если параметр произвольного_slice_order_allowed_flag установлен в ноль, порядок срезов будет определяться в соответствии с положением первого макроблока в срезе. Если используется секционирование данных, фрагменты раздела данных класса A находятся внутри. Фрагменты раздела данных класса B. Ранее фрагменты разделения данных типа B предшествовали фрагментам разделения данных типа C, а фрагменты разделения данных, соответствующие разным фрагментам, не могли пересекаться друг с другом, а также не могли пересекаться с фрагментами без разделения данных.   8) Если имеется блок SEI (дополнительная информация расширения), он должен быть разделен на блоки слайса и данные в соответствующем базовом кодированном изображении. раздел) и ему должны непосредственно предшествовать все блоки слайсов и блоки разделов данных предыдущего базового кодированного изображения. раздел) блок позади. Если SEI принадлежит нескольким базовым кодовым изображениям, порядок основывается только на первом базовом кодовом изображении.   9) Если существует разделитель изображений, он должен быть во всех SEI. блок, все фрагменты базового блока кодированного изображения (срезов) и сегмент разделения данных (данные раздела) и сразу после этих блоков NAL предыдущего базового закодированного изображения.   10) Если существует конец последовательностисимвол,иконец Если после символа последовательности есть изображение, оно должно быть изображением IDR (мгновенного обновления декодера). конец Позиция символа последовательности должна находиться в разделителе SEI, принадлежащем этому изображению IDR. единица перед данными и сразу после единиц NAL предыдущих изображений. Если конец После символа последовательности изображения нет, то есть после всех данных изображения в битовом потоке.   11) Терминатор потока находится в конце битового потока. (2)RBSP Данные RBSP представляют собой одну из следующих поверхностей:

Тип РБСП

аббревиатура

описывать

набор параметров

PS

Глобальная информация о последовательности, такая как размер изображения, формат видео и т. д.

Расширение информации

SEI

видеопоследовательность декодирована Расширение информации

разделитель изображений

PD

границы видеоизображения

кусок кода

SLICE

кусок Информация заголовка и данные кода

разделение данных

Данные среза DP, называемые декодированием с восстановлением ошибок.

конец последовательностисимвол

поверхность указывает на конец последовательности,Следующее изображение — изображение IDR.

Терминатор потока

поверхность указывает, что в потоке больше нет изображений

наполнениеданные

субметаданные,для наполнения байт

Из предыдущего анализа мы знаем,Из уровня VCL выходят закодированные данные видеокадра.,Этими кадрами могут быть кадры I, B, P.,И эти кадры могут принадлежать разным последовательностям,Более того, тот же самыйодин Существует также соответствующий набор последовательностейнабор параметров последовательностиикартинанабор параметры и так далее, поэтому для завершения декодирования видео необходимо передать не только данные видеокадра, закодированные на уровне VCL, но и набор параметров последовательности、Набор параметров изображенияждатьданные。   набор параметров:включатьнабор параметров последовательности SPSи Набор параметров изображения ППС. SPS содержит параметры непрерывно кодируемой видеопоследовательности, например идентификаторы. seq_parameter_set_id, номер кадра и POC Ограничения, количество опорных кадров, размер декодированного изображения, флаг выбора режима кодирования поля кадра и т. д. PPS соответствует определенному изображению или нескольким изображениям в последовательности и его параметрам, таким как идентификаторы. pic_parameter_set_id, необязательно seq_parameter_set_id, флаг выбора режима энтропийного кодирования, количество групп слайсов, начальные параметры квантования и флаг настройки коэффициента фильтра деблокирования и т. д.   разделение данные: закодированные данные, составляющие часть, хранятся в 3 независимых DP (разделение данных, A, B, C), каждый содержит кусок Подмножество кода. Раздел A содержит заголовок слайса и данные заголовка для каждого макроблока в слайсе. Раздел B содержит внутрикадровые и SI Остаточные данные кодирования макроблока слайса. сегментация C содержит остаточные данные кодирования для промежуточных макроблоков. Каждый раздел можно разместить в отдельном NAL единицу и передаются независимо.

4.Технология кодирования VC-1

VC-1 — это Video Codec One (первое решение для декодирования видео). Он произошел от Microsoft Windows Media Video 9. VC-1 — последний признанный формат стандарта кодирования высокой четкости после MPEG-2 TS и H.264. Хотя VC-1 является последним признанным форматом кодирования высокой четкости, благодаря серверной части Microsoft этот формат кодирования нельзя игнорировать. По сравнению с MPEG2, VC-1 имеет более высокую степень сжатия, но по сравнению с H.264 вычисления при кодировании и декодировании немного меньше. В целом, с точки зрения степени сжатия, степень сжатия H.264 выше, то есть то же видео, емкость видео, сжатая алгоритмом кодирования H.264, меньше, чем у VC-1, но VC- Видео формата 1 1 требует меньше усилий по декодированию. Как правило, видео высокой четкости можно просматривать без проблем благодаря высокопроизводительному процессору. В настоящее время VC-1 может стать лучшим балансом. При поддержке Microsoft это должна быть сила, которую нельзя игнорировать. Вообще говоря, VC-1 в основном имеет суффикс «.wmv», но это не является абсолютным. Конкретный формат кодирования все равно необходимо запрашивать с помощью программного обеспечения.

5. Технология кодирования WMV

WMV (Windows Media Video) — собирательное название серии видеокодеков и связанных с ними форматов кодирования видео, разработанных Microsoft. Это часть Microsoft Windows Media Framework. WMV содержит три различных кодека: оригинальная технология сжатия видео WMV, изначально разработанная для приложений потоковой передачи в Интернете в качестве конкурента RealVideo; второй — сжатие экрана WMV и изображения WMV для удовлетворения конкретных потребностей в контенте после стандартизации SMPTE (Society); инженеров кино и телевидения), WMV версии 9 был принят в качестве формата распространения для физических носителей, таких как DVD высокой четкости и Blu-ray Disc, так называемый VC-1. Microsoft также разработала формат цифрового контейнера под названием ASF (Advanced Systems Format) для сохранения кодировки видео WMV. При том же качестве видео файлы формата WMV могут воспроизводиться во время загрузки, поэтому они очень подходят для онлайн-воспроизведения и передачи.

6.Divx, технология кодирования Xvid

Мы также часто можем видеть Divx и Xvid, и их легко спутать.   На самом деле, эти двое имеют много корней. DivX — это формат сжатия цифрового мультимедиа, который сжимает звук видео с помощью технологии MP3, а видео — с помощью технологии MPEG-4. DivX — это формат MPEG-4 от Microsoft. Самая известная технология кодирования видео, основанная на технологии кодирования v3 и широко используемая DVDRipper. Видеофайлы, закодированные с его помощью, не только в максимальной степени восстанавливают исходное качество изображения DVD, но также позволяют выбирать аудио практически во всех форматах. Его видеочасть использует для сжатия технологию Microsoft MPEG-4, а аудиочасть использует MP3. или WMA для сжатия, а затем идеально объедините видео и аудио части в обновленный файл AVI, который представляет собой видео DivX. DivX был впервые создан иностранным компьютерным геймером и хакером. Они активировали и успешно обучили алгоритм сжатия видео MPEG-4 компании Microsoft, а затем переписали его и переименовали в DivX.   XviDдатекущий мирначальствонаиболее часто используемыйвидеокодек(codec),И это первый действительно открытый исходный код,Выпущено под лицензией GPL. Во многих сравнениях кодеков,Поверхность XviD на удивление хороша,Вообще говоря, это на данный момент самый лучший и универсальный кодек. Можно сказать, что XviD находится в том же духе, что и Divx, но был улучшен.

Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета.,Мнения, выраженные в данной статье, принадлежат исключительно автору. Этот сайт предоставляет только услуги по хранению информации.,нет собственности,Никакая соответствующая юридическая ответственность не предполагается. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент,, Пожалуйста, отправьте электронное письмо на Сообщите, после проверки этот сайт будет немедленно удален.

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/192817.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода