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-кадров используется, тем выше коэффициент сжатия.
Рис. 1 Структура GOP последовательности, закодированной разными способами: 1: M=1 N=10, нет B-кадров, нет SCD; 2: M=2 N=20, B = 1, нет SCD; 3: M=4 N=30, B = 3, pyramid, SCD.
Советы по настройке кодера для телевещания
Длина. Длинные GOP применяют в файлах, либо в ОТТ-вещании (например, когда длина GOP в секундах равна продолжительности сегмента). Для лайв-вещания рекомендуется сделать GOP поменьше по нескольким причинам. Например:
- По DVB стандарту частота появления PAT/PMT таблиц должна быть равной двум разам в секунду (500 мс), и, как правило, PAT/PMT ставится рядом с I-кадром;
- Для DVB также очень важна скорость переключения между каналами, и чем длиннее GOP, тем больше времени займёт переключение.
Обнаружение смены сцен. Большинство кодеров детектируют изменение плана сцены и автоматически вставляют в сцену полный I-кадр. Но, если контент имеет частые смены планов (например, новости), то вставка полных кадров может привести к изменению GOP структуры. Это создаст дополнительную задержку потока на несколько секунд. Если буфер приёмного устройства переполнится, то зрители увидят стоп-кадры и рассыпание видео (обнаружение смены сцен можно увидеть на рис. 1).
Среднее значение encode ratio (avg) для всего потока, I-, P- и B-кадров. Показывает во сколько раз сжато исходное видео. C его помощью можно проверить, насколько хорошо отработал кодер в целом и выдержал ли требуемые пропорции avg[EncRatio(I)] << avg[EncRatio(P)] << avg[EncRatio(B)], и сравнить производительность двух кодеров на одном и том же наборе медиафайлов.
Рис. 2 Информация (в том числе и encode ratio) для видеопоследовательности.