что такое gop кадры

Что такое группа видеокадров и что необходимо учитывать при настройке кодера

Группа видеокадров (ГВК или GOP — group of pictures) представляет собой набор последовательных изображений и определяет порядок, в котором расположены intra (I) и inter (P и B) кадры.

GOP часто обозначается двумя числами, например M = 3, N = 12. М указывает расстояние между двумя опорными кадрами (I или P), а N определяет расстояние между двумя полными изображениями (I-кадрами). Например, для M = 3 и N = 12, структура GOP будет выглядеть так: IBBPBBPBBPBBI.

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

Иногда при смене плана сцены текущий и предыдущий кадры различаются настолько сильно, что в начале новой сцены выгоднее использовать I-кадр вместо P или B. Кодеры умеют реагировать на такие изменения — такая возможность называется «обнаружение смены сцен» (scene change detection или SCD).

P- и B-кадры используются, чтобы кодировать изменения в текущем кадре относительно предшествующих кадров. Наиболее универсальная структура последовательности P- и B-кадров: 2–3 B-кадра на один P-кадр.

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

Длина. Длинные GOP применяют в файлах, либо в ОТТ-вещании (например, когда длина GOP в секундах равна продолжительности сегмента). Для лайв-вещания рекомендуется сделать GOP поменьше по нескольким причинам. Например:

Структура. Иерархический (пирамидальный) GOP обеспечивает лучшее качество картинки. Этот режим позволяет B-кадрам ссылаться друг на друга. Адаптивное количество B-кадров подходит для кодирования высокодинамических видеорядов со сложным движением. В моменты сложного движения используется большее количество P-кадров и структура GOP изменяется.

Обнаружение смены сцен. Большинство кодеров детектируют изменение плана сцены и автоматически вставляют в сцену полный I-кадр. Но, если контент имеет частые смены планов (например, новости), то вставка полных кадров может привести к изменению GOP структуры. Это создаст дополнительную задержку потока на несколько секунд. Если буфер приёмного устройства переполнится, то зрители увидят стоп-кадры и рассыпание видео (обнаружение смены сцен можно увидеть на рис. 1).

Среднее значение encode ratio (avg) для всего потока, I-, P- и B-кадров. Показывает во сколько раз сжато исходное видео. C его помощью можно проверить, насколько хорошо отработал кодер в целом и выдержал ли требуемые пропорции avg[EncRatio(I)]

Источник

Что такое группа видеокадров и что необходимо учитывать при настройке кодера

Группа видеокадров (ГВК или GOP — group of pictures) представляет собой набор последовательных изображений и определяет порядок, в котором расположены intra (I) и inter (P и B) кадры.

GOP часто обозначается двумя числами, например M = 3, N = 12. М указывает расстояние между двумя опорными кадрами (I или P), а N определяет расстояние между двумя полными изображениями (I-кадрами). Например, для M = 3 и N = 12, структура GOP будет выглядеть так: IBBPBBPBBPBBI.

I (IDR) кадры

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

Иногда при смене плана сцены текущий и предыдущий кадры различаются настолько сильно, что в начале новой сцены выгоднее использовать I-кадр вместо P или B. Кодеры умеют реагировать на такие изменения — такая возможность называется «обнаружение смены сцен» (scene change detection или SCD).

P- и B-кадры

P- и B-кадры используются, чтобы кодировать изменения в текущем кадре относительно предшествующих кадров. Наиболее универсальная структура последовательности P- и B-кадров: 2–3 B-кадра на один P-кадр.

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

Советы по настройке кодера для телевещания

Длина. Длинные GOP применяют в файлах, либо в ОТТ-вещании (например, когда длина GOP в секундах равна продолжительности сегмента). Для лайв-вещания рекомендуется сделать GOP поменьше по нескольким причинам. Например:

Структура. Иерархический (пирамидальный) GOP обеспечивает лучшее качество картинки. Этот режим позволяет B-кадрам ссылаться друг на друга. Адаптивное количество B-кадров подходит для кодирования высокодинамических видеорядов со сложным движением. В моменты сложного движения используется большее количество P-кадров и структура GOP изменяется.

Обнаружение смены сцен. Большинство кодеров детектируют изменение плана сцены и автоматически вставляют в сцену полный I-кадр. Но, если контент имеет частые смены планов (например, новости), то вставка полных кадров может привести к изменению GOP структуры. Это создаст дополнительную задержку потока на несколько секунд. Если буфер приёмного устройства переполнится, то зрители увидят стоп-кадры и рассыпание видео (обнаружение смены сцен можно увидеть на рис. 1).

Среднее значение encode ratio (avg) для всего потока, I-, P- и B-кадров. Показывает во сколько раз сжато исходное видео. C его помощью можно проверить, насколько хорошо отработал кодер в целом и выдержал ли требуемые пропорции avg[EncRatio(I)]

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

Источник

Назад к основам: что такое «группа изображений» (GOP)?

Оригинал статьи: ссылка (Bryan Samis, Sr. Specialized Solutions Architect, AWS Elemental Media Services)

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

В этой статье мы рассмотрим такое понятие, как “Group of Pictures (GOP)” – группа изображений или группа кадров, которое используется в современных алгоритмах кодирования видео, включая такие алгоритмы межкадрового кодирования, как MPEG-2, H.264 и H.265.

Ну, что же, давайте начнём.

Зачем нам в принципе нужно сжимать видео?

Несжатое или некомпрессированное видео, которое передается по таким интерфейсам, как “High Definition Multimedia Interface” (HDMI), “Serial Digital interface” (SDI) или Ethernet требуют большой пропускной способности. Таблица, приведённая ниже, показывает примерные значения битрейтов, которые требуются для работы с несжатым цифровым видео сигналом для различных разрешений (размеров изображения) и частотах кадровой развертки (количеству передаваемых изображений/кадров в секунду времени):

1.5 Гигабита в секунду

3 Гигабита в секунду

12 Гигабит в секунду

РазрешениеБитрейт
1280×720 (720 50/60p)/1920×1080 (1080 25/30i)
1920×1080 (1080 50/60p)
3180 x 2160 (2160 50/60p or 4K)

Хотя работа с видеосигналами со скоростью в несколько Гигабит в секунду возможна в рамках профессионального студийного комплекса, совершенно очевидно, что транслировать 1,5 Гбит/с в дома большинства зрителей или на их мобильные устройства невозможно. Для большей части пользователей домашние интернет-провайдеры даже не способны предоставить такую скорость подключения, не говоря уже о скорости скачивания. Таким образом, чтобы доставлять видео через Интернет или другую среду с фиксированной пропускной способностью (например, через спутник, эфир или кабель), необходимо кодировать или сжимать видео до меньших объемов (битрейтов) или иначе говоря, компрессировать (обычно в диапазоне от 1 до 20 Мбит/с).

Как работает видео компрессия?

Сколько времени вы готовы потратить на погружение в эту область? Для глубокого понимания специфики алгоритмов кодирования видео потребуются годы обучения. Обычно это является предметом исследованиий аспирантов в области компьютерных наук или математики. В этой публикации мы лишь поверхностно коснемся основ, объясняющих общие принципы кодирования видео.

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

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

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

На примере трёх последовательных кадров из мультфильма “Big Buck Bunny” видно, что большая часть содержимого от кадра к кадру остается неизменной, лишь слегка меняются положение крыльев бабочки.

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

Второй тип сжатия, известный как пространственное сжатие, также используется для сжатия ключевых кадров путём поиска и устранения избыточности в самом изображении или кадре. Давайте ещё раз вернёмся к примеру новостей и представим единичный снимок изображения, где диктор читает новости. В большинстве случаев пиксели (пиксель – это наименьший логический элемент двумерного цифрового изображения) в этом изображении похожи на пиксели, которые их окружают, поэтому мы можем применить тот же метод, что и ранее, отправив только различия между одной группой пикселей и последующей группой. Это тот же метод используется для сжатия обычных изображений (картинок, фотографий, и т.п.), когда мы сохраняем их в формате JPEG (широко известный и распространенный формат сжатия одиночных изображений, разработанный одноименной группой разработчиков Joint Photographic Experts Group).

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

На примере кадра, извлечённого из того же мультфильма “Big Buck Bunny” видно, что пиксели обычно окружены другими пикселями аналогичного цвета – например, в небе синие пиксели окружены другими синими пикселями, а белые пиксели окружены другими белыми пикселями в облаке. При кодировании используется этот факт, который позволяет существенно сжимать (уменьшать объем данных) изображения с применением алгоритмов пространственного сжатия без видимой или существенной потери качества.

Надеюсь пока все понятно! Ну так что же все же это – GOP?

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

Итак, теперь, когда вы понимаете, почему так важно регулярно вставлять ключевые кадры в видеопотоке, мы можем поговорить о группе изображений или группе кадров (GOP). Проще говоря, GOP – это расстояние между двумя ключевыми кадрами, измеряемое количеством кадров или промежутком времени между ключевыми кадрами. Например, если ключевой кадр вставляется в видео каждую секунду со скоростью 25 кадров в секунду, длина GOP составляет 25 кадров или 1 секунду. Хотя реальная длина GOP зависит от выбранной реализации и конкретного применения, обычно она находится в диапазоне 0.5–2 секунды.

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

