Потоковая передача данных по HTTP (HLS) – это протокол передачи потокового видео высокого качества в прямом эфире с адаптивным битрейтом. Динамическая вставка объявлений для Менеджера рекламы поддерживает HLS версии 3. В этом руководстве по интеграции приводятся требования и рекомендации по использованию HLS.
Какие функции поддерживаются для прямых эфиров и видео по запросуФункция | Прямые трансляции | Видео по запросу |
---|---|---|
EXTINF |
||
EXT-X-DATERANGE > SCTE35-IN |
– | |
EXT-X-DATERANGE > SCTE35-OUT |
– | |
EXT-X-DISCONTINUITY |
||
EXT-X-DISCONTINUITY-SEQUENCE |
– | |
EXT-X-ENDLIST |
* | |
EXT-X-I-FRAME-STREAM-INF |
||
EXT-X-I-FRAMES-ONLY |
||
EXT-X-INDEPENDENT-SEGMENTS |
||
EXT-X-KEY |
||
EXT-X-MEDIA (группы версий медиаконтента) |
||
EXT-X-MEDIA-SEQUENCE |
– | |
EXT-X-PLAYLIST-TYPE |
||
EXT-X-PROGRAM-DATE-TIME |
||
EXT-X-STREAM-INF > AUDIO |
||
EXT-X-STREAM-INF > AVERAGE-BANDWIDTH |
||
EXT-X-STREAM-INF > BANDWIDTH |
||
EXT-X-STREAM-INF > CLOSED CAPTIONS |
||
EXT-X-STREAM-INF > CODECS |
||
EXT-X-STREAM-INF > FRAMERATE |
||
EXT-X-STREAM-INF > RESOLUTION |
||
EXT-X-STREAM-INF > SUBTITLES |
||
EXT-X-STREAM-INF > VIDEO |
||
EXT-X-TARGETDURATION |
||
EXT-X-VERSION |
*Поддерживается в прямых трансляциях только для плейлистов типа EVENT (событие).
Выберите нужный раздел
- Плейлисты и группы версий медиаконтента
- Кодеки и разрешение
- Продолжительность сегментов и Согласование временных меток
- Тег Discontinuity
- Шифрование медиаконтента
Плейлисты и группы версий медиаконтента
Для публикации рекомендуется предоставлять плейлисты, в которых используется кодирование контента в формате gzip. Варианты контента в главных плейлистах и сегментах могут использовать как абсолютные, так и относительные URL.
Все объекты объявлений перекодируются для поддержки плейлистов I-FRAME, включая контент, предназначенный для заполнения рекламных пауз. При динамической вставке объявлений Менеджер рекламы не генерирует плейлисты I-FRAME на основе контента и не создает новые группы версий медиаконтента на основе сочетаний видео и аудио.
- Для прямых трансляций плейлисты I-FRAME создаются и подготавливаются (при необходимости) с помощью видеокодера или упаковщика. Группы версий медиаконтента передаются в том виде, в каком они создаются видеокодером.
- Для видео по запросу плейлисты I-FRAME передаются (при необходимости) в главном манифесте на момент передачи данных. Менеджер рекламы сообщает об ошибке только в том случае, если файл плейлиста I-FRAME недоступен или его невозможно обработать. Группы версий медиаконтента передаются в том виде, в каком они указаны в главном манифесте.
Кодеки и разрешение
Главные плейлисты HLS как для прямых трансляций, так и для видео по запросу должны содержать дополнительные атрибуты CODECS
и RESOLUTION
. Они используются для подбора подходящих объявлений, соответствующих настройкам кодировки. При отсутствии этих атрибутов объявления выбираются только исходя из пропускной способности, что может привести к несоответствию разрешения и кодеков в объявлении и самом контенте. Это может создавать у пользователей неблагоприятное впечатление и вызывать ошибки при воспроизведении на различных устройствах.
В атрибуте CODECS
должны быть указаны как аудио-, так и видеокодеки. Видеокодер может в любое время добавлять варианты в URL главного плейлиста и удалять их.
Аудиокодеки
При динамической вставке объявлений поддерживается аудиокодек AAC, а также кодеки AC-3 и E-AC-3.
CODECS
и RESOLUTION
всегда должны соответствовать одни и те же URL вариантов потока.Убедитесь, что ваш видеокодер предоставляет корректные URL для каждого варианта контента, чтобы у пользователей не возникало проблем при воспроизведении.
Пример
Главный плейлист с атрибутами CODECS и RESOLUTION
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=694272,CODECS="avc1.77.41,mp4a.40.2",RESOLUTION=768x432
chunklist_b694272.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=202752,CODECS="avc1.66.31,mp4a.40.2",RESOLUTION=480x270
Chunklist_b202752.m3u8
Продолжительность сегментов
Продолжительность медиасегментов в плейлистах HLS должна указываться в виде десятичных чисел с плавающей запятой. Это позволяет определять точное время начала и окончания рекламных пауз. Чем менее точно указана продолжительность сегментов, тем сложнее системе определить, когда именно должны добавляться рекламные паузы в трансляцию.
Пример
Плейлист медиаконтента, содержащий тег #EXTINF
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:26
#EXTINF:9.901,
http://media.example.com/wifi/segment26.ts
#EXTINF:9.901,
http://media.example.com/wifi/segment27.ts
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts
Согласование временных меток
Временные метки представления (PTS) в сегментах альтернативных плейлистов медиаконтента должны быть согласованными. P- и B-кадры ссылаются на другие кадры при декодировании. При использовании кодека H.264 кадры могут ссылаться не только на ближайшие, но и на другие кадры – это обеспечивает более высокий уровень сжатия. Так как для декодирования и представления этих кадров необходимы другие кадры, временная метка декодирования (DTS) определяет последовательность декодирования кадров, а метка PTS определяет последовательность их показа. Согласование меток PTS очень важно для адаптации к другой скорости передачи данных в момент воспроизведения ресурса. Функция размещения рекламы использует метки PTS при определении позиции для вставки объявления.
Тег Discontinuity
Любой тег EXT-X-DISCONTINUITY
в плейлисте должен сопровождаться тегом EXT-X-DISCONTINUITY-SEQUENCE
. Тег EXT-X-DISCONTINUITY-SEQUENCE
позволяет синхронизировать альтернативные версии одного потока или различные варианты потоков.
Шифрование медиаконтента
При шифровании медиаконтента необходимо использовать следующие алгоритмы:
- AES-128 (шифрует весь сегмент);
- SAMPLE-AES (шифрует отдельные составляющие, например аудио или видео);
- SAMPLE-AES-CTR.
Динамическая вставка объявлений в Менеджере рекламы поддерживает DRM для потоков HLS (включая FairPlay и другие технологии на базе CMAF или Fragmented MP4).
Пример
Плейлист медиаконтента, содержащий тег #EXT-X-KEY
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:26
#EXT-X-KEY:METHOD=AES-128,URI="https://media.example.com/asset/key1.php?id=<подпись>",IV=<вектор инициализации>
#EXTINF:9.901,
http://media.example.com/wifi/segment26.ts
#EXTINF:9.901,
http://media.example.com/wifi/segment27.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://media.example.com/asset/key2.php?id=<подпись>"
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts