Apple HTTP Live Streaming (HLS) CDN

Основные понятия HLS

Apple HTTP Live Streaming (HLS) - это реализация технологии адаптивного потокового вещания от компании Apple.

Данная реализация четко придерживается всех принципов адаптивного вещения и обладает ощутимым преимуществом в виде поддержки мобильными устройствами на базе iOS и Android.

Для работы HLS требуются следующие компоненты:

  • фрагменты видео (ts-файл);
  • m3u8-манифест файл, содержащий ссылки на ts-фрагементы видео;
  • индексный m3u8 файл, содержащий ссылки на m3u8-манифесты нескольких вариантов детализации видео (различающиеся качеством картинки и звука - битрейтом).

Использование HLS CDN

Для организации HLS трансляции отдельного файла без переключения между вариантами видео, достаточно передать плееру ссылку с HLS-маркером:

USERNAME.cdn.zerocdn.com/file.mp4:hls:manifest.m3u8

При этом URL фрагмента будет следующим:

USERNAME.cdn.zerocdn.com/file.mp4:hls:N.ts

где N - идентификатор фрагмента.

USERNAME.cdn.zerocdn.com/file.mp4:hls:manifest.m3u8

Для организации трансляции с возможностью переключения вариантов видео необходимо создать в соотвествующей папке индексный m3u8-файл, следующего содержания:

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=352000,RESOLUTION=426x240
./240.mp4:hls:manifest.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=608000,RESOLUTION=640x360
./360.mp4:hls:manifest.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1152000,RESOLUTION=640x360
./480.mp4:hls:manifest.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2692000,RESOLUTION=1280x720
./720.mp4:hls:manifest.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5192000,RESOLUTION=1920x1080
./1080.mp4:hls:manifest.m3u8

Где 240.mp4, 360.mp4, 480.mp4, 720.mp4 и 1080.mp4 - разные варианты видео расположенные в этой папке, а строки:

  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=352000,RESOLUTION=426x240
  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=608000,RESOLUTION=640x360
  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1152000,RESOLUTION=1280x720
  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2692000,RESOLUTION=1280x720
  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5192000,RESOLUTION=1920x1080

описание характеристик этих файлов.

Внимание! Префикс './' перед именем файла обязателен для сохранения совеместимости с устройствами Apple!

Подписывание HLS ссылок

Для организации эффективной работы механизма защиты HLS ссылок, необходимо расположить файлы таким образом, что бы разные форматы одного видео, находились в одной папке.

  • video1/
    • 240.mp4
    • 360.mp4
    • 480.mp4
    • 720.mp4
    • 1080.mp4
    • hls.m3u8
  • video2/
    • 240.mp4
    • 360.mp4
    • 480.mp4
    • 720.mp4
    • 1080.mp4
    • hls.m3u8

В таком случае появляется возможность подписи общей части URL для всех файлов внутри указанной папки. А Подписанный HLS URL будет выглядеть следующим образом:

http://USERNAME.cdn.zerocdn.com/path/to/video1/[sign]:[deadline]/hls.m3u8

При этом для генерации подписи будут использоваться следующие исходные данные:

md5(/path/to/-[ip]-[deadline]-[secret])

Технические требования HLS

ZeroCDN.com обеспечивает поддержку HLS стриминга для файлов с учетом следующих требований:

  • mp4-контейнер,
  • видео-кодек h264,
  • аудио-кодек AAC,
  • поддержка faststart.