Термин

IDR-кадр

Англ.: Instantaneous Decoder Refresh
Короткое определение

Особый I-кадр, который очищает список reference у декодера. Истинная точка clean random-access – границы сегментов HLS/DASH начинаются с IDR.

IDR-кадр – Instantaneous Decoder Refresh – особый, более строгий тип I-кадра. Обычный `i-frame` самодостаточен: его можно декодировать без предыдущих кадров. Но будущие кадры после обычного I-кадра могут всё ещё ссылаться на кадры из до этого I-кадра. IDR-кадр говорит «я не только самодостаточен, но все reference-связи здесь сбрасываются – ни один кадр после этой точки не будет смотреть назад дальше неё». Это чистый разрыв в видео, настоящая точка сброса.

Зачем это важно для стриминга: HLS и DASH adaptive bitrate streaming режут видео на независимо воспроизводимые сегменты, и каждый сегмент должен начинаться с IDR (не просто с любого I-кадра). Без IDR на границе сегмента плеер, переключающийся между bitrate-rendition посреди стрима, может обнаружить, что следующий сегмент зависит от кадров предыдущего сегмента в старом rendition – поломанное движение и битая картинка до следующей чистой точки. С IDR-границами каждый сегмент пуленепробиваемый: плеер может переключать rendition, входить посреди live-эфира, прыгать в любое случайное место чисто.

Для продуктовой команды практическое правило простое: каждый сегмент HLS- или DASH-стрима начинается с IDR, точка. Флаг `-g` в FFmpeg (интервал keyframe) задаёт, как часто появляются IDR, а `-force_key_frames` позволяет ставить их в конкретные моменты. Типичная конфигурация: IDR раз в 2 секунды для VOD (хорошее сжатие), раз в 1 секунду или чаще для low-latency live (быстрое переключение каналов). Цена – примерно 2–5 % bitrate по сравнению с использованием не-IDR I-кадров, и это плата за чистую сегментацию.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.