← Back to list

Видеостриминг — основные понятия. Стандарт MPEG и сколько нужно платить за кодек H.264

Зависающие видеоролики — одно из самых раздражающих явлений в мире Интернета, с которым неизбежно сталкивается любой пользователь…

Dinis I · 2022-04-10 19:23 · 0 claps · 12.7 min read
#h264 #mpeg4 #hls #видео #стриминг
Open on Medium ↗

Видеостриминг — основные понятия. Стандарт MPEG и сколько нужно платить за кодек H.264

Зависающие видеоролики — одно из самых раздражающих явлений в мире Интернета, с которым неизбежно сталкивается любой пользователь. Современные сервисы Youtube и Netflix предоставляют возможность просмотра любимых сериалов в качестве 4К в онлайн-режиме, но для этого требуется скорость Интернета приблизительно 60 Мбит/с, при этом в России большинство провайдеров предлагают свои услуги со скоростью 80–100 Мбит/с, о чем еще лет 5–10 назад и мечтать нельзя было.

Технический прогресс стал возможен за счет увеличения пропускной способности домашней сети, развития сетей распространения контента CDN, модернизации протоколов передачи видео и новейших технологий сжатия. Именно об особенностях потоковой трансляции видео и ее инструментах мы поговорим в этой статье.

Из чего состоит видео

Видеоролик представляет собой совокупность звука, субтитров и статичных картинок, которые быстро сменяют друг друга. В свою очередь изображение состоит из пикселей. Видеоролик, имеющий разрешение HD, состоит из картинок разрешением 1920х1080 пикселей, то есть 2 073 600 пикселей суммарно. Кроме того, каждый пиксель имеет свой цвет, а на хранение цвета в модели RGB требуется минимум 10 бит, итого получается 20 миллионов бит (19 Мбит) всего лишь на один кадр. Одна секунда видео состоит из 25 кадров и занимает целых 427 Мбит.

Мало кто из провайдеров сможет предоставить стабильное соединение с такой скоростью. Но как получается так, что минута видеоролика в формате HD весит всего лишь 60 Мб? Ответ на этот вопрос — компрессия и кодеки, сжимающие изображение. Прежде, чем переходить к подробному рассмотрению этого вопроса, необходимо изучить основные характеристики видео.

Параметры видео

Разрешение видео

Наиболее знакомая всем характеристика видео — это количество пикселей по горизонтали и вертикали. Чем больше эти показатели, тем более качественная и детализированная будет картинка. Форматом высокой четкости считается разрешение от 720 горизонтальных рядов пикселей, обычно стриминговые сервисы указывают в качестве разрешения именно этот параметр (720р, 1080р). Кстати говоря, многие считают, что видео в формате 8К имеет в 8 раз больше пикселей, чем HD, но на самом деле этот показатель больше в 16 раз.

Глубина цвета

Эта характеристика означает количество бит, выделенных для представления цвета одного пикселя или одного компонента/канала цвета. Например, в случае одноканального изображения, если имеется 1-битная шкала, получаем всего 2 цвета (2 в степени 1) для передачи глубины цвета.

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

  • 2 бита — 4 цвета
  • 8 бит — 256 оттенков

дизеринг

дизеринг

Ниже приведен пример сравнения черно-белого градиента на разной битовой глубине. Данное изображение — это просто пример. В зависимости от качества вашего монитора, вы, вероятно, сможете увидеть только разницу до 8 или 10 бит.

Субдискретизация

Много ли важной информации потеряет зритель при просмотре ролика на Youtube, если он будет черно-белым? Не так много, но, согласитесь, смотреть цветные видео гораздо интереснее, чем черно-белые. На самом деле человеческий глаз более чувствителен к переходам яркости, чем к цвету, поэтому алгоритмы сжатия изображений и видео используют эту особенность. Цвет разбивают на три компонента. Яркость — Y и так называемые цветоразностные сигналы Cr и Cb, получаемые по формуле:

Для снижения размера требуемой для кодирования цвета информации обычно обрезают доступные варианты цветоразностных компонентов Cr Cb. Степень сжатия обычно записывается так: 4:x:y, где x — разрешение цветов по горизонтали, а y — разрешение цветов по вертикали для блока из 8 пикселей.

Формат 4:4:4 встречается в потоковом видео крайне редко, так как он обычно используется на стадии продакшена.

Частота кадров

Количество кадров в одну секунду — fps. Чем выше частота кадров, тем плавнее и приятнее глазу картинка. Но вполне естественно, что с увеличением плавности будет увеличиваться и размер видеоролика.

Битрейт

Количество бит, выделяемое для хранения данных видео за единицу времени, как правило — за секунду. Например, увидев информацию, что видео на Youtube с разрешением 1080р (с кодированием H.264) имеет битрейт 4,5 Мбит/с, можно сделать вывод, что секунда видео занимает 0,5 мегабайта.

Развертка

Этот термин чаще всего используется при телевизионном вещании. Различают два вида развертки:

  • прогрессивная, обозначается как р;
  • чересстрочная, обозначается как i.

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

История MPEG

История кодеков

Первым стандартом сжатия цифрового видео был H.120, который разработан в 1984 году. Видео, полученное в результате сжатия с помощью этого кодека, оказывалось плохого качества, поэтому реализаций было немного, существующих кодеков для формата не существует. Но разработка стандарта дала важные знания и толчок к разработке новых модификаций. Последняя редакция H.120 была опубликована в марте 1993 года, кодек работал со скоростью 1544 Кбит/с для NTSC и 2048 Кбит/с для PAL.

Первым кодеком, который широко применялся на практике, стал H.261, а все описанные в нем элементы дизайна также использовались в MPEG-1. Он был создан на основе успешного комплексного подхода и технологий сжатия, разработанных Объединенной группой экспертов по фотографии — Joint Photographic Experts Group (JPEG).

Аббревиатура MPEG расшифровывается как Moving Picture Expert Group — Экспертная группа по кинематографии, именно она занималась разработкой стандартов с начала 1990 годов.

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

MPEG 1

Стандарт разрабатывался для работы с видеороликами приемлемого качества на 1,5 Мбит/с. Примерно такой пропускной способностью обладал CD-ROM в те времена, что давало возможность смотреть фильмы с CD-дисков. Стандарт MPEG-1 включает в себя 5 частей:

  1. Синхронизация и мультиплексирование аудио и видео. Под мультиплексированием подразумевают объединение нескольких потоков данных в один.
  2. Кодек с прогрессивной разверткой (пресловутое «р» в 1080р).
  3. Процедуры тестирования производительности. Предоставляет два набора рекомендаций и эталонных битовых потоков для проверки соответствия аудио и видеодекодеров MPEG-1, а также битовых потоков, создаваемых кодировщиком.
  4. Эталонное ПО (Reference software). Например включает в себя, справочный код C для кодирования и декодирования аудио и видео, а также мультиплексирования и демультиплексирования.
  5. Кодек для звука, включающий в себя 3 уровня сжатия, 3 уровень mp3, который знаком большинству пользователей. Уровни отличаются друг от друг пропускной способностью:
  • 384 kbit/s рекомендуется для применения в профессиональной области, в системах записи-перезаписи с высоким студийным качеством с достаточной ёмкостью памяти
  • 192 kbit/s Применяется в цифровом радиовещании DAB и устаревшем стандарте Video CD
  • 128 кбит/с Формат был лицензируемым, но 23 апреля 2017 года срок действия всех патентов истёк и лицензионные сборы прекращены. Как и формат JPEG, MP3 использует спектральные отсечения, согласно психоакустической модели.

Самым большим недостатком MPEG-1 считается поддержка только прогрессивной развертки. Этот недостаток в свое время помог более быстрому развитию и внедрению универсального стандарта MPEG-2.

MPEG 2

Этот стандарт, так же как и MPEG-1 и все последующие, состоит из нескольких частей. Одной из них является кодек для кодирования аудио Advanced Audio Coding (AAC). Стандартом не определено, каким именно образом должен быть реализован кодер или декодер MPEG-2, он регламентирует только структуру данных. Важным дополнением считается поддержка чересстрочной развертки, чего не было в MPEG-1. Стандарт широко распространен на видеодисках DVD.

По состоянию на 14 февраля 2020 года срок действия патентов MPEG-2 истек во всем мире за исключением Малайзии. Срок действия последнего патента в США истек 23 февраля 2018 года, поэтому можно свободно пользоваться стандартом.

MPEG-TS является частью MPEG-2. Стандарт также может быть знаком по протоколу HLS. Он представляет собой медиа-контейнер для потоковой передачи данных. MPEG-2 не включает в себя кодек Н.264, который используется в HLS, но при этом MPEG-TS позволяет упаковывать в себя более современные кодеки.

Важной особенностью любого кодека является правило, если улучшить пропускную способность для видеопотока, то увеличивается нагрузка на CPU, так как требуется задействовать больше ресурсов для расчетов. Если взглянуть на историю Apple до 2000 года, можно узнать, что им даже потребовалось интегрировать специальный чип, помогающий воспроизводить DVD-формат MPEG-TS, так как без него аккумулятор разряжался слишком быстро.

MPEG 3

Изначально разрабатывался для использования в системах телевидения высокой четкости (High Definition Television, HDTV) со скоростью потока данных 20–40 Мбит/с. Но в процессе разработки стало очевидно, что для передачи HDTV достаточно MPEG-2.

MPEG 4

Одной из ключевых версий стандарта MPEG является его 4 редакция. Как и все предыдущие, она состоит из нескольких частей, в данном случае их целых 22, среди которых и стандарты по субтитрам (Part-17), стандарты для защиты контента (Part-13), стандарт сжатия аудио и видео, широко известный формат сжатия Part 2 Advanced Simple Profile (ASP) и AVC, эквивалентный H.264, и, конечно же, известный всем mp4 контейнер для хранения и передачи мультимедийных файлов.

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

Еще одна интересная особенность стандарта MPEG-4 — поддержка интерактивных взаимодействий. Взаимодействие медиаобъектов в видеопотоке подчиняется параметрам, устанавливаемым автором сюжета. Диапазон интерактивных возможностей в сюжете MPEG-4 охватывает такие действия как навигация, зависящая от точки зрения (с соответствующим изменением аудио- и видеопотоков), движение объектов в пределах сюжета, выбор национального языка и другие аспекты.

Пример интерактивного взаимодействия из стандарта, видео с возможностью покупки

Пример интерактивного видоемагазина на MPEG4

Пример интерактивного видоемагазина на MPEG4

Логические блоки MPEG-4, как можем видеть предусмотрен интерфейс в композитном слое User INPUT

MPEG 7

MPEG-7 является не стандартом сжатия, а стандартом описания контента. Формально он также известен как интерфейс описания мультимедийного контента.

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

Как устроены кодеки

Стандарты сжатия видео базируются на стандартах сжатия изображений, многие методики которых позаимствованы из формата JPEG. Изображение разбивается на три канала яркости: лишенная цвета картинка и два хроматических канала — с синим и красным цветоразностным компонентом.

Получив эти три канала цвета, можно сохранить разрешение для яркости, к которой более всего чувствительно зрение человека, а разрешение для цветовых компонентов при этом уменьшается в два раза, усредняя цвет 4 пикселей блока в один. Такой прием позволяет экономить до 50% памяти или сетевого трафика. Как можно догадаться, на этом этапе происходят первые «боевые потери».

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

Еще одна ключевая особенность — сжатие на основе последовательности кадров, то есть N-й кадр очень похож на N+1 кадр, и если он содержит большую часть кадра N, его можно исключить.

В большинстве кодеков предусмотрено как минимум три типа кадров:

  1. Intracoded — закодированные в себе. В этом алгоритме, где имеются только I-кадры видеопоследовательности превращается в M-JPEG. I-кадры могут использоваться для произвольного доступа, поскольку им не требуется дополнительная информация. I-кадры имеют саму низкую степень сжатия.
  2. Predictive — предсказательные.
  3. Bidirectional — двунаправленные.

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