«Ключевые кадры»? «Кадры, несущие разницу между текущим и ключевым кадром»? Нет ли для них других более официальных названий?

Конечно есть! В стандартах кодирования MPEG-2 и выше ключевые кадры обычно известны, как кадры с внутренним кодированием или сокращенно I-кадры («intra-coded frame»). Они названы так потому, что кадры сжимаются с использованием пространственного сжатия, и, таким образом, вся информация, необходимая для декодирования этого типа кадра, есть в нем самом. Декодеру не нужно каких-либо других кадров для воссоздания изображения.

Важно заметить, что начиная со стандарта H.264 и выше был введен еще один специальный тип кадра, называемый “ Instantaneous Decoder Refresh ” (или IDR-кадр), который представляет из себя ключевой I-кадр, содержащий дополнительно специальную команду для декодирующего устройства для очищения референсного буфера. IDR кадр указывает, что ни один кадр после кадра IDR не может ссылаться на какой-либо кадр перед ним. Данный фукционал широко используется для адаптивного стримминга – вещания через интернет, где один и тот же контент вещается небольшими частями/кусками с разными разрешениями и битрейтами, и приемное устройство, в зависимости от доступной на данный момент времени для него полосы, может запросить копию с меньшим или больщим видео битрейтом, обеспечив тем самым беспрерывное декодирование видео, хотя и с потерей качества в моменты падения скорости доступа в интернет).

Хотя между кадрами I и IDR есть тонкие различия, для понимания GOP мы можем рассматривать их так, как если бы они были одинаковыми.

Вы можете думать об I-кадре, как о простом статичном изображении в формате JPEG. Обычно I-кадры используют наибольшее количество битов в видеопотоке (имеют больший размер), потому что они используют только пространственное сжатие, и совсем не используют временное.

А как насчет «кадров, несущих разницу между текущим и ключевым кадром»? Есть два типа кадров, которые мы используем для передачи информации о различиях декодеру. Первый называется прогнозируемым или разностным кадром (P-кадр, “Predicted frame”). Он называется прогнозируемым кадром, потому что он содержит информацию о том, что изменилось по сравнению с предыдущими кадрами. P-кадры предоставляют «различия» между текущим кадром и одним (или несколькими) кадрами, которые были перед ним. Например, Р-кадр, который следует сразу за I-кадром, использует неизменную информацию из этого I-кадра и дополняет ее своей межкадровой разностью. Если за этим P-кадром следует еще один Р-кадр, то он в свою очередь берет неизменную информацию из предыдущего P-кадра (который в свою очередь использовал неизменную информацию I-кадра) и дополняет ее своей межкадровой разностью. P-кадры сжимаются гораздо лучше, чем I-кадры, поскольку они используют преимущества, как временного, так и пространственного сжатия и занимают меньше битов в видеопотоке.

Последний тип кадра, которые мы используем для передачи информации о различиях – это кадр с двунаправленным прогнозом или B-кадр (“Bi-predicted frames”). Они также могут называться обратными кадрами.

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

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

Те из вас, кто всё еще не потерял нить объяснения, могут спросить, как B-кадр может заглядывать в будущее, чтобы указать различия между ним и будущим кадром. Опять же, детали немного выходят за рамки этой публикации, но происходит то, что устройство кодирования (кодер) буферизует прошлые и будущие кадры перед кодированием промежуточных кадров. Оно отправляет эти кадры в декодер не по порядку, поэтому будущий кадр (I или P) фактически поступает в декодер раньше, чем B-кадры. Затем декодер создает промежуточные кадры и воспроизводит их в правильном порядке, используя информацию о временной синхронизации, добавленную кодером на этапе кодирования в транслируемый сигнал или видеофайл.

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

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

I и B, и P – как много всего! Как же это выглядит в реальности?

Типичная структура GOP содержит повторяющийся шаблон кадров B и P, “зажатый” между I кадрами. Примером типичного GOP может быть что-то вроде:

I B B P B B P B B P B B I

Последовательность, подобная приведённой выше, может быть представлена двумя числами: M и N. M представляет собой расстояние между двумя I или P-кадрами, тогда как N представляет собой расстояние между двумя I-кадрами. Вышеупомянутая группа кадров (GOP) описывается, как M = 3, N = 12.

Профессиональные видеоанализаторы могут визуально отображать группы изображений и типы кадров:

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

Но вы также можете увидеть структуру GOP закодированного видео с помощью бесплатного программного обеспечения, к примеру, такого как ffprobe:

