Interested Article - Типы кадров
- 2021-07-17
- 1
Типы кадров в сжатом видеопотоке — способы кодирования и хранения информации об очередном кадре , отличающиеся друг от друга наличием или отсутствием зависимостей этого кадра от предыдущих и последующих.
Кадр — это основная структура кодирования. С кадром связаны следующие параметры: время, тип кадра, признак инициализации буфера, разрешение векторов движения и их порядок и пользовательские данные
Обычно кадр разбивается на квадратные , и тип ссылки для каждого из макроблоков определяется индивидуально, однако с ограничением, заданным типом всего кадра:
- I-кадры ( англ. Intra-coded frames , также называются «ключевыми» — keyframes — или «опорными») могут содержать только макроблоки, сжатые независимо от других кадров.
- P-кадры ( англ. Predicted frames , «разностные» кадры) могут содержать как независимо сжатые макроблоки, так и макроблоки со ссылкой на другой, предыдущий, I- или P-кадр.
- B-кадры ( англ. Bi-predicted frames , «двунаправленные», «обратные» кадры) могут содержать следующие макроблоки: независимые ( intra ), со ссылкой на предыдущий кадр ( predicted ) или со ссылкой на 2 кадра (в mpeg-2) — предыдущий и последующий ( bi-predicted ); либо на несколько предыдущих и последующих кадров ( H.264 ). B-кадры ссылаются на I-, P- или другие B-кадры.
- D-кадры ( англ. DC direct coded picture) независимо сжатые с большой потерей качества. Используются только при быстром поиске.
В новом стандарте MPEG-4 AVC/H.264 также вводится понятие SI- и SP-кадров .
Описание типов кадров
I-кадры
I-кадры кодируются аналогично кадрам JPEG . В варианте алгоритма, где имеются только I-кадры видеопоследовательность превращается в M-JPEG . I-кадры могут использоваться для произвольного доступа, поскольку им не требуется дополнительная информация. I-кадры имеют самую низкую степень сжатия.
P-кадры
P-кадры кодируются с использованием прошлых I и P-кадров. Например, кадр, который следует сразу за I-кадром, использует неизменную информацию из этого I-кадра и дополняет ее своей межкадровой разностью. Если за этим P-кадром следует еще один Р-кадр, то он в свою очередь берет неизменную информацию из предыдущего P-кадра (который в свою очередь использовал неизменную информацию I-кадра) и дополняет ее своей межкадровой разностью.
В-кадры
В-кадры используются как интерполяция между предыдущим и последующим кадрами как I так и Р типа.
D-кадры
MPEG-1 имеет уникальный тип кадра, которого нет в более поздних стандартах видео. На D-кадры никогда не ссылаются I-, P- или B-кадры. D-кадры используются только для быстрого предварительного просмотра видео, например, при быстром поиске нужного фрагмента видео.
При наличии немного более производительного оборудования декодирования, предварительный просмотр может быть выполнен путем декодирования I-кадров вместо D-кадров. Это обеспечивает более качественный предварительный просмотр, поскольку I-кадры, сжаты с меньшими потерями. Если кодер может предположить, что в декодерах доступна возможность быстрого декодирования I-кадров, он может сэкономить биты, не посылая D-кадры (таким образом, улучшая сжатие видеоконтента). По этой причине D-кадры редко используются в кодировании видео MPEG-1, а функция D-кадра не была включена ни в какие более поздние стандарты кодирования видео.
Группа кадров
Группа кадров (Group of Pictures, GOP) представляет собой наименьшую независимую структуру кодирования в видеопоследовательности. С точностью до группы кадров возможен произвольный доступ к видеопоследовательности. Связанная с группой кадров информация включает в себя временной код, флаг закрытого состояния и пользовательскую информацию.
Структура GOP часто обозначается двумя числами, например M = 3, N = 12. Первое число указывает расстояние между двумя якорными кадрами (I или P). Второй сообщает расстояние между двумя полными изображениями (I-кадрами): это размер GOP. Для примера M = 3, N = 12 структура GOP — это IBBPBBPBBPBBI. Вместо параметра M можно использовать максимальное количество B-кадров между двумя последовательными кадрами привязки.
Например, в последовательности с шаблоном IBBBBPBBBBPBBBBI размер GOP ( значение N ) равен 15 (длина между двумя кадрами I), а расстояние между двумя кадрами привязки ( значение M ) равно 5 (длина между кадрами I и P или длина между кадрами два последовательных кадра P).
Типы групп кадров
I
В кодеках MJPEG и DV видеопотока все кадры — I-типа.
I P
Семейство кодеков MPEG4 «третьей версии» (наиболее популярен был DivX 3.11, также известны DivX 4.12 и OpenDivX) имеет два типа кадров — I и P. B-кадры не предусмотрены. Такая же ситуация в семействе кодеков от : VP3 , VP6 , VP8 .
Кроме того, многие современные кодеки имеют возможные настройки, выключающие создание B-кадров для снижения затрат процессорной мощности на обработку в реальном времени.
В стандартах на сжатие видео, принятых ITU-T и ISO / IEC MPEG , обычно сжимается только разность между кадрами. Например, в сцене, где человек идёт на фоне неподвижных объектов, требуется сохранять только информацию об изменяющихся областях (к примеру, используя компенсацию движения , при которой сохраняется вектор изменения положения блока или, если похожая область в предыдущем кадре не найдена, данная область сжимается как независимое изображение). Части сцены, которые не изменяются, не сохраняются в поток, за счёт чего значительно возрастает степень сжатия по сравнению с форматами, использующими независимое сжатие каждого кадра.
Например, для I- и P-кадров в потоке образуются цепочки IPPPPPPPPPPPP… , когда первый кадр сжимается независимо, а последующие — со ссылкой на первый кадр. Это самый простой пример использования разных типов кадров в потоке.
В то время как основным преимуществом использования P-кадров является увеличение степени сжатия, их основным недостатком является резко возрастающее время доступа к кадру, поскольку для получения нужного кадра необходимо полностью распаковать всю цепочку кадров от ближайшего I-кадра. В частности, если при сжатии были заданы параметры, максимизирующие степень сжатия, при которых I-кадры встречаются редко, время задержки показа произвольного кадра в потоке может быть очень заметным.
I P B
В сжатом видеокодеком потоке по стандартам MPEG-2 , MPEG-4 , H.261 , H.263 и H.264 используются кадры трёх основных типов: I-кадры (от англ. Intra pictures ), P-кадры (от Predicted pictures ) и B-кадры (от Bi-predictive pictures или Bi-directional pictures ).
Использование B-кадров означает, что данный кадр ссылается на два соседних I- или P-кадра в потоке, в этом случае вид цепочки кадров может быть таким: IBPBPBPBPBPBPBPBP . Чаще используются цепочки IBBPBBPBBPBBPBBPBBPBBPBBP, при которой B-кадры по-прежнему ссылаются на два ближайших соседних I- или P-кадра и независимы между собой.
Данная структура позволяет в 2—3 раза ускорить время получения произвольного кадра в потоке, поскольку для его получения необходимо распаковать только каждый второй (третий) кадр (являющийся P-кадром ), начиная с I-кадра. Также в несколько раз возрастает скорость «быстрой перемотки с показом».
Особенности реализаций
Кодек Xvid при соответствующих настройках позволяет получить 4 и более подряд B-кадра. И такой поток будет корректно воспроизводиться им самим, а также декодером ffdshow . Некоторые же декодеры не умеют корректно воспроизводить более одного B-кадра подряд. [ значимость факта? ]
Ссылки
- , 1996
- от 19 августа 2018 на Wayback Machine . 2 MPEG Video Streams Properties. Mardalen Real-time Research Center, Mardalen University, Sweden (2002).
- 2021-07-17
- 1