Р-кадры. Если макроблок найден, он кодируется при помощи его разницы с тем же макроблоком в предыдущем кадре. Значение макроблока в выходном потоке сопровождается вектором перемещения. Например, кадр, следующий сразу за |-кадром, использует неизменную информацию из этого |-кадра, и дополняет ее своей межкадровой разностью.

IPPPPPPPPPPPP

Наличие ключевого I-кадра также обеспечивает беспрерывное переключение между потоками с разным качеством при использовании технологии адаптивного стриминга.

Потоковое видео

В потоковой передаче видео необходимо понимать разницу между следующими тремя терминами::

  • Протокол
  • Медиаконтейнер
  • Кодек

Протокол — правила, по которым два участника видеосвязи (обычно клиент и сервер) обмениваются данными с целью получения информации. Видеопоток может поступать от сервера к клиенту (в таком случае это обычное проигрывание) или от клиента к серверу (тогда это публикация). Даже когда гигантский шкаф, потребляющий электричество как многоквартирный дом, приходит к маленькой IP-камере, то она будет служить сервером, а шкаф соответственно выступит в роли клиента.

Протокол обычно подразумевает наличие хотя бы одной команды Play (начать проигрывание), но в некоторых случаях имеются и расширенные команды: пауза, продолжение, публикация, перемотка и другие.

Примеры протоколов: RTSP, RTMP, HTTP, HLS, MPEG-DASH

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

Примеры контейнеров: MPEG-TS, RTMP, RTP

Кодек — многозначный термин. В данном случае под кодеком подразумевается способ сжатия «сырого» видео. Разницу между кодеком и транспортом составляет то, что понятие кодека связано с подготовкой видео, а протокола — с передачей его по определенному протоколу. Медиафайл, сжатый одним кодеком, может быть передан по разным протоколам и разными транспортами. Большинство стриминговых сервисов не затрагивают глубоко кодированное видео, а оперируют только протоколами и транспортами.

Примеры кодеков: H.264, AAC, MP3.

HLS

HLS — это H.264 видео и AAC и MP3-аудио, упакованное в транспорт MPEG-TS. Поток разбивается на сегменты, описанные в m3u8-плейлистах, и раздается по HTTP. HLS поддерживает мультибитрейтные потоки, Live/VOD. Вариант очень простой, но в то же время имеет много нюансов, из-за чего может работать по-разному на различных устройствах.

HLS разработан в Apple, поэтому изначально работал только в браузере Safari на iOS и Mac. До сих пор Safari на Windows не умеет воспроизводить HLS. Тем не менее, сейчас формат поддерживается всеми современными телевизионными приставками и почти всеми устройствами на Android.

MPEG-DASH

MPEG-DASH — обычно это H.264/H.265-видео и AAC-аудио, упакованное в транспорт MP4 или vp8/vp9, упакованное в WebM, хотя стандарт не привязан к конкретным кодекам, протоколам и транспортам. Как и в HLS, поток может разбиваться на сегменты, но это необязательное условие. Вместо плейлистов используется MPD-манифест в формате XML. MPEG-DASH хорош тем, что в большинстве браузеров работает нативно через MSE.

Говоря о протоколе MPEG-DASH, нельзя не вспомнить о медиаконтейнере fragmented mp4 (fMP4). В основном он используется для передачи видео в MPEG-DASH, а не так давно (в 2016 году) был добавлен в HLS, что обеспечило возможность использовать при передаче видео одни и те же файлы для двух разных протоколов.

Такая поддержка одного типа контейнеров для разных протоколов теперь является частью стандарта CMAF. CMAF был разработан в результате сотрудничества между компаниями. В феврале 2016 года Apple и Microsoft обратились к Экспертной группе по движущимся изображениям (MPEG) с предложением. Установив новый стандарт под названием Common Application Format (CMAF), две организации стали работать вместе, чтобы упростить передачу видео по Интернету. Помимо договоренностей о поддержке общего медиаконтейнера, идет работа над созданием общего стандарты защиты контента Common Encryption (CENC).

Отличия mp4 и fMP4

Файл в формате mp4 внутри состоит из небольших блоков, называемых атомами. Атомы имеют разные типы и предназначены для различных целей. Например:

  • moov атом содержит в себе метаданные о длине фильма, общую информацию, данные о времени каждого видео- и аудио-кадра, смещения для каждого кадра. Moov содержит только основную информацию о дорожках (количество, тип, инициализация кодека и так далее), но не содержит данные о семплах в дорожке;
  • mdat-медиаданные. Содержит непосредственно видео- и аудио-кадры, как правило, в порядке чередования. Метаданные (moov” не обязательно могут идти перед медиаданными (mdat). В этом случае прогрессивное (ускоренное) воспроизведение невозможно, так как проигрыватель должен загрузить все медиаданные, затем получить метаданные, и лишь потом запустить воспроизведение.

Если мы заглянем внутрь mp4 файла мы увидим примерно такую картину

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

В fMP4 этот момент учтен, атомы разбиваются на чередующиеся блоки moov+mdat заранее заданной продолжительности, что упрощает адаптивное воспроизведение.

Чем mp4 отличается от mov

Главное различие между этими двумя форматами контейнеров заключается в том, что mov — это собственный формат файлов Apple для QuickTime, а MP4 — принятый международный стандарт. Большинство потоковых платформ рекомендуют использовать файлы MP4 вместо mov, так как файлы MP4 работают с большим количеством потоковых протоколов.

MP4 обычно имеет большую степень сжатия и занимает меньше места, в то время как файлы mov зачастую имеют более высокое качество и больший размер. Файлы в формате mov лучше подходят для редактирования видео на Mac, поскольку стандарт разработан специально для QuickTime.

Платные кодеки H.264 и H.265

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

Мобильные приложения

Если используется аппаратный или предоставленный операционной системой кодировщик/декодер для выполнения обработки, дополнительно оплачивать лицензию не требуется. Если же в приложение включен программный кодировщик, на разработчика распространяется необходимость использования платной лицензии. Для AVC (H.264) оплата не требуется до тех пор, пока не будет достигнута цифра в 100 000 активных пользователей приложения.

Стриминговые платформы

В этом случае необходима оплата роялти, если распространяется контент в кодировке AVC или HEVC, если только он не является бесплатным, как на площадке Youtube.

В случае TVOD (платный контент) необходимо заплатить MPEG-LA 2 цента для H.264 и/или 2,5 цента для HEVC Advance для H.265 за продажу.

В случае SVOD (подписочный контент) необходимо оплатить MPEG-LA от 25 до 100 тысяч долларов за AVC после того, как будет набрано более 100 000 платных клиентов. HEVC не так дружелюбен к новичкам, так что здесь требуется заплатить HEVC Advance 0,5–2,5 цента за клиента с первого дня использования.

Облачное транскодирование

Если платформа распространяет платный контент (SVOD или TVOD) и уже платит лицензионные отчисления за заголовок или подписку в этом отношении, дополнительная плата за часть кодирования не взимается.

В случае распространения платформой бесплатного или AVOD-контента лицензионные отчисления могут выплачиваться за устройство, то есть сервер транскодирования или серверное ядро/поток.

При управлении сервисом, который занимается продажей услуг кодирования/транскодирования (например, encoding.com), компания определенно должна платить лицензионные отчисления. Однако правила выставления счета в этом случае довольно неопределенны.

Ссылки


메타데이터
post_id
35a4c112f84
slug
цифровое-и-потоковое-видео-35a4c112f84
url
https://medium.com/@idinis/%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B5-%D0%B8-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%B2%D0%BE%D0%B5-%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-35a4c112f84
canonical_url
https://medium.com/@idinis/%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B5-%D0%B8-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%B2%D0%BE%D0%B5-%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-35a4c112f84
author_url
https://medium.com/@idinis
status
ok
fetched_at
2026-08-02 06:19:34