Кодирование видео (1): Возможно, наиболее подробное введение в концепции кодирования H.264. Основы аудио и видео |
Кодирование видео (1): Возможно, наиболее подробное введение в концепции кодирования H.264. Основы аудио и видео |

Пиксельная версия картины Винсента Ван Гога «Пшеничное поле и Жнец».

(Основная логика этой статьи: Какова теоретическая основа кодирования видео → Основные концепции, инструменты кодирования, процесс кодирования и структура кодового потока видеокодирования H.264 → Инструменты кодирования H.265 и улучшения → Инструменты кодирования H.266 и улучшения )

То же, что аудиокодирование,видеокодированиесамое важноеизглазизтакжедадля Для выполнения сжатия данных для снижения затрат на передачу и хранение данных

с одной резолюцией 720x1280 (часто говорят 720P), частота кадров 30 fps Например, если видео не кодируется и не сжимается, исходное видео передается или сохраняется напрямую. RGB данные,верноотвечатьиз Скорость кодада:720 * 1280 * 3 * 8 * 30 = 632.8125 Mbps (Ширина * высокий * Количество пикселей в байтах * Байт количество битов * рамкачисло)。одна минутаизчаснеобходимое времяизданныеколичествода:632.8125 Mbps * 60s = 4.63 GB

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

Обычно при сжатии информации можно исходить из следующих аспектов:

  • 1)Источник информации содержит неравномерность вероятности появления символов, так что источник информации может быть сжат.энтропиякодирование Просто используйте источникиз Статистические свойстваруководить Скорость кодасжатиеизкодирование Способ。например, знаменитыйиз Хаффманкодирование(такжедаэнтропиякодированиеиз Что-то вроде),то есть когда источник информации середина Каждый символ из имеет одинаковую вероятность появления часкодирование является наименее эффективным.
  • 2)Источник информации из корреляции позволяет сжимать источник информации да.например, информация A и информация B из Актуальность позволяет нам Зависит из информации A Добавить остатки D(D = A - B) для получения информации Б, это просто кодирование A и D Для достижения сжатия это есть так называемая технология дифференциального кодирования.
  • 3)Люди воспринимают разные источники информации с разной чувствительностью, поэтому источник информации можно сжать.верно Нечувствителен к человеческому восприятиюизчасть информации о прогрессеили Игнорировать все, чтобы добиться сжатия。

При кодировании видео основная задача — изучить избыточную информацию в видеоданных и сжать ее. Видеоинформация в основном включает в себя избыточность в следующих аспектах:

  • пространственная избыточность:существовать Тот самыйрамка Изсередина,Обычно существует сильная корреляция между соседними пикселями.,Таким образом, корреляция представляет собой избыточную информацию в пространстве.
  • резервирование времени:существоватьвидеоинформациясередина,Обычно существует сильная корреляция между соседними израмками.,Таким образом, корреляция представляет собой избыточную информацию между ними.
  • избыточность кодирования:видеосередина Неттакой жеданные Появлятьсяиз Вероятность другая,Желание кодировать символ из-за неравномерного распределения вероятностей.
  • визуальная избыточность:людииззрительная системаверно Некоторые детали нечувствительны。визуальноизизбыточная информациядаобратитесь ксуществоватьлюдисуществоватьсмотретьвидеочас,Человеческий глаз не может обнаружить эту информацию.

В настоящее время существует три основные серии распространенных форматов кодирования видео, каждый из которых разработан разными организациями:

1)Серия ISO-MPEG/ITU-T:Зависит Группа экспертов по движущимся изображениям (MPEG), дочерняя компания Международной организации по стандартизации (ISO), и Организация по стандартизации электросвязи Международного телеграфного союза (ITU-T) разработали стандарт излучодирования.

  • H.264,такженазываетсядлявысокийсортвидеокодирование(Advanced Video Кодирование, короче AVC),да вродешироко используетсяизвысокийизысканныйстепеньвидеоиз Записывать、сжатиеи Формат выпуска。Стандартпредставлять Одинрядновыйизможет значительно улучшитьвысокийсжатиепроизводительностьизтехнология,И он может значительно превосходить предыдущие стандарты как на стороне скорости передачи данных, так и на стороне низкой скорости передачи данных одновременно.
  • H.265,такженазываетсядлявысокийэффект Ставкавидеокодирование(High Efficiency Video Кодирование, короче HEVC),да H.264 преемник. HEVC Признано, что это не только улучшает качество изображения, но и в то же время позволяет достичь большего. H.264 Двойная степень сжатия (эквивалентно пониженной скорости передачи данных при том же качестве изображения) 50%), может поддержать 4K Разрешение даже для приезжающих телевизоров сверхвысокого качества, самое высокое разрешение, которое только можно достичь. 8192×4320(8K разрешение), это да в настоящее время развивается из тенденций.
  • H.266,такженазываетсядля Многофункциональныйвидеокодирование(Versatile Video Кодирование, короче VVC),да H.265 преемник. ВВЦ верно 8K Супер четкий, экранный, динамичный и 360 Новые типы видео, такие как панорамное видео, лучше поддерживаются благодаря адаптивной полосе пропускания и разрешению, потоковому мультимедиа и таким приложениям, как связь в реальном времени. Согласно недавнему JVET Официальные субъективные результаты тестов, ВВЦ изсреднийкодированиефаза производительностиверно HEVC из Тивысокий уже может добраться приезжать 49%。

2)серия АОМ:предшественникда Зависит от Google доминирующий VPx Стандарт кодирования для серии. Впоследствии ряд компаний образовали Альянс открытых медиа (Alliance for Open Media). for Open Media, AOM) продолжает разрабатывать новые стандарты кодирования.

  • VP8,индивидуальный открытый формат сжатия изображений,самый ранний Зависит от On2 Technologiesis Развитие, впоследствии Зависит от Google выпускать. в то же время Google Также опубликовано VP8 кодирование реализации библиотеки: libvpx, с BSD Условия лицензирования были опубликованы в виде изданий, и впоследствии были прикреплены права на использование патента. И существуют После некоторых дебатов, наконец, VP8 изLICENSE CONFIRM для индивидуальной лицензии с открытым исходным кодом.
  • VP9,да Google Предоставляет бесплатное видео с открытым исходным кодом в формате кодирования. VP8 из Последующая версия.
  • AV1,Alliance for Open Media Video 1 да Зависит от AOM(Alliance for Open Media, Alliance for Open Media) разрабатывает видеоформат с открытым исходным кодом, не требующий лицензионных отчислений, с целью решения H.265 Дорогие патентные пошлины и сложные вопросы патентного лицензирования стали новым поколением ведущих и бесплатных стандартов. Кроме того, AV1 да Google Сформулировать VP9 Стандарт преемника, также да H.265 Сильный конкурент.

3)Серия АВС:AVS(Audio Video coding Standard) — серия стандартов кодирования с независимыми правами интеллектуальной собственности в Китае.

  • AVS2,Стандарт технологии цифровых аудио- и видеокодеков второго поколения (AVS2).,Его основная цель применения — видео сверхвысокой четкости.,Поддерживает суперразрешение (4K выше), широкий динамический диапазон видео, извысокое эффективное сжатие.
  • AVS3,AVS3 Добавлено 8K Разрешение из поддержки, данная технология будет использоваться в середине Центральной радиотелерадиостанции. 8K Суперчистый канал.

Здесь мы представляем только H.264, H.265 и H.266.

1. Кодирование H.264

1.1. Основные понятия.

1.1.1. Иерархическая структура элементов синтаксиса.

В H.264 элементы синтаксиса можно разделить на пять уровней: «последовательность», «изображение», «срез», «макроблок» и «субмакроблок».

существовать H.264 середина,По сравнению с предыдущей иерархической структурой самое большое отличие состоит в том, что уровень последовательности и уровень изображения отменены.,иБольшинство синтаксических элементов, изначально принадлежавших последовательности и заголовку изображения, освобождаются для формирования двухуровневого набора параметров последовательности и изображения.,Остальные части укладывают ломтиками. существуют в рамках этого механизма,Зависит Поскольку набор параметров независим и может передаваться многократно, для его защиты используется специальная технология. Набор параметров находится в другом канале, чем внешний набор параметров из синтаксического элемента середина, который да H.264 В качестве предложения мы могли бы использовать более безопасный, но более дорогой канал для передачи набора параметров.

1.1.2. Программное и аппаратное кодирование и декодирование.

кодекдляПрограммное решение для мягкого программирования и жесткое решение для жесткого программирования

  • Мягкое программирование/мягкое декодирование: обработка ЦП.
  • Жесткое кодирование/жесткое декодирование: использование графического процессора видеокарты, выделенного SDP и другого аппаратного обеспечения чипа.

Мягкое программирование использует CPU иметь дело с,Преимущества: Сильная возможность регулировки.,Сравнимо с тяжелым трудом,Программный редактор может настроить параметры для создания видео более высокого разрешения с той же скоростью передачи данных.,Кроме того, программное редактирование может иметь лучшую совместимость.,Адаптируется ко всем устройствам,Но недостатком является то, что производительность может быть плохой.,Это не так быстро, как жесткое программирование, и имеет низкое энергопотребление.

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

В настоящее время в большинстве бизнес-сценариев мобильных приложений используется стратегия кодирования: терминал мобильного телефона должен попытаться использовать жестко закодированное кодирование для получения полностью четкого видео высокого качества.,Отправить высокое четкое видео на сервер,Зависит Затем сервер мягко кодирует и транскодирует скорость многоканального кода из видео, а затем передает CDN Распространено до конца просмотра. Кроме того, некоторые бюджетные телефоны Android могут из-за аппаратных проблем поддержка жесткого программирования неудовлетворительна. В этом случае вы можете использовать мягкое программирование. Если жесткое программирование не удается, вы можете переключиться на мягкое программирование, чтобы избежать проблемы. Конечно, иногда для некоторых моделей терминалов с превосходной производительностью или краткосрочными бизнес-сценариями вы также можете отдать приоритет программному редактированию, например записи. 15 Вторая короткая видеосцена, во-первых, время относительно короткое, а производительность машины неплохая. CPU Потребление, так что та же скорость передачи данных может снова улучшить четкость.

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

1.1.3. Последовательность

Режим кодирования H.264 можно понимать так: существует видео середина,абзацчас Рядом в номерахиз Изображение изпиксель、Яркость и цветовая температураиз Разница обычно небольшая。Так что не надо идтиверноабзацчасв комнатеиз Каждое изображениенад Сейичирамкаизкодирование,А можно выбрать первое изображение кадра этого часового интервала и выполнить над кодированием,И следующее изображение записывает только то же изображение, что и первое.рамканадвсекодирование Изображение изпиксель、Яркость и цветовая температураждатьособенностьиз Просто разница,И так далее.

Что такое последовательность??вышеизэтот абзацчасв комнатеизображениеизменять Не большойизизображение Просто собери этоксказать Издляодининдивидуальныйпоследовательность。Последовательности можно понимать как имеющие одинаковые характеристики фрагмента данных изображения.нодаеслиопределенныйиндивидуальныйизображениеи Извпередизизображениетрансформироватьочень большой,Трудно обратиться к предыдущей израмке для создания новой.,Затем завершите предыдущую индивидуальную последовательность,Начните следующую индивидуальную последовательность. Повторите вышеизложенное,Создайте новую последовательность.

1.1.4. Тип рамы.

H.264 В структуре закодированные данные видеоизображения называются кадром. Кадр состоит из одного слайса (среза) или нескольких слайсов. Слайс состоит из одного или нескольких макроблоков (МБ). 16x16 из YUV Состав данных. Макроблок это H.264 кодированиеиз базового блока.

существовать H.264 В протоколе определены три типа кадров, а именно: I Рама, Б рамка с P рамка.

1) Я боксирую

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

Я делаюиз Особенности:

  • Он сжимает все кодирование рамок кадра, сжимает и передает всю информацию об изображении кадра;
  • При декодировании используйте только I безрамочные данные Безопасность и безопасностьчислочисло;
  • I рамка описывает фон изображения, движущийся объект и детали;
  • Рамку не нужно создавать со ссылкой на другие изображения;
  • I кадра P кадри B кадра из эталонного кадра, его качество напрямую влияет на качество каждого последующего кадра из той же группы середина;
  • В общем, я группа изображений рамки GOP из Базарамка(Нет.одинрамка),существоватьодин Группасередина Толькоиметьодининдивидуальный I рамка;
  • I Объем данных и информации, занимаемый рамкой, относительно велик.

Процесс кодирования кадра:

  • Делайте внутренние прогнозы,Определить режим внутреннего прогнозирования, который будет использоваться;
  • когда предыдущее значение пикселя минус прогнозируемое значение, получают остаточную величину;
  • верно Остатки выполняютсятрансформироватьи Количественная оценка;
  • стать длиннеекодированиеиарифметикакодирование;
  • Восстановите изображение и отфильтруйте его.,Получите изображение для другой рамки или эталонную рамку.

2) Р-кадр

P рамка, то есть прогнозируемое кодирование изображения рамки, перед использованием I рама или P кадр, используя метод прогнозирования движения для кодирования между кадрами.

P рамкаиз Прогнозирование и реконструкция: P В основе кадра I рамкадляссылкарамка,существовать I найти в рамке P В кадре «некоторой точки» из значения предсказания вектора движения берут значение разности предсказания и вектор движения и передают их вместе. существуют Приемная сторона основана на векторе движения от I найти в рамке P сформулируйте『некоторый момент』из прогнозируемого значения и прибавьте его к разнице, чтобы получить возможность приезжать P рамка『некоторая точка』стоимость образца, от можно приехатьнад целым из P рамка.

Особенности рамки P:

  • P рамкада I рамка отделена сзади 1-2 рамкаизкодированиерамка;
  • P В кадре используется метод компенсации движения, чтобы передать его передней частью. I или P рамкаиз разности и вектор движения (ошибка прогнозирования);
  • P рамка относится к прямому предсказанию, израмка кодирования, она относится только к ближайшему к ней фронту. I рама или P рамка;
  • P рамкаможет вернуться назад P рамкаиз относится к рамке или да до и после из B система отсчета;
  • Зависит от рамки P в кадре, что может привести к распространению ошибок декодирования;
  • Зависит отзатем Разница передачи, P кадриз сжатия сравнение высокое.

Основной процесс П кадркодированияиз:

  • Для оценки движения в расчете используется режим межкодирования кадра из значения функции скорости преобразования. П рамка относится только к предыдущей израмке;
  • Делайте внутренние прогнозы,Выбор скорости преобразования минимального значения функции, внутрирежимное израмка и межрежимное сравнение рамки,Определить, какой режим кодирования использовать;
  • Вычислить фактическое значение и прогнозируемое значение и разницу;
  • верно Остатки выполняютсятрансформироватьи Количественная оценка;
  • нравитьсякодирование,еслидарамкамеждукодированиемодель,кодирование вектора движения.

3) Рамка Б

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

B рамкаиз Прогнозирование и реконструкция: Б рамкаперед из I или P рамки и спинкаиз P кадр – это система отсчета, узнайте B кадрируйте «некоторую точку» из предсказанного значения и двух отдельных векторов движения, возьмите разность предсказаний и вектор движения и передайте их. Приемная сторона основана на векторе движения, существуют два индивидуальных источника. в рамке Прогнозируемое значение объединяется с разницей, чтобы получить возможность приезжать B рамка『некоторая точка』стоимость образца, от можно приехатьнад целым из B рамка.

Особенности B-рамы:

  • B рамкада Зависит от Переднийиз I или P рамки и спинкаиз P рамка для предсказаний;
  • B рамкапередача издаит с передней стороны I или P рамки и спинкаиз P кадр из ошибки прогнозирования и вектора движения;
  • к двунаправленному кодированию с предсказанием в кадре B;
  • Рамка B. Степень сжатия — лучшая.,Потому что он отражает только изменения в движущемся объекте между двумя эталонными кадрами.,Прогноз относительно точен;
  • B рамка не относится к рамке, что не приведет к распространению ошибок декодирования.

Б. Рамкакодированиеиз основного процесса:

  • Выполнить оценку движения,Рассчитано с использованиемрамкамеждукодированиемодельиз Ставкаискажениеписьмочислоценить。B рамка может относиться к следующему израмку;
  • Делайте внутренние прогнозы,Выбор скорости преобразования минимального значения функции, внутрирежимное израмка и межрежимное сравнение рамки,Определить, какой режим кодирования использовать;
  • Вычислить фактическое значение и прогнозируемое значение и разницу;
  • верно Остатки выполняютсятрансформироватьи Количественная оценка;
  • нравитьсякодирование,еслидарамкамеждукодированиемодель,кодирование вектора движения.

Введение в функцию преобразования скорости из: Алгоритм сжатия с потерями, производительность откодирование вывода по битрейтуиискажениесовместное решение。 кодированиеизглазиз:то есть существование обеспечивает определенное качество видео и минимизирует скорость кодирования, или «существует» минимизирует кодированиеискажение при определенном пределе скорости кодирования. кодированиеустройствоиз Работа:в соответствии скначальство Ставкаискажение Критерии поискаприезжатьоптимальныйкодированиепараметр. Теория информации, концепция середина скорости восстановления:существоватьпозволятьодин Фиксированный графикстепеньискажениеизв условиях,До какой степени можно сжать исходную информацию?,Прямо сейчас Какой минимум требуетсябитычислоумение описать источник。Зависит от Это полученоприезжать Ставкаискажениеписьмочисло:R(D) = min I(X, Y),Он дает нижнюю границу сжатия информации, допустимого при ограниченных условиях. Но его кодирование видеосуществованиясередина трудно применить.,Потому что для различных вероятностей и условных вероятностей неизвестны,могу только сделатьдля Теоретическая ценность。 видеокодированиесерединаиз Ставкаискажениеизгиб:дляисследовалвидео Скорость кодаивидео质количествоизбаланс。Зависит от Ввиду систематического характера он не может достичь теоретического уровня проживания. R(D) Ценность, только Зависит от различных параметров изкодирования (таких как QP и «Выбрать из режима»), чтобы ограничить доступность (R, D) Рабочие точки образуют выпуклую оболочку. видеокодированиесерединаиз Ставкаискажениеоптимизация(RDO):Пройти всеизженьшеньчислокандидатмодельверновидеоруководитькодирование,Соблюдайте ограничение минимальной скорости кодирования из набора параметров, чтобы обеспечить оптимальное параметры кодирования видео. Узнайте на каждом уровне.,В конечном итоге оптимизируется общая производительность системы. Здесь предполагается отсутствие корреляции и независимая оптимизация.,Если корреляция сильная, они будут оптимизированы вместе.

1.1.5, DTS и PTS

Понятия DTS и PTS заключаются в следующем:

  • DTS (отметка времени декодирования): отметка времени декодирования.,Этот индивидуальный временной штамп, означающий время существования, используется, чтобы сообщить игроку, в какое время нужно декодировать эти кадризированные данные.
  • PTS(Presentation Time Штамп: Отображение отметки времени часа. Эта отметка времени индивидуального часа используется, чтобы сообщить игроку, когда отображать эти данные рамки.

Нужно обратить внимание на изда: хотя DTS、PTS да используется для направления стороны игрока из ряда для, но они дасуществоватькодированиеизчас подождите Зависит откодированиеустройствогенерироватьиз。

Когда нет видеопотока B время кадра, обычно DTS и PTS из порядка да последовательный из. Но есть B кадрчас, пора приезжать. Ранее мы упоминали о проблеме: порядок декодирования и порядок воспроизведения несовместимы.

Например, индивидуальное видео середина, порядок показа в кадре да: I B B П, теперь существуем, нам нужно существовать, чтобы расшифровать B время кадра P информация о кадресередина, поэтому эти несколько кадров могутсуществовать потоковое видео серединаиз последовательности может да: I P B B, в это время отображается, что каждый кадр имеет DTS и PTS из работал. ДТС Подскажите, в каком порядке нам следует декодировать эти кадры, ПТС Расскажите, в каком порядке нам следует отображать эти кадры. Порядок примерно следующий:

Язык кода:javascript
копировать
Stream: I P B B
   DTS: 1 2 3 4
   PTS: 1 4 2 3
1.1.6、GOP

GOP(Group Of Картинки) в группе изображений из концепции, которая относится к изда последовательности видеокодирования серединадва человека I Расстояние между рамкой.в обычном смыслеиз GOP Зависит от I начало кадра, следующий I рамка до окончания израмки. Строго говоря, это индивидуальный I рама – это IDR рамка.

H.264 Использовать закрытие изда GOP(Closed GOP),Прямо сейчассуществоватьодининдивидуальный GOP декодирование середина всех рамок от этого не зависит GOP из другой рамки, за исключением того, что первая рамка должна быть да I рамка, другие рамки могут быть P рама или B рамка.

Картинка выше представляет собой GOP для 15 примеры кадриз, если видео израмка оцените да 15 фпс, тогда это GOP то есть 1s продолжительность.

Ключевая рамкаизмежду Регулировка интервала повлияет GOP из-за длины, что, в свою очередь, влияет на возможность чтения GOP изскорость, для предотвращения изменений в движении, индивидуальный GOP Количество рамок в группе не должно быть слишком большим. если клавиша кадраиз Установлен слишком большой интервализ(GOP Длина слишком велика), необходимо использовать существующую рамку для проживания в ситуациях, которые могут быть вынуждены использовать B/P кадров, что снизит качество изображения.

1.1.7, рамка РДЭ

IDR Полное имя кадра Instantaneous Decoder Обновить, да I Своеобразная рамкаиз. РДЭ рамкаизэффектданемедленно почиститьновый,Пересчитать индивидуальное новое из последовательности начинается кодирование,Не допускайте распространения ошибок.I Рамка была перекрестной ссылкой, но это возможно, но IDR Рамок нет.

например:

IDR1 P2 B3 B4 P5 B6 B7 I8 B9 B10 P11 B12 B13 P14 B15 B16

здесьот B8 может пересекать I8. Перейдите к ссылке P7.

IDR1 P2 B3 B4 P5 B6 B7 IDR8 B9 B10 P11 B12 B13 P14 B15 B16

здесьиз B9 Вы не можете ссылаться на это IDR8 Переднийизрамка.

H.264 представлять IDR рамкадля декодирования из-за ресинхронизации, когда декодирование декодера приезжает IDR кадрчас, немедленно очистите очередь опорных кадров, отбросьте весь вывод декодированных данных, повторно выполните поиск набора параметров и запустите новую последовательность. Таким образом, если в предыдущей индивидуальной последовательности произошла ошибка, существование может получить возможность ресинхронизироваться, и ошибка не будет передана дальше. РДЭ израмка никогда не используется после рамки IDR рамка перед израмкой для декодирования.

Подводя итог, кадры IDR имеют следующие характеристики:

  • IDR рамка должна быть I рамка, строго говоря I рамка не обязательно означает да IDR рамка (но вообще I рамкато есть IDR рамка);
  • вместо рамки РДЭ,существовать IDR После того как рамка из всех рамка не может относиться ни к какому IDR оформить предыдущее израмкаиз содержания. Напротив, верно встречается чаще, чем обычное из I рамка, после этого из B и P рамка может быть указана в обычном I рамка Извпередиз I рамка(обычно I на рамку может ссылаться как рамка из);
  • Игрок всегда может отиндивидуально IDR Рамка воспроизводится, поскольку перед израмкой не следует никакой ссылки на кадр. Поэтому видео начинается с. I рамка должна быть IDR рамка;одининдивидуальныйзакрытый класс GOP начинается с из I рамка тоже должна быть да IDR рамка.
1.1.8. Метод сжатия.

H.264 Используя базовый алгоритм да『внутреннего сжатия рамки』и『внутреннего сжатия рамки』, генерируется внутрикадровое сжатие да. I алгоритм кадризации, взаимное сжатие кадра и генерация B рамкаи P Алгоритм кадриз.

внутреннее сжатие рамки также называют пространственным сжатием。когдасжатиеодинрамкаизображениечас,Учитывайте только данные этой кадризации, не принимая во внимание избыточную информацию между соседними кадрами.,На самом деле это похоже на сжатие неподвижных изображений. Алгоритм сжатия с потерями обычно используется в кадрах.,Зависит от сжимает все изображение дакодирование в рамку, поэтому его можно декодировать и отображать независимо. Внутреннее сжатие кадра обычно не достигает очень высокой степени сжатия по сравнению с кодированием. JPEG почти.

Принцип взаимного сжатия: соседние данные имеют высокую корреляцию.,Автор сказал, что изменения в информации между двумя до и после очень малы. То есть между соседними кадрами в непрерывном видео имеется избыточная информация.,По этой характеристике,Сжатие избыточности между соседними кадрами может еще больше улучшить степень сжатия.,уменьшатьсжатие Сравнивать。взаимное сжатие кадра также называют взаимосжатием для часа,он сравниваетчасмежду轴начальство Неттакой жерамка Измеждуизданныеруководитьсжатие。рамкамеждусжатиеодин Общийдабез потерьиз。рамка Разностный алгоритмда вродетипичныйизчасмеждусжатие Закон,он сравниваеткнигарамка с Разница между соседними кадрами, записывайте только этот кадр с Разница между соседними кадрами, что позволяет значительно сократить объем данных.

Кодирование сжатия по шагам примерно следующее:

  • Группировка, а также то есть Воляодинрядтрансформировать Не большойизизображениевозвращатьсядляодининдивидуальный Группа,такжето естьодининдивидуальныйпоследовательность,такжето есть GOP;
  • Определите кадр и классифицируйте каждую группу изображений кадра на три типа: для I-рамки, P-рамки и B-рамки;
  • Предсказать кадр, чтобы I рамка Делатьдля Базарамка,к I рамкапрогноз P рамка,Снова Зависит от I рамкаи P рамкапрогноз B рамка;
  • передача данных и, наконец, I Данные кадра и информация прогнозирования различий сохраняются и передаются.

1.2. Иерархическая структура.

H.264 Основная цель — обеспечить хорошую степень сжатия видео и хорошую привязку к сети. Для достижения этих двух целей H.264 Решение разделяет структуру системы на два отдельных уровня: «Уровень кодирования видео (VCL)» и «Уровень сетевой абстракции (NAL)».

  • Уровень кодирования видео (VCL),даверно видеокодирование основного алгоритма процесса, субмакросблока, макроблока, среза и других понятий из определений. Этот слой в основном дадля того, чтобы быть максимально независимым от сети, чтобы видеоконтент с высоким извержением выполнялся кодирование. кодирование после успеха,Вывод данных SODB (строка битов данных).
  • Уровень сетевой адаптации (NAL),даверноизображениепоследовательность、изображениеждатькусоксорт Некначальствоизконцепцияизопределение。Этот слой отвечает за VCL Генерируйте битовые строки, адаптированные к использованию различных сетей и множественных сред середина. Этот слой будет VCL Вывод слоя из SODB Данные упакованы в RBSP(Raw Byte Sequence Payload)。SODB дакодирование — необработанные данные, RBSP дасуществовать После исходных данных кодирования добавляется конечный бит, один индивидуальный бит. 1 инравиться Сухойиндивидуальныйбиты 0, для байт верноQi. Потом снова существовать RBSP головаплюс NAL Header Приходить Группастановитьсяодининдивидуальныйодининдивидуальныйиз NAL единица。

С точки зрения уровня кодирования видео (VCL) H.264 изструктура:

С точки зрения уровня сетевой адаптации (NAL) H.264 изструктура:

1.3. Инструменты кодирования

Изображение нижедляодининдивидуальныйтипичныйизвидеокодированиеустройство。существоватьруководитькогдапередний сигналкодированиечас,Устройство кодирования сначала сгенерирует предварительный сигнал «вернокогда», чтобы предсказать исходный сигнал.,называетсясигнал прогнозирования(Predicted Сигнал), метод прогнозирования может предсказать между дачас и израмкой (Интер Прогнозирование), то есть использование сигнала предыдущей кадризации для прогнозирования, или Прогнозирование), то есть использование сигналов соседних пикселей одного и того же кадра для прогнозирования. Получить сигнал прибытия прогнозированияназад,кодированиеустройствовстреча Волякогдапередний сигналисигнал прогнозирования Вычестьприезжатьостаточный сигнал(Residual Signal),и Тольковерноостаточный сигнал осуществляет кодирование, таким образом, часть избыточной информации в пространстве часов и времени может быть удалена. Далее устройство кодирования не выполняет непосредственно веростаточный сигналруководитькодирование,ида Первый генералостаточный сигналпройтитрансформировать(в целомдля Дискретное изменение косинуса Изменять)РанназадКоличественная оценкак Входитьодинудаление шаганулевоймеждуначальствоиперцептивноизизбыточная информация。Количественная оценканазадпридетсяприезжатьиз Количественная оценкасистемачисловстреча Сновачерезэнтропиякодирование,Удалите статистически избыточную информацию.

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

1.3.1. Внутрикадровое предсказание.

Вообще говоря,да, в одной рамке,Значения яркости и цветности двух соседних пикселей обычно относительно близки друг к другу.,такжето есть цвет, который постепенно меняется и не может внезапно измениться на совершенно другой цвет. И сделайте кодирование видео, изто есть использует это индивидуальное соотношение для выполнения сжатия. оформить внутреннее предсказанието есть На основании этогоиндивидуальныйпринцип。

Предположим, что теперь нам нужны отдельные пиксели. X Прежде чем производить кодирование,существоватькодирование этого отдельного пикселя, мы ищем возможность сделать его соседний из пикселей, чтобы сделать пиксель эталонным. Х', согласно X’ Мы используем алгоритм прогнозирования, чтобы получить пиксель X из Прогнозированное значение Xp, а затем мы используем X минус Xp Получить жилье из остатков D, и использовать этот остаток D заменять X Выполните кодирование, которое играет роль экономии кода и удобства проживания. Наконец, мы также используем прогнозируемое значение Xp Остаток D Добавьте, чтобы получить X’ Используется для следующего индивидуального пикселя прогноза. Это индивидуальното есть Мы используем внутрикадровое предсказание для сжатия кодирования из Общая идея.

существоватьдействительныйкодированиесередина,Конечно, мы можем делать прогнозы в единицах пикселей.,Но это менее эффективно,Местоксуществовать H.264 Стандартная середина предлагает расчеты в блочных единицах.одининдивидуальный макроблок 16x16 пикселей, которые можно разделить на подблоки, минимум составляет 4x4 из (данный индивидуальный размер даверно с точки зрения кодирования яркости, кодирования цветности, Формат выборки 4:2:0 из макроблока Chroma и длины и половины ширины до макроблока яркости и половины),Это может значительно повысить скорость вычислений.

существоватьрамка Внутрипредсказыватьмодельсередина,Прогнозируемый блок да основан на реконструированном блоке на момент формирования предыдущего блока. верно Яркость в пикселях,Блоки прогнозирования используются для 4×4 подблок или человек 16×16 Операции, связанные с макроблоками. 4×4 Субблоки яркости имеют 9 дополнительные режимы прогнозирования, независимо прогнозирующие каждый 4×4 Подблок яркости, подходящий для изображений с большим количеством деталей, кодирование 16×16; Блок яркости имеет 4 модель прогнозирования, которая предсказывает всю 16×16 Также доступны блоки яркости, подходящие для кодирования плоских изображений; 4 модель прогнозирования, подобная 16×16 Режим прогнозирования блока яркости. Кодирование обычно выбирает режим прогнозирования, который минимизирует разницу между блоками прогнозирования икодирование.

1.3.2. Межкадровое предсказание.

рамкаинтерпрогнозированието есть предсказание домена час, цель существования состоит в том, чтобы устранить избыточную информацию в домене час, проще говоря есть, использует предыдущее кодирование изображения для прогнозирования кодирования изображения. Он включает в себя две важные концепции: оценку движения и компенсацию движения.

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

Компенсация движения да основана на методе взаимного прогнозирования вектора движения ирамка, который представляет собой процесс получения расчетного значения момента перед кадризацией. Фактически, есть возможность вставить параметры вектора движения для получения эталонного кадра, чтобы получить кадр «когда раньше». Кроме того, компенсация движения выполняется индивидуально.

H.264 Взаимное прогнозирование кадра уже использует кодирование видеокадра/поля и основано на блоковой компенсации движения из режима прогнозирования. Отличие прогноза от предыдущего стандарта «рамкасуществовать» заключается в более широком диапазоне размеров блоков (от 16×16 приезжать 4×4), используется субпиксельный вектор движения (используется яркость 1/4 Пиксельная точность МВ) и ещё отсылки к применению кадриз и тд.

Каждый макроблок (16×16 пикселей) может 4 способы разделения: один 16×16, два 16×8, два 8×16, четыре 8х8. Существует также четыре типа компенсации движения. и 8×8 Режим для каждого субмакросблока также может иметь четыре режима. разделения: один 8×8, два 4×8 илидваиндивидуальный 8×4 и 4 индивидуальный 4×4。Эти подразделенияи Хироюки Кодзи Большое упоминаниевысокий Всемакроблок Измеждуизактуальность。При таком разделенииизкомпенсация движениядляформа дереваструктуракомпенсация движения。

Каждыйиндивидуальныйразделениеили Хироюки Кодзи都иметьодининдивидуальныйнезависимыйизкомпенсация движения。Каждыйиндивидуальный MV Должно быть кодирование, передача, разделение, опция также требует кодированияприезжать сжатый битовый поток середина. действительно большой с точки зрения размера сегментов, MV Для выбора типа сегментации требуется всего несколько бит, но остаточная энергия области высокой детализации при компенсации движения будет очень высокой. Остаточная энергия компенсации движения при сегментации небольшого размера невелика, но для представления требуется больше битов. MV иразделениевыбирать。разделениеразмеризвыбиратьзатронутыйсжатиепроизводительность。всетелои Слово,Большой разделенный размер подходит для плоских участков.,А небольшой размер подходит для областей с большим количеством деталей.

макроблокиз Компоненты цветности(Cr и Вб) Тогда для соответствует половине яркости и з (половине по горизонтали и половине по вертикали). Блок цветности использует тот же режим сегментации, что и блок яркости, за исключением того, что размер уменьшается вдвое (по горизонтали и вертикали). Например, 8×16 блок яркости, соответствующий размеру блока цветности 4×8,8×4 Блок яркости, соответствующий размеру блока цветности для 4×2 и т. д. Цветовой блок из MV Также через соответствующую яркость MV Горизонтальная и вертикальная составляющие уменьшаются вдвое.

1.3.3. Преобразование и квантование.

Большинствочислоизображение都иметьодининдивидуальныйобщийизособенность:ровная площадкаи Внутри容缓慢изменятьокруг域占据одинширина Изображение большая часть,Область детализации и область изменения контента составляют небольшую часть. Можно также сказать,Изображение середина постоянного тока и область низких частот составляют большую часть,Область высоких частот занимает незначительную часть. так,пространственная область изображения трансформироватьприезжать в частотной области или так называемая изтрансформировать область,Произведет некоторые трансформирующие коэффициенты с очень небольшой корреляцией.,И может быть сжато кодированием,Это так называемое изтрансформироватькодирование.

также,для уменьшения динамического диапазона изображения кодированиеиз,Также обычно выполняется Количественная оценка.

существоватьизображениекодированиесередина,трансформироватькодированиеи Количественная оценкаотпринципначальство讲дадваиндивидуальныйнезависимыйизпроцесс。носуществовать H.264 середина,Объедините два отдельных процесса серединаиз в два для,и далее использует целочисленную арифметику,Уменьшите количество операций кодирования и декодирования.,Улучшите производительность сжатия изображений.

H.264 верное изображение или остаток предсказания с использованием 4×4 всечисло Дискретное изменение Технология косинуса (DCT) позволяет избежать использования предыдущего стандарта середина из универсального. 8×8 Дискретное изменение косинуса Проблемы несоответствия часто возникают при переходе к обратному преобразованию. Количественная Процесс оценки определяет Количественную ценность изображения на основе размера динамического диапазона. оценкаженьшеньчисло,Сохраняет необходимые детали изображения,И сократить поток кода.

1.3.4. Энтропийное кодирование.

Размер энтропии тесно связан с вероятностной моделью источника информации.,Каждый отдельный символ имеет разную вероятность появления.,Источник изэнтропии также различен. когда Источник середина Каждое событие имеет равное распределение вероятностейчас,Энтропия имеет максимальное значение. Разница между энтропией источника и ее возможным максимальным значением отражает избыточность, содержащуюся в источнике. Чем меньше избыточность источника из,То есть, чем больший объем информации несет каждый отдельный символ независимо,Тогда чем короче длина последовательности, необходимая для передачи того же объема информации,,Чем меньше знаковых битов. поэтому,Основной метод сжатия данных заключается в устранении корреляции между исходными символами.,Сделайте последовательность как можно более не запоминающейся,То есть появление предыдущего символа не влияет на вероятность появления любого последующего отдельного символа.

Использование статистических характеристик источника для сжатия скорости кода называется энтропийным кодированием.,Также называется статистическим кодированием. Энтропийное кодирование и метод кодирования со сжатием без потерь,Он генерирует поток кода, который можно без проблем декодировать для восстановления исходных данных. Энтропийное кодирование существует, строит случайный процесс, основанный на статистических свойствах.

Для кодирования видео обычно используются два метода: кодирование переменной длины (кодирование Хаффмана) и арифметическое кодирование.

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

существовать H.264 из CAVLC (контекстно-адаптивное кодирование переменной длины) середина достигает чрезвычайно высоких коэффициентов сжатия за счет динамической настройки кодовой таблицы кодирования середина в зависимости от ситуации с уже кодированными синтаксическими элементами. КАВЛК Используется для изкодирования остаточных данных яркости и цветности. Остатки после трансформировать Количественную Задние данные показывают следующие характеристики: 4×4. Данные блока прогнозируются, трансформируются, Количественная После оценки ненулевые коэффициенты в основном сосредоточены в серединасуществовать низкочастотной части, тогда как высокочастотные коэффициенты преимущественно да нулевые; оценканазадизданные пройдены zig-zag Сканирование, округ Колумбия Ненулевые значения коэффициентов больше вблизи коэффициентов, а большинство ненулевых значений коэффициентов в частотном положении да +1 и -1 соседний из 4×4 Блок из ненулевого коэффициента из числа и корреляции из. КАВЛК В полной мере используйте остатки после преобразования целых чисел, Количественная Данные о характеристиках ChartPost сжимаются для дальнейшего уменьшения объема данных, образуя избыточную информацию, для H.264 Совершенство, эффективность изкодирования закладывает основу.

арифметическое кодированиедумал использовать 0 приезжать 1 из интервала из индивидуального числа для выражения потока ввода отдельных символов это необходимо для целых чисел Уальному входному потоку присваивается индивидуальное кодовое слово, тогда как да присваивается отдельное кодовое слово каждому индивидуальному символу входного потока серединаиз. Арифметическое кодирование использует метод интервальной прогрессии для входного потока, чтобы найти индивидуальное кодовое слово, которое по первому индивидуальному символу определяет начальный интервал (0 приезжать 1) Начните с чтения входного потока посимвольно. После появления каждого нового индивидуального символа рекурсивно разделите предыдущий интервал когда и разделите корень. В соответствии с вероятностью каждого отдельного символа из в да, интервал до когда делится на несколько подинтервалов в соответствии с вероятностью каждого отдельного символа из, а символ верно перед когда должен быть разделен на подинтервалы. 2 Интервал удаляется и используется для обработки интервала перед следующим индивидуальным символом часизкогда. После того, как приезжать обрабатывает последний индивидуальный символ над, получается окончательный интервал приезжать, а последний интервал существования середина случайным образом выбирает индивидуальное число для вывода. Декодер работает по одному и тому же методу и шагам, а обратный процесс выполняется для разных изд каждый раз, когда декодер разделяет инди. Мысленный поддиапазон имеет входной поток, состоящий из отдельных символов. В реальном процессе существования середина, характер входного потока середины из распределения вероятностей динамически изменяется, что требует ведения индивидуальной таблицы вероятностей для записи изменения вероятности информации. существования выполняет прогрессивный расчет "час" и оценивает вероятность появления символа до "когда" с помощью истинного серединаиз таблицы вероятностей. После обработки символа "до "когда" таблицу вероятностей необходимо обновить. Этот индивидуальный процесс выполняет первоначальную адаптацию символов входного потока. Декодер кодирования оценивается и обновляется таким же образом. Таблица вероятностей гарантирует, что последующий кодовый поток может быть декодирован плавно.

При кодировании Хаффмана необходимо использовать всю возможную длину N из Проектирование последовательностейи Кодовая книга хранилища, при этом из Сложность варьируется N представлять на рассмотрениеобратитесь кчислоувеличивать。использоватьарифметикакодированиенет необходимости заранеедля Каждыйиндивидуальныйвозможныйиз Источникпоследовательностьобратитесь к Фиксированная кодовая книга。ида Каждыйкогда Место Определить площадьмеждуизнижний предели Верхний предел имеет наибольшее значение для публики.высокий Допустимые битычас,Вы можете постоянно получать биты прибытия. Длина последовательности кодирования может быть такой же, как длина источника. поэтому,на самом деле,Арифметическое кодирование может приблизиться к уровню энтропии.

Арифметическое кодирование. Еще одно индивидуальное преимущество может быть достигнуто путем адаптации статистических характеристик источника путем простого обновления таблицы вероятностей символов. Условное кодирование также можно легко реализовать, используя разные таблицы вероятностей в разных контекстах. верною Хаффманкодирование,Затем кодовую книгу необходимо перепроектировать на основе обновленной таблицы вероятностей.,или верно Разработайте несколько индивидуальных кодовых таблиц для разных контекстов.

Зависит от более эффективен, чем высокоеизкодирование, и легко адаптируется.,Если сумма расчета приемлема,несомненноарифметикакодирование Сравнивать Хаффманкодированиеда вроделучшеизвыбирать。

1.4. Структура потока кода.

1.4.1. Исходный поток кода.

H.264 Исходный поток кода (также известный как голый поток), да Зависит отодининдивидуальныйловитьодининдивидуальныйиз NAL единица состоит из (NAL Header плюс RBSP Группастановитьсяодининдивидуальный NAL единица), структура показана на рисунке ниже:

существует сетевая передача из окружающей среды, кодирование будет осуществляться каждым индивидуально NAL Каждый самостоятельно, над тем, чтобы объединить их в группу, Зависит. от Поскольку каждый пакет имеет заголовок, декодер может легко его обнаружить. NAL из разграничения, вынимать по очереди NAL декодировать. для сохранения потока кода, H.264 Никакого другого существования NAL Из головы устанавливает выражение, начиная с синтаксического элемента. Но даесликодирование данных существует на носителях данных (таких как DVD CD), Зависит от В NAL да расположены близко друг к другу, декодер не сможет различить каждого человека в потоке данных середина NAL начинается и заканчивается, поэтому должен быть другой механизм для решения этой индивидуальной проблемы.

Иголкаверноэтотиндивидуальныйвопрос,H.264 Проект приложения B середина указывает на простое и эффективное решение. когда поток данных существует на носителе хранения в течение часа, для каждого отдельного человека NAL впереддобавить вСтартовый код0x000001。этотто есть Мы часто говорим из Формат потока кода Приложения-b

существуют на определенных типах средств массовой информации,для делает адресацию удобной,Требуется, чтобы длина потока данных существовала одинаковая,или должна быть определенная индивидуальная константа из нескольких. Рассмотрим ситуацию,H.264 предположениесуществовать Стартовый Добавьте несколько байтов перед кодом 0 Чтобы заполнить, прямо приезжать NAL Длина соответствует требованиям. Согласно этому механизму, декодер существует, кодовый поток середина обнаруживает Стартовый код,делатьдляодининдивидуальный NAL изстартовый идентификатор,когда Обнаружениеприезжать Внизодининдивидуальный Стартовый кодчаскогдавперед NAL Заканчивать. H.264 Регулированиекогда Обнаружениеприезжать 0x00000001 час также может обозначать предыдущего человека NAL из Конец,Внизодининдивидуальный NAL Во-первых, это да в для связано с индивидуальным байтом из 0 серединаизлюбойодининдивидуальныйбайтиз 0 Либо принадлежат Стартовому кодорда Стартовый Добавить из перед кодом 0。

добавить в Стартовый Кодаодининдивидуальный — хороший способ решить проблему, но вышеописанное про Стартовый Введение кодиз не завершено, поскольку игнорируется важный вопрос: если существует NAL появился внутри 0x000001 илида 0x00000001 Что делать с последовательностью из? Нет сомнений в том, что эта ситуация фатальна, и декодер преобразует их во что-то, что в противном случае было бы невозможно. кодизбайтпоследовательностькогдаделать Стартовый код, ошибочно распознавая здесь и обратно даодининдивидуальныйновыйиз NAL запускается, что приводит к потере декодированных данных! И мы провели много экспериментов, чтобы доказать, что NAL Эта последовательность байтов часто появляется внутри. Потому что для 0x000001 покрытие изказеда 0x00000001 из ситуации, поэтому следующее значение описывает, как с ней справиться 0x000001 Вот и все.

затем H.264 предлагает другой механизм,Вызов Делатьпредотвращать конкуренцию,существоватькодированиеустройствокодированиенадодининдивидуальный NAL час, должен определить, появляется ли да в левой части следующей таблицы серединаиз индивидуальной последовательности байтов, чтобы предотвратить их появление и Стартовый кодконкурировать。если Обнаружениеприезжатьэтотнекоторыйпоследовательностьжитьсуществовать,кодированиеустройство Волясуществоватьбольшинствоназадодининдивидуальныйбайтвперед插入одининдивидуальныйновыйизбайт:0x03,оти使они变становиться Вниз表右侧изпоявление。когдадекодированиеустройствосуществовать NAL Внутреннее тестирование приезжать имеет 0x000003 из последовательностичас, поставлю 0x03 Отмените и восстановите исходные данные.

Язык кода:javascript
копировать
0x000000 → 0x00000300
0x000001 → 0x00000301
0x000002 → 0x00000302
0x000003 → 0x00000303

В приведенной выше таблице мы упомянули первые две индивидуальные последовательности из предыдущей статьи середина и третью индивидуальную последовательность. 0x000002 да зарезервировано, а четвертый индивидуальный 0x000003дадля Гарантированодекодированиеустройство Может быть нормальным Работа,Потому что для того, чтобы мы только что упомянули, приехать,декодированиеустройствовосстановить оригиналданныеизметодда Обнаружениеприезжать 0x000003 Просто оставь это 0x03,этот Образецкогда Появляться原始данныедля 0x000003 час уничтожит данные, поэтому эта индивидуальная последовательность должна и должна быть вставлена 0x03

декодированиеустройствосуществоватьгнатьсяиндивидуальныйбайтчтение землиодининдивидуальный NAL час не то же самое, что часверно, он расшифровывается, а да расшифровывается Стартовым код机制Волявсеиндивидуальный NAL Прочитайте, вычислите длину и затем начните декодирование.

приезжать Итак, мы знаем, как разделить исходный поток кода NAL единица. Далее давайте узнаем о каждом человеке NAL Единтаиз структуры.

1.4.2, блок НАЛ

NAL единица Зависит от NAL Header и RBSP составляют.

Структура заголовка NAL следующая:

  • forbidden_zero_bit,Нет. 0 Бит, выражать запрещенный бит, обычно для значения для 0,ценитьдля 1 Указывает на синтаксическую ошибку.
  • nal_ref_idc,Нет. 1-2 бит, указывающий текущий NAL из Приоритет. Диапазон значенийдля 0-3,ценитькрествысокий,Указывает текущий NAL Чем важнее оно, тем приоритетнее его защита при посещении. H.264 Указывает, что если текущий NAL да принадлежит ссылочному срезу кадра, или набору параметров последовательности, или набору параметров изображения, эти важные единицы данных час, этот синтаксический элемент должен быть больше,чем 0。носуществоватьбольше, чем 0 Никаких дополнительных условий относительно того, какой должна быть конкретная ценность, не существует, и обе общающиеся стороны могут гибко формулировать стратегии.
  • nal_unit_type,Нет. 3-7 бит, указывающий текущий NAL тип единицы. Конкретные типы определены в следующей таблице:

nal_unit_type=5 когда, указывая текущий NAL да IDR Изображение индивидуального фото, в данном случае существует IDR изображениесерединаиз Каждыйиндивидуальныйкусокиз nal_unit_type все должно быть равно 5. Уведомление IDR Изображения не могут использовать разделы фрагментов.

1.4.3、RBSP

Как упоминалось ранее, РБСП Относится к необработанным байтам полезной нагрузки, которые NAL часть данных из формата инкапсуляции, инкапсуляция данных происходит из SODB (битовый поток необработанных данных). СОДБ дакодирование — необработанные данные, SODB Инкапсулированныйдля RBSP затем вставь NAL часть данных.

из SODB получить RBSP из процесса генерации:

  • если SODB Содержимое пусто, создано из RBSP такжеданулевойиз。
  • В противном случае РБСП Зависит отследующееиз Способгенерировать:
    • 1)RBSP из Первый индивидуальный байт берется непосредственно из SODB из Нет. 1-8 индивидуальныйбиты,(RBSP Биты в байте располагаются в порядке левого, левого, правого, самого большого. значительный) и так далее, RBSP Остальные отдельные байты берутся непосредственно из SODB из соответствующих битов. РБСП из Последний индивидуальный байт содержит SODB из последних нескольких индивидуальных битов rbsp_trailing_bits()
    • 2)rbsp_trailing_bits() из Нет.одининдивидуальныйбитыда 1. Далее заполняем 0,прямойприезжатьбайтверновместе。
    • 3) Наконец добавьте немного индивидуальности cabac_zero_word,Чтоценитьравный 0x0000
1.4.4. Различные типы блоков NAL.

Как упоминалось выше, существует множество типов проживания NAL-квартиры. Здесь мы объясним важные типы середина:

  • SPS
  • PPS
  • SEI
  • Slice

набор параметров последовательности、Наборы параметров изображения и изображения、Связь между фильмами:

1) Набор параметров последовательности SPS

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

SPS Информация серединаиз имеет решающее значение, и если ее данные серединаиз будут утеряны, процесс декодирования может завершиться неудачей. СПС и PPS Обычно используется в качестве параметра инициализации декодера. В общем, SPS. и PPS Местосуществоватьиз NAL единица Кусочек Ввсеиндивидуальный Поток кодаизисходное положение,Но дасуществовать в некоторых сценариях,Эти две структуры также могут возникать между существующими скоростями передачи данных середина:

  • Декодеру необходимо время существования кодового потока, чтобы начать декодирование. например,Прямая трансляция.
  • Кодирование существует Процесс кодирования середина изменил изпараметр скорости кода.,Изображение изразрешение。

К основным параметрам СПС относятся:

  • profile_idc: Указывает текущий H.264 Поток кодаизкодированиеоценка。Чтосерединаотделениеточкаоценка:
    • Базовый профиль: BaselineProfile (profile_idc ценитьдля 66)
    • Основной профиль: MainProfile (profile_idc ценитьдля 77)
    • Расширенный профиль: ExtendedProfile (profile_idc ценитьдля 88)
  • level_idc,Указывает текущий уровень изкодирования потока кода. Уровень кодирования определяет максимальное разрешение видео, максимальную скорость видео и т.д. параметры при определенных условиях.
  • seq_parameter_set_id,Указывает текущийиз набора параметров последовательностииз идентификатор. через это id значение, набор параметров изображения PPS Его ассоциацию можно назвать SPS серединаизпараметр.
  • log2_max_frame_num_minus4,использовать Ввычислить MaxFrameNum из стоимости. Формула расчета для MaxFrameNum = 2 ^ (log2_max_frame_num_minus4 + 4)。переменная MaxFrameNum выражать frame_num избольшинство大ценить,frame_num Определяет последовательность декодирования изображения, которому оно принадлежит, процесс декодирования существует и является также очень важной переменной. Примечательное изда frame_num да циклический отсчет, то есть когда он приезжает вверх MaxFrameNum позже 0 Тяжелыйновыйначинатьновыйодинколесоизсчитатьчисло。декодированиеустройство必须要иметь机制Обнаружениеэтотвид цикла,В противном случае это вызовет проблемы, подобные «ошибке тысячелетия».,существовать Изображение извызывая путаницу в порядке。
  • pic_order_cnt_type,Указывает метод изкодирования POC (Picture Order Count).,POC Определяет изображение в порядке воспроизведения. Зависит от В H.264 использовал B рамкапрогноз,делать Изображение изпорядок декодированияи Нетодин Конечноравный Порядок воспроизведения,ноони Измеждужитьсуществоватьодин Конечноиз Отображение отношений。POC Можетк Зависит от frame-num Его можно вычислить через сопоставление отношений или просто Зависит откодирование передачи явно. H.264 Всего три вида POC изкодированиеметод,этотиндивидуальныйсинтаксические элементыто есть используется, чтобы сообщить декодеру, какой метод использовать для расчета POC。
  • log2_max_pic_order_cnt_lsb_minus4,использовать Ввычислить MaxPicOrderCntLsb из стоимости. Формула расчета для MaxPicOrderCntLsb = 2 ^ (log2_max_pic_order_cnt_lsb_minus4 + 4)MaxPicOrderCntLsb выражать POC из Максимальное значение переменной существует pic_order_cnt_type = 0 при использовании.
  • num_ref_frames,Очередь указанной эталонной рамки может достигать максимальной длины прибытия.,Декодер открывает область хранения в соответствии со значением этого индивидуального синтаксического элемента.,Эта отдельная область хранения используется для хранения декодированных эталонных кадров.,H.264 Указывает, что максимально доступный 16 индивидуальный относится к рамке, этот синтаксический элемент из имеет максимальное значение для 16。ценитьпридется注意издаэтотиндивидуальныйдлинныйстепенькрамкадляединица,еслисуществовать в полевом режиме,Соответственно, его следует увеличить вдвое.
  • gaps_in_frame_num_value_allowed_flag,этотиндивидуальныйсинтаксические элементыравный 1 час, выражать разрешенные синтаксические элементы frame_num Может быть прерывистым. Канал передачи серьезно заблокирован, и сервер кодирования не может отправить все последующие изображения. Это позволяет отбросить несколько изображений кадра. существуют В норме каждое изображение кадра имеет последовательность последовательных из frame_num значение, декодер проверяет приезжатьесли frame_num Если оно не является непрерывным, можно определить, что изображение было удалено браузером. Это означает, что декодер должен активировать механизм маскировки ошибок, чтобы приблизительно восстановить эти изображения, поскольку эти изображения могут использоваться в качестве ссылок для последующих изображений. 0 Когда стол не позволяет frame_num Прерывистость, то есть существующее устройство кодирования не может сбрасывать изображения ни при каких обстоятельствах. На этот раз H.264 Позволяет декодеру не проверять frame_num из Непрерывность для уменьшения объема вычислений. В данном случае это все равно происходит frame_num прерывистый,выражатьсуществоватьпередача инфекциисередина Происходит потеря пакетов,Декодер обнаружит потерю пакетов с помощью других механизмов.,Затем запустите Error Hide и восстановите изображения.
  • pic_width_in_mbs_minus1,Этот элемент синтаксиса увеличивается на 1, чтобы указать ширину изображения.,кмакроблокдляединица:frame_width = 16 * (pic_width_in_mbs_minus1 + 1),макроблокразмерда 16x16。проходитьэтотиндивидуальныйсинтаксические элементыдекодированиеустройство Можетквычислитьпридетсяприезжатьяркостьточкаколичествок Пиксельдляединицаизизображение Ширинастепень:PicWidthInSamplesL = PicWidthInMbs * 16,отитакже Можеткпридетсяприезжатьцветстепеньточкаколичествок Пиксельдляединицаизизображение Ширинастепень:PicWidthInSamplesC = PicWidthInMbs * 8。кначальствопеременная PicWidthInSamplesLPicWidthInSamplesC точка Невыражать Изображение из Яркость、цветстепеньточкаколичествок Пиксельдляединицаиз Ширина。H.264 Измените размер изображения на существующее SPS определение середина, означает, что может существовать процесс связи середина с SPS Динамическое изменение изображения изразмер,Вы даже можете обрезать передаваемое изображение и вывести его.
  • pic_height_in_map_units_minus1,книгасинтаксические элементыдобавлять 1 назадобратитесь кяркийизображениевысокийстепень:PicHeightInMapUnits = pic_height_in_map_units_minus1 + 1,PicSizeInMapUnits = PicWidthInMbs * PicHeightInMapUnits。Изображение извысокийстепеньизвычислить要Сравнивать Ширинастепеньиз Расчет сложный,Потому что индивидуальное изображение может быть дарамкой или полем.,отэтотиндивидуальныйсинтаксические элементы Можетк Режим существованиярамка и режим поля соответственно рассчитывают яркость и цветность извысокий. Примечательно, что изда здесь начинается с map_unit для единицы.
  • frame_mbs_only_flag,книгасинтаксические элементыравный 0 часвыражать Все изображения этой последовательности середина шаблона кодирования являются дарамками, никакие другие шаблоны кодирования не сохраняются, существует этот синтаксический элемент эквивалентный; 1 час , выразить Эта последовательность середина изображения и режима зкодирования может быть дарамкой, а может быть да полем или рамкой поля адаптивной, определенным индивидуальным изображением, конкретно дающим какое зависит от других синтаксических элементов определяют. объединить map_unit по смыслу здесь приведен предыдущий элемент индивидуального синтаксиса pic_height_in_map_units_minus1 из Входитьодиншаги синтаксического анализа:
    • когда frame_mbs_only_flag равный 1,pic_height_in_map_units_minus1 обратитесь киздаодининдивидуальный picture серединарамкаизвысокийстепень;
    • когда frame_mbs_only_flag равный 0,pic_height_in_map_units_minus1 обратитесь киздаодининдивидуальный picture серединаполеизвысокийстепень。
    • Месток Можеткпридетсяприезжатьследующеекмакроблокдляединицаизизображениевысокийстепень:
    • FrameHeightInMbs = ( 2 – frame_mbs_only_flag ) * PicHeightInMapUnits
    • PictureHeightInMbs= ( 2 – frame_mbs_only_flag ) * PicHeightInMapUnits

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

PPS середина сохраняет каждое кадркодирование поста изображения, от которого зависит его параметр.