Из результатов выполнения команды, приведеннй выше, мы видим, что наш образец видео имеет длину GOP 12 кадров.

Как настройки длины GOP влияют на качество кодирования видео?

Чем короче длина GOP, тем меньше кадров B и P существует между I кадрами. Помните, что кадры B и P предлагают нам наиболее эффективное сжатие, поэтому в видео с более низким битрейтом короткая длина GOP приведет к ухудшению качеству видео. Увеличение длинны GOP, в свою очередь, обеспечивает более эффективное сжатие контента, что позволит ожидать более высокого качества видео при более низкой скорости передачи данных, однако это может повлиять на увеличение времени переключения между каналами и на отказоустойчивость.

В качестве примера, два последующих изображения представляют увеличенный фрагмент одного и того же кадра из мультфльма Big Buck Bunny, закодированного со скоростью 2,5 Мбит/с с использованием идентичных настроек кодирования, за исключением длины GOP. Первое изображение сжато с GOP, равным 4 кадрам, а второе – с длиной GOP, равной 90 кадрам.

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

Кадр того же видео, закодированный со скоростью 2,5 Мбит/с, с GOP, равным 4 кадрам (вверху), и GOP, равным 90 кадрам (внизу), это наглядная иллюстрация того влияния, которое настройки GOP могут иметь на качество видео. Поскольку в верхнем примере меньше кадров B и P, кодер должен более грубо квантовать I-кадры (сжимать их больше), чтобы соответствовать выбранному битрейту, что приводит к блочности, размытости и потере деталей.

Вышесказанное верно для большинства случаев кодирования. Однако при кодировании с очень высокой скоростью передачи данных, где поддержание высокого качества изображения более важно, чем сохранение битов (обычно 50 Мбит / с и выше), можно использовать длину GOP, равную 1 кадру (то есть, когда каждый кадр является I-кадром). Обычно это используется только на этапе производства и для создания архивов. В этом случае требования к качеству превалируют над требованиями к сохранению полосы.

Как настраивать параметры GOP при кодировании?

В AWS Elemental MediaConvert (облачный сервис AWS для кодирования видео файлов) вы можете настроить параметры GOP, выбрав видеодорожку требуемого выхода и прокрутив вниз до дополнительных настроек.

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

В примере выше примере мы указали длину группы изображений равной 90 кадров с двумя B-кадрами между опорными или прогнозируемым кадрами. Другими словами, приведенная выше конфигурация представляет M = 3, N = 90.

В AWS Elemental MediaLive (облачный AWS сервис для кодирования линейного контента в реальном времени) Вы найдёте настройки GOP, выбрав видеодорожку требуемого выходного потока и прокрутив вниз до раздела «Структура GOP».

что такое gop кадры. Смотреть фото что такое gop кадры. Смотреть картинку что такое gop кадры. Картинка про что такое gop кадры. Фото что такое gop кадры

В этом примере длина GOP равна 60 кадров с 3 B-кадрами между опорными кадрами. Другими словами, приведенная выше конфигурация представляет схему M = 4, N = 60.

Наконец, если вы осуществляете кодирование с помощью бесплатного программного обеспечения с открытым исходным кодом, такой как например ffmpeg с x264, вы можете указать настройки GOP, включив аргументы keyint = и bframes = в испольняемую команду:

При данных настройках видео будет кодироваться, используя длину GOP = 24, с двумя B-кадрами между опорными кадрами, или M = 3, N = 24.

Какой тип кадров наиболее важен?

Частый вопрос на собеседовании для специалистов по обработке видео: «какой тип кадра самый важный?». Распространенный (и вполне приемлемый) ответ, что I-кадры являются наиболее важными, потому что без них другим типам кадров было бы не на чем основывать свои различия. Но тонкий нюанс этого вопроса в том, что на него нет однозначного правильного ответа. С таким же правом можно сказать, что B-кадры являются наиболее важными, потому что они обеспечивают наилучшее сжатие. В конце концов, какой смысл в сжатии видео, если оно работает не эффективно? Цель этого вопроса не в том, чтобы получить правильный ответ, а в том, чтобы услышать, как кандидат обосновывает свой ответ, поскольку это дает ключ к пониманию того, насколько хорошо он знаает фундаментальные основы кодирования видео.

Надеюсь, после прочтения этой публикации вы будете понимать различные методы сжатия, используемые в кодировании видео, какие типы кадров при этом бывают, и то, как они объединяются, чтобы сформировать GOP.

И как заключение, хотелось бы чтобы Вы сами попытались ответить на вопрос: «Какой тип кадра, по вашему мнению, наиболее важен?»

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *