Пиксельная версия картины Винсента Ван Гога «Пшеничное поле и Жнец».
(Основная логика этой статьи: Какова теоретическая основа кодирования видео → Основные концепции, инструменты кодирования, процесс кодирования и структура кодового потока видеокодирования 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)Серия ISO-MPEG/ITU-T:Зависит Группа экспертов по движущимся изображениям (MPEG), дочерняя компания Международной организации по стандартизации (ISO), и Организация по стандартизации электросвязи Международного телеграфного союза (ITU-T) разработали стандарт излучодирования.
2)серия АОМ:предшественникда Зависит от Google доминирующий VPx Стандарт кодирования для серии. Впоследствии ряд компаний образовали Альянс открытых медиа (Alliance for Open Media). for Open Media, AOM) продолжает разрабатывать новые стандарты кодирования.
3)Серия АВС:AVS(Audio Video coding Standard) — серия стандартов кодирования с независимыми правами интеллектуальной собственности в Китае.
Здесь мы представляем только H.264, H.265 и H.266.
В H.264 элементы синтаксиса можно разделить на пять уровней: «последовательность», «изображение», «срез», «макроблок» и «субмакроблок».
существовать H.264 середина,По сравнению с предыдущей иерархической структурой самое большое отличие состоит в том, что уровень последовательности и уровень изображения отменены.,иБольшинство синтаксических элементов, изначально принадлежавших последовательности и заголовку изображения, освобождаются для формирования двухуровневого набора параметров последовательности и изображения.,Остальные части укладывают ломтиками. существуют в рамках этого механизма,Зависит Поскольку набор параметров независим и может передаваться многократно, для его защиты используется специальная технология. Набор параметров находится в другом канале, чем внешний набор параметров из синтаксического элемента середина, который да H.264 В качестве предложения мы могли бы использовать более безопасный, но более дорогой канал для передачи набора параметров.
кодекдляПрограммное решение для мягкого программирования и жесткое решение для жесткого программирования:
Мягкое программирование использует CPU иметь дело с,Преимущества: Сильная возможность регулировки.,Сравнимо с тяжелым трудом,Программный редактор может настроить параметры для создания видео более высокого разрешения с той же скоростью передачи данных.,Кроме того, программное редактирование может иметь лучшую совместимость.,Адаптируется ко всем устройствам,Но недостатком является то, что производительность может быть плохой.,Это не так быстро, как жесткое программирование, и имеет низкое энергопотребление.
По сравнению с жесткими решениями, программные решения могут иметь более низкую производительность и меньшее энергопотребление, чем жесткие решения, но они обладают лучшей совместимостью и лучшей адаптируемостью.
В настоящее время в большинстве бизнес-сценариев мобильных приложений используется стратегия кодирования: терминал мобильного телефона должен попытаться использовать жестко закодированное кодирование для получения полностью четкого видео высокого качества.,Отправить высокое четкое видео на сервер,Зависит Затем сервер мягко кодирует и транскодирует скорость многоканального кода из видео, а затем передает CDN Распространено до конца просмотра. Кроме того, некоторые бюджетные телефоны Android могут из-за аппаратных проблем поддержка жесткого программирования неудовлетворительна. В этом случае вы можете использовать мягкое программирование. Если жесткое программирование не удается, вы можете переключиться на мягкое программирование, чтобы избежать проблемы. Конечно, иногда для некоторых моделей терминалов с превосходной производительностью или краткосрочными бизнес-сценариями вы также можете отдать приоритет программному редактированию, например записи. 15 Вторая короткая видеосцена, во-первых, время относительно короткое, а производительность машины неплохая. CPU Потребление, так что та же скорость передачи данных может снова улучшить четкость.
Для большинства сценариев применения стратегия декодирования в основном использует жесткое декодирование и мягкое декодирование в качестве резервной копии. Кроме того, для некоторых типов кодирования, которые не поддерживаются жестким декодированием, можно использовать мягкое декодирование. Например, некоторые модели не поддерживают декодирование H.265, поэтому можно использовать только мягкое декодирование.
Режим кодирования H.264 можно понимать так: существует видео середина,абзацчас Рядом в номерахиз Изображение изпиксель、Яркость и цветовая температураиз Разница обычно небольшая。Так что не надо идтиверноабзацчасв комнатеиз Каждое изображениенад Сейичирамкаизкодирование,А можно выбрать первое изображение кадра этого часового интервала и выполнить над кодированием,И следующее изображение записывает только то же изображение, что и первое.рамканадвсекодирование Изображение изпиксель、Яркость и цветовая температураждатьособенностьиз Просто разница,И так далее.
Что такое последовательность??вышеизэтот абзацчасв комнатеизображениеизменять Не большойизизображение Просто собери этоксказать Издляодининдивидуальныйпоследовательность。Последовательности можно понимать как имеющие одинаковые характеристики фрагмента данных изображения.нодаеслиопределенныйиндивидуальныйизображениеи Извпередизизображениетрансформироватьочень большой,Трудно обратиться к предыдущей израмке для создания новой.,Затем завершите предыдущую индивидуальную последовательность,Начните следующую индивидуальную последовательность. Повторите вышеизложенное,Создайте новую последовательность.
H.264 В структуре закодированные данные видеоизображения называются кадром. Кадр состоит из одного слайса (среза) или нескольких слайсов. Слайс состоит из одного или нескольких макроблоков (МБ). 16x16
из YUV Состав данных. Макроблок это H.264 кодированиеиз базового блока.
существовать H.264 В протоколе определены три типа кадров, а именно: I Рама, Б рамка с P рамка.
1) Я боксирую
I рамка,Прямо сейчасрамка Внутрикодированиеизображениерамка,Никаких ссылок на другие изображения,Используйте эту информацию о рамке только для кодирования.
Я делаюиз Особенности:
Процесс кодирования кадра:
2) Р-кадр
P рамка, то есть прогнозируемое кодирование изображения рамки, перед использованием I рама или P кадр, используя метод прогнозирования движения для кодирования между кадрами.
P рамкаиз Прогнозирование и реконструкция: P В основе кадра I рамкадляссылкарамка,существовать I найти в рамке P В кадре «некоторой точки» из значения предсказания вектора движения берут значение разности предсказания и вектор движения и передают их вместе. существуют Приемная сторона основана на векторе движения от I найти в рамке P сформулируйте『некоторый момент』из прогнозируемого значения и прибавьте его к разнице, чтобы получить возможность приезжать P рамка『некоторая точка』стоимость образца, от можно приехатьнад целым из P рамка.
Особенности рамки P:
Основной процесс П кадркодированияиз:
3) Рамка Б
B рамка, то есть двунаправленное кодирование изображения кадра, обеспечивает максимально высокую степень сжатия, что требует как предыдущих изображений кадра (I рама или P рамка), также понадобится позже из рамки изображения (P кадр), используя метод прогнозирования движения для выполнения двунаправленного прогнозирования между кадрированием.
B рамкаиз Прогнозирование и реконструкция: Б рамкаперед из I или P рамки и спинкаиз P кадр – это система отсчета, узнайте B кадрируйте «некоторую точку» из предсказанного значения и двух отдельных векторов движения, возьмите разность предсказаний и вектор движения и передайте их. Приемная сторона основана на векторе движения, существуют два индивидуальных источника. в рамке Прогнозируемое значение объединяется с разницей, чтобы получить возможность приезжать B рамка『некоторая точка』стоимость образца, от можно приехатьнад целым из B рамка.
Особенности B-рамы:
Б. Рамкакодированиеиз основного процесса:
Введение в функцию преобразования скорости из: Алгоритм сжатия с потерями, производительность откодирование вывода по битрейтуиискажениесовместное решение。 кодированиеизглазиз:то есть существование обеспечивает определенное качество видео и минимизирует скорость кодирования, или «существует» минимизирует кодированиеискажение при определенном пределе скорости кодирования. кодированиеустройствоиз Работа:в соответствии скначальство Ставкаискажение Критерии поискаприезжатьоптимальныйкодированиепараметр. Теория информации, концепция середина скорости восстановления:существоватьпозволятьодин Фиксированный графикстепеньискажениеизв условиях,До какой степени можно сжать исходную информацию?,Прямо сейчас Какой минимум требуетсябитычислоумение описать источник。Зависит от Это полученоприезжать Ставкаискажениеписьмочисло:
R(D) = min I(X, Y)
,Он дает нижнюю границу сжатия информации, допустимого при ограниченных условиях. Но его кодирование видеосуществованиясередина трудно применить.,Потому что для различных вероятностей и условных вероятностей неизвестны,могу только сделатьдля Теоретическая ценность。 видеокодированиесерединаиз Ставкаискажениеизгиб:дляисследовалвидео Скорость кодаивидео质количествоизбаланс。Зависит от Ввиду систематического характера он не может достичь теоретического уровня проживания. R(D) Ценность, только Зависит от различных параметров изкодирования (таких как QP и «Выбрать из режима»), чтобы ограничить доступность (R, D) Рабочие точки образуют выпуклую оболочку. видеокодированиесерединаиз Ставкаискажениеоптимизация(RDO):Пройти всеизженьшеньчислокандидатмодельверновидеоруководитькодирование,Соблюдайте ограничение минимальной скорости кодирования из набора параметров, чтобы обеспечить оптимальное параметры кодирования видео. Узнайте на каждом уровне.,В конечном итоге оптимизируется общая производительность системы. Здесь предполагается отсутствие корреляции и независимая оптимизация.,Если корреляция сильная, они будут оптимизированы вместе.
Понятия DTS и PTS заключаются в следующем:
Нужно обратить внимание на изда: хотя DTS、PTS да используется для направления стороны игрока из ряда для, но они дасуществоватькодированиеизчас подождите Зависит откодированиеустройствогенерироватьиз。
Когда нет видеопотока B время кадра, обычно DTS и PTS из порядка да последовательный из. Но есть B кадрчас, пора приезжать. Ранее мы упоминали о проблеме: порядок декодирования и порядок воспроизведения несовместимы.
Например, индивидуальное видео середина, порядок показа в кадре да: I B B П, теперь существуем, нам нужно существовать, чтобы расшифровать B время кадра P информация о кадресередина, поэтому эти несколько кадров могутсуществовать потоковое видео серединаиз последовательности может да: I P B B, в это время отображается, что каждый кадр имеет DTS и PTS из работал. ДТС Подскажите, в каком порядке нам следует декодировать эти кадры, ПТС Расскажите, в каком порядке нам следует отображать эти кадры. Порядок примерно следующий:
Stream: I P B B
DTS: 1 2 3 4
PTS: 1 4 2 3
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 кадров, что снизит качество изображения.
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 имеют следующие характеристики:
H.264 Используя базовый алгоритм да『внутреннего сжатия рамки』и『внутреннего сжатия рамки』, генерируется внутрикадровое сжатие да. I алгоритм кадризации, взаимное сжатие кадра и генерация B рамкаи P Алгоритм кадриз.
внутреннее сжатие рамки также называют пространственным сжатием。когдасжатиеодинрамкаизображениечас,Учитывайте только данные этой кадризации, не принимая во внимание избыточную информацию между соседними кадрами.,На самом деле это похоже на сжатие неподвижных изображений. Алгоритм сжатия с потерями обычно используется в кадрах.,Зависит от сжимает все изображение дакодирование в рамку, поэтому его можно декодировать и отображать независимо. Внутреннее сжатие кадра обычно не достигает очень высокой степени сжатия по сравнению с кодированием. JPEG почти.
Принцип взаимного сжатия: соседние данные имеют высокую корреляцию.,Автор сказал, что изменения в информации между двумя до и после очень малы. То есть между соседними кадрами в непрерывном видео имеется избыточная информация.,По этой характеристике,Сжатие избыточности между соседними кадрами может еще больше улучшить степень сжатия.,уменьшатьсжатие Сравнивать。взаимное сжатие кадра также называют взаимосжатием для часа,он сравниваетчасмежду轴начальство Неттакой жерамка Измеждуизданныеруководитьсжатие。рамкамеждусжатиеодин Общийдабез потерьиз。рамка Разностный алгоритмда вродетипичныйизчасмеждусжатие Закон,он сравниваеткнигарамка с Разница между соседними кадрами, записывайте только этот кадр с Разница между соседними кадрами, что позволяет значительно сократить объем данных.
Кодирование сжатия по шагам примерно следующее:
H.264 Основная цель — обеспечить хорошую степень сжатия видео и хорошую привязку к сети. Для достижения этих двух целей H.264 Решение разделяет структуру системы на два отдельных уровня: «Уровень кодирования видео (VCL)» и «Уровень сетевой абстракции (NAL)».
С точки зрения уровня кодирования видео (VCL) H.264 изструктура:
С точки зрения уровня сетевой адаптации (NAL) H.264 изструктура:
Изображение нижедляодининдивидуальныйтипичныйизвидеокодированиеустройство。существоватьруководитькогдапередний сигналкодированиечас,Устройство кодирования сначала сгенерирует предварительный сигнал «вернокогда», чтобы предсказать исходный сигнал.,называетсясигнал прогнозирования(Predicted Сигнал), метод прогнозирования может предсказать между дачас и израмкой (Интер Прогнозирование), то есть использование сигнала предыдущей кадризации для прогнозирования, или Прогнозирование), то есть использование сигналов соседних пикселей одного и того же кадра для прогнозирования. Получить сигнал прибытия прогнозированияназад,кодированиеустройствовстреча Волякогдапередний сигналисигнал прогнозирования Вычестьприезжатьостаточный сигнал(Residual Signal),и Тольковерноостаточный сигнал осуществляет кодирование, таким образом, часть избыточной информации в пространстве часов и времени может быть удалена. Далее устройство кодирования не выполняет непосредственно веростаточный сигналруководитькодирование,ида Первый генералостаточный сигналпройтитрансформировать(в целомдля Дискретное изменение косинуса Изменять)РанназадКоличественная оценкак Входитьодинудаление шаганулевоймеждуначальствоиперцептивноизизбыточная информация。Количественная оценканазадпридетсяприезжатьиз Количественная оценкасистемачисловстреча Сновачерезэнтропиякодирование,Удалите статистически избыточную информацию.
Процесс кодирования и декодирования H.264 выглядит следующим образом:
Вообще говоря,да, в одной рамке,Значения яркости и цветности двух соседних пикселей обычно относительно близки друг к другу.,такжето есть цвет, который постепенно меняется и не может внезапно измениться на совершенно другой цвет. И сделайте кодирование видео, изто есть использует это индивидуальное соотношение для выполнения сжатия. оформить внутреннее предсказанието есть На основании этогоиндивидуальныйпринцип。
Предположим, что теперь нам нужны отдельные пиксели. 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 Режим прогнозирования блока яркости. Кодирование обычно выбирает режим прогнозирования, который минимизирует разницу между блоками прогнозирования икодирование.
рамкаинтерпрогнозированието есть предсказание домена час, цель существования состоит в том, чтобы устранить избыточную информацию в домене час, проще говоря есть, использует предыдущее кодирование изображения для прогнозирования кодирования изображения. Он включает в себя две важные концепции: оценку движения и компенсацию движения.
Оценка движения ищет наилучший верно соответствующий блок до того, как блок кодирования будет кодирован из изображения (опорный кадр), и вычисляет верно соответствующий блок из смещения (вектора движения).
Компенсация движения да основана на методе взаимного прогнозирования вектора движения ирамка, который представляет собой процесс получения расчетного значения момента перед кадризацией. Фактически, есть возможность вставить параметры вектора движения для получения эталонного кадра, чтобы получить кадр «когда раньше». Кроме того, компенсация движения выполняется индивидуально.
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 Горизонтальная и вертикальная составляющие уменьшаются вдвое.
Большинствочислоизображение都иметьодининдивидуальныйобщийизособенность:ровная площадкаи Внутри容缓慢изменятьокруг域占据одинширина Изображение большая часть,Область детализации и область изменения контента составляют небольшую часть. Можно также сказать,Изображение середина постоянного тока и область низких частот составляют большую часть,Область высоких частот занимает незначительную часть. так,пространственная область изображения трансформироватьприезжать в частотной области или так называемая изтрансформировать область,Произведет некоторые трансформирующие коэффициенты с очень небольшой корреляцией.,И может быть сжато кодированием,Это так называемое изтрансформироватькодирование.
также,для уменьшения динамического диапазона изображения кодированиеиз,Также обычно выполняется Количественная оценка.
существоватьизображениекодированиесередина,трансформироватькодированиеи Количественная оценкаотпринципначальство讲дадваиндивидуальныйнезависимыйизпроцесс。носуществовать H.264 середина,Объедините два отдельных процесса серединаиз в два для,и далее использует целочисленную арифметику,Уменьшите количество операций кодирования и декодирования.,Улучшите производительность сжатия изображений.
H.264 верное изображение или остаток предсказания с использованием 4×4 всечисло Дискретное изменение Технология косинуса (DCT) позволяет избежать использования предыдущего стандарта середина из универсального. 8×8 Дискретное изменение косинуса Проблемы несоответствия часто возникают при переходе к обратному преобразованию. Количественная Процесс оценки определяет Количественную ценность изображения на основе размера динамического диапазона. оценкаженьшеньчисло,Сохраняет необходимые детали изображения,И сократить поток кода.
Размер энтропии тесно связан с вероятностной моделью источника информации.,Каждый отдельный символ имеет разную вероятность появления.,Источник изэнтропии также различен. когда Источник середина Каждое событие имеет равное распределение вероятностейчас,Энтропия имеет максимальное значение. Разница между энтропией источника и ее возможным максимальным значением отражает избыточность, содержащуюся в источнике. Чем меньше избыточность источника из,То есть, чем больший объем информации несет каждый отдельный символ независимо,Тогда чем короче длина последовательности, необходимая для передачи того же объема информации,,Чем меньше знаковых битов. поэтому,Основной метод сжатия данных заключается в устранении корреляции между исходными символами.,Сделайте последовательность как можно более не запоминающейся,То есть появление предыдущего символа не влияет на вероятность появления любого последующего отдельного символа.
Использование статистических характеристик источника для сжатия скорости кода называется энтропийным кодированием.,Также называется статистическим кодированием. Энтропийное кодирование и метод кодирования со сжатием без потерь,Он генерирует поток кода, который можно без проблем декодировать для восстановления исходных данных. Энтропийное кодирование существует, строит случайный процесс, основанный на статистических свойствах.
Для кодирования видео обычно используются два метода: кодирование переменной длины (кодирование Хаффмана) и арифметическое кодирование.
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 представлять на рассмотрениеобратитесь кчислоувеличивать。использоватьарифметикакодированиенет необходимости заранеедля Каждыйиндивидуальныйвозможныйиз Источникпоследовательностьобратитесь к Фиксированная кодовая книга。ида Каждыйкогда Место Определить площадьмеждуизнижний предели Верхний предел имеет наибольшее значение для публики.высокий Допустимые битычас,Вы можете постоянно получать биты прибытия. Длина последовательности кодирования может быть такой же, как длина источника. поэтому,на самом деле,Арифметическое кодирование может приблизиться к уровню энтропии.
Арифметическое кодирование. Еще одно индивидуальное преимущество может быть достигнуто путем адаптации статистических характеристик источника путем простого обновления таблицы вероятностей символов. Условное кодирование также можно легко реализовать, используя разные таблицы вероятностей в разных контекстах. верною Хаффманкодирование,Затем кодовую книгу необходимо перепроектировать на основе обновленной таблицы вероятностей.,или верно Разработайте несколько индивидуальных кодовых таблиц для разных контекстов.
Зависит от более эффективен, чем высокоеизкодирование, и легко адаптируется.,Если сумма расчета приемлема,несомненноарифметикакодирование Сравнивать Хаффманкодированиеда вроделучшеизвыбирать。
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
Отмените и восстановите исходные данные.
0x000000 → 0x00000300
0x000001 → 0x00000301
0x000002 → 0x00000302
0x000003 → 0x00000303
В приведенной выше таблице мы упомянули первые две индивидуальные последовательности из предыдущей статьи середина и третью индивидуальную последовательность. 0x000002
да зарезервировано, а четвертый индивидуальный 0x000003
дадля Гарантированодекодированиеустройство Может быть нормальным Работа,Потому что для того, чтобы мы только что упомянули, приехать,декодированиеустройствовосстановить оригиналданныеизметодда Обнаружениеприезжать 0x000003
Просто оставь это 0x03
,этот Образецкогда Появляться原始данныедля 0x000003
час уничтожит данные, поэтому эта индивидуальная последовательность должна и должна быть вставлена 0x03
。
декодированиеустройствосуществоватьгнатьсяиндивидуальныйбайтчтение землиодининдивидуальный NAL час не то же самое, что часверно, он расшифровывается, а да расшифровывается Стартовым код机制Волявсеиндивидуальный NAL Прочитайте, вычислите длину и затем начните декодирование.
приезжать Итак, мы знаем, как разделить исходный поток кода NAL единица. Далее давайте узнаем о каждом человеке NAL Единтаиз структуры.
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 Изображения не могут использовать разделы фрагментов.
Как упоминалось ранее, РБСП Относится к необработанным байтам полезной нагрузки, которые NAL часть данных из формата инкапсуляции, инкапсуляция данных происходит из SODB (битовый поток необработанных данных). СОДБ дакодирование — необработанные данные, SODB Инкапсулированныйдля RBSP затем вставь NAL часть данных.
из SODB получить RBSP из процесса генерации:
rbsp_trailing_bits()
。rbsp_trailing_bits()
из Нет.одининдивидуальныйбитыда 1. Далее заполняем 0,прямойприезжатьбайтверновместе。cabac_zero_word
,Чтоценитьравный 0x0000
。Как упоминалось выше, существует множество типов проживания NAL-квартиры. Здесь мы объясним важные типы середина:
набор параметров последовательности、Наборы параметров изображения и изображения、Связь между фильмами:
1) Набор параметров последовательности SPS
SPS середина сохраняет набор апостериорного кодирования последовательностей изображений из зависимостей из глобальных параметров.
SPS Информация серединаиз имеет решающее значение, и если ее данные серединаиз будут утеряны, процесс декодирования может завершиться неудачей. СПС и PPS Обычно используется в качестве параметра инициализации декодера. В общем, SPS. и PPS Местосуществоватьиз NAL единица Кусочек Ввсеиндивидуальный Поток кодаизисходное положение,Но дасуществовать в некоторых сценариях,Эти две структуры также могут возникать между существующими скоростями передачи данных середина:
К основным параметрам СПС относятся:
profile_idc
: Указывает текущий H.264 Поток кодаизкодированиеоценка。Чтосерединаотделениеточкаоценка:profile_idc
ценитьдля 66)profile_idc
ценитьдля 77)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
。кначальствопеременная PicWidthInSamplesL
、PicWidthInSamplesC
точка Невыражать Изображение из Яркость、цветстепеньточкаколичествок Пиксельдляединицаиз Ширина。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 тип единицы. Его структура примерно следующая:
// H.264
0x06,n индивидуальный FF байт + 1 индивидуальный Нет FF байт,16 байт UUID,userData,0x80 или 0x0080
n * 255 + XY
,такжето есть изменить длину данныхминус 255,сколькоиндивидуальный Просто пишите столько, сколько хотитеиндивидуальный ФФ, ухожу изесли не для 0,Снова Писатьодининдивидуальныйбайт。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 изкодированиеинструментиулучшать,Мы продолжим обсуждать это позже,Следите за обновлениями)