К основным параметрам ППС относятся:

  • pic_parameter_set_id,Указывает текущий PPS из идентификатор, связанный с каждым произведением через этого человека id Цитировать верно следует из PPS параметр.
  • seq_parameter_set_id,Указывает текущий PPS Цитата из SPS из id。
  • entropy_coding_mode_flag,выражатьэнтропиякодированиеизвыбирать,Это предложение Юридический элемент для 0 час,выражатьэнтропиякодированиеиспользовать CAVLC,Это предложение Юридический элемент для 1 часвыражатьэнтропиякодированиеиспользовать CABAC
  • pic_order_present_flag,POC Из трех методов расчета существуют срезы, также необходимо использовать некоторые синтаксические элементы, такие как параметры. Этот синтаксический элемент необходим. 1 В заголовке часавыражатьсуществовать будут синтаксические элементы выражениеть и эти параметры; этот синтаксический элемент равен 0 час,выразить В заголовке не указаны эти параметры,Используйте для этих параметров значения по умолчанию.
  • num_slice_groups_minus1,книгасинтаксические элементыдобавлять 1 назадвыражатьизображениесерединакусок Группаизиндивидуальныйчисло。H.264 нет специализированного элемента посередине синтаксиса используются длявыражатьда Использовать ли шаблон группы, когда этот синтаксический элемент равен 0 (Прямо сейчас Толькоиметьодининдивидуальныйкусок Группа),выражатьне использует установленный режим,За ним не будут следовать элементы синтаксиса, используемые для вычисления карты среза.
  • slice_group_map_type,когда num_slice_group_minus1 больше, чем 0,То есть используйте режим группы фильмовчас,Этот синтаксический элемент появляется в потоке кода середина.,использоватьквыражатькусок Группаразделениетип。map_units изопределение:
    • рамка Адаптивный режим полячас,map_units обратитесь киздамакроблокверно;
    • Полевой режимчас,map_units обратитесь киздамакроблок;
    • рамкамодельчас,map_units обратитесь киздаимакроблоквернопохожийиз,начальство Вниздваиндивидуальныйнепрерывныймакроблокиз Группа合тело。
    • когда frame_mbs_only_flag равный 1 час,map_units обратитесь кисто естьмакроблок;
    • когда frame_mbs_only_falg равный 0 час:
  • num_ref_idx_l0_active_minus1,добавлять 1 После выразить очередь текущего эталонного кадра по длине, то есть сколько отдельных эталонных кадров (включая короткие и длинные). Стоит отметить, что при декодировании изображения в режиме поля длина очереди опорных кадров должна быть умножена на этот синтаксический элемент. 2. Потому что в режиме для поля каждый кадр должен быть разложен и сохранен в виде поля, действительно существующего. (Упомянутый здесь полевой режим включает в себя адаптивный полевой режим поля изображения и макроблок в полевом режиме) книгасинтаксические элементыизценитьиметьвозможныйсуществоватькусок头被Тяжелый载。существоватьнабор параметров последовательностисерединаиметьсинтаксические элементы num_ref_frames Также да связано с очередью эталонных кадров, они отличаются от да num_ref_framesвыражать относится к максимальному значению очереди кадров, и декодер использует его значение для выделения пространства памяти;num_ref_idx_l0_active_minus1 выразить количество систем отсчета, в которых мы уже существуем, и нашу фамилию active Это также можно увидеть в .этотиндивидуальныйсинтаксические элементыда H.264 Один из наиболее важных синтаксических элементов середина, устройство кодирования сообщает декодеру, какой индивидуальный вектор движения указывает на какого человека. уальный относится к изображению час, а да непосредственно передает изображение по номеру, а да передает изображение, существующее в очереди кадров, с серединаиз порядкового номера. Этот индивидуальный порядковый номер не передается потоком кода дасуществовать середина, а декодер дакодирования синхронизирует и помещает опорное изображение в очередь, используя тот же метод, и получает индивидуальный порядковый номер. Эта индивидуальная очередь будет динамически обновляться после каждого индивидуального изображения и даже после каждого индивидуального клипа. Поддержание очереди опорных кадров для кодека очень важно в работе, и этот элемент синтаксиса, поддерживающий очередь опорных кадров, является важной основой. Очередь эталонной рамки из комплекса механизма обслуживания да H.264 Это также важная и отличительная часть.
  • num_ref_idx_l1_active_minus1 Он соответствует семантике предыдущего индивидуального синтаксического элемента, только вот этот Элементы синтаксиса используются для list1, а предыдущий Элементы синтаксиса используются для list0。
  • constrained_intra_pred_flag,существовать P и B Срезы середина, рамки внутри кодирования макроблоков из соседних макроблоков могут использовать израмку между кодированием. когда Этот синтаксический элемент равен 1 время выражениерамка внутри макроблока кодирования не может быть предсказано с помощью макроблока кодирования рамки из пикселей внутри кодирования, т.е. Макроблок кодирования в рамке может прогнозировать только свои собственные пиксели из соседнего макроблока кодирования в рамке, и этот синтаксический элемент равен; 0 час,выражать не имеет таких ограничений, как существование.

3) Дополнительная расширенная информация SEI

SEI То есть дополнительная информация (Supplemental Enhancement Информация), который относится к категории потока кода. Он предоставляет метод добавления дополнительной информации в поток видеокода. H.264 Одна из стандартных функций.

Основные характеристики SEIиз следующие:

  • Это не обязательная опция в процессе декодирования;
  • Возможно, поможет процесс декодирования (устойчивость к ошибкам, коррекция ошибок);
  • интегрированныйсуществоватьвидео Поток кодасередина。

такжето есть сказано, что кодирование видео существует, выходной видеопоток из часа времени не может быть обеспечен SEI информация. Хотя процесс передачи видео, декапсуляция и декодирование могут быть по каким-то причинам отброшены. SEI Контент, но существующий видеоконтент с конца генерации и процесса передачи, может быть вставлен SEI Информация из. Эта вставленная информация и другой видеоконтент достигают конечного потребителя через канал передачи «приехать».

SEI да вроде NAL тип единицы. Его структура примерно следующая:

Язык кода:javascript
копировать
// H.264
0x06,n индивидуальный FF байт + 1 индивидуальный Нет FF байт,16 байт UUID,userData,0x80 или 0x0080
  • Начальный код: H.264 середина SEI из NAL тип устройства да 0x06;H.264 середина SEI из NAL тип устройства да 0x4E、0x01。
  • Пользовательский: SEI За исключением начала NAL Помимо поля типа единицы, существуют также различные подтипы существования. H.264 середина Нет. 2 индивидуальныйбайтили ВОЗ H.265 середина Нет. 3 индивидуальныйбайт 0x05 выражать Следить за пользовательскими данными.
  • Длина полезной нагрузки: выразить, за которой следует длина изпользовательских данных.,вычислитьметодда:n * 255 + XY,такжето есть изменить длину данныхминус 255,сколькоиндивидуальный Просто пишите столько, сколько хотитеиндивидуальный ФФ, ухожу изесли не для 0,Снова Писатьодининдивидуальныйбайт。
  • Загрузить контент: Загрузить контент да UUID + payload content。UUID зафиксированный 16 индивидуальныйбайт,использовать Вокругточка Неттакой жеизбизнес。payload content выражать пользовательские данные.

4) Нарезка

одинрамкаизображение Можеткодированиестановитьсяодининдивидуальныйили ВОЗмногоиндивидуальныйкусок,Каждый срез содержит целые отдельные макроблоки.,Фрагментация ограничивает распространение и передачу кода ошибки.,Держите части кодирования независимыми друг от друга.

Состав детали:

Ключевые параметры Slice серединаиз включают в себя:

  • slice_type,Указывает тип текущего изображения. Конкретные типы следующие. Это середина,IDR imageчас,slice_type равный 2、4、7、9。
  • pic_parameter_set_id,выражать Цитата из PPS из id。
  • frame_num,выражатьпорядок декодирования。Каждыйиндивидуальныйссылкарамка都иметьодининдивидуальныйпо очерединепрерывныйиз frame_num Они помечены как дляиз, что указывает порядок декодирования каждого изображения из. Но на самом деле появятся и нереференсные заголовки в рамках frame_num。Толькодакогда Должениндивидуальныйизображениедассылкарамкачас,это Местонестиизэтотиндивидуальныйсинтаксические элементысуществоватьдекодированиечас Это имеет смысл。H.264 верно frame_num из значений указываются следующим образом: при наборе параметров серединаиз синтаксического элемента gaps_in_frame_num_value_allowed_flag Нетдля 1 час,Каждыйиндивидуальный Изображение из frame_num Стоимость да предыдущая индивидуальная Справочная рамкаиз frame_num увеличение стоимости 1。
  • field_pic_flag,Этот фрагмент дасуществовать идентифицирует шаблон кодирования изображения из одного уникального отдельного синтаксического элемента. Так называемый режим изкодирования относится к израмкакодированию, кодированию полей, адаптивному кодированию кадровых полей.
  • idr_pic_id,IDR Изображение из логотипа. другой IDR Изображения различаются idr_pic_id ценить. Примечательно изда, IDR Изображение не эквивалентно I изображение,Толькоиметьсуществоватьделатьдля IDR Изображение из I рамка имеет только этот индивидуальный синтаксический элемент, существует режим поля, IDR рамкаиз Два индивидуальных поля имеют одинаковые idr_pic_id ценить。idr_pic_id из Диапазон значенийда [0,65535]frame_num похожий,когда его значение выходит за рамки этого индивидуального диапазоначас,Он возобновит подсчет в цикле.
  • pic_order_cnt_lsb,существовать POC из Первый алгоритм серединаэтот элемент синтаксиса для вычисления POC ценить,существовать POC из Первый алгоритм серединада передается явно POC из значения, в то время как два других алгоритма проходят frame_num нанести на карту POC изценить。

(Представлено выше,Мы узнали о теоретических основах кодирования видеоиз,Обсуждено H.264 Основные понятия кодирования видео, инструменты кодирования, процесс кодирования и структура кодового потока. верносуществовать H.264 На основе итерации H.265 и H.266 изкодированиеинструментиулучшать,Мы продолжим обсуждать это позже,Следите за обновлениями)

- над -

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose