Архитектура потоковой передачи HTTP

HTTP Живая Потоковая передача позволяет Вам отправлять живое или записанное заранее аудио и видео, с поддержкой шифрования и аутентификации, с обычного веб-сервера на любое устройство рабочий iOS 3.0 или позже (включая iPad и Apple TV), или любой компьютер с Safari 4.0 или позже установленный.

Обзор

Концептуально, HTTP Живая Потоковая передача состоит из трех частей: серверный компонент, компонент распределения и клиентское программное обеспечение.

Серверный компонент ответственен за взятие входных потоков носителей и кодирования их в цифровой форме, инкапсуляции их в формате, подходящем для поставки и подготовки инкапсулированных носителей для распределения.

Компонент распределения состоит из стандартных веб-серверов. Они ответственны за принятие клиентских запросов и поставку подготовленных носителей и связанных ресурсов клиенту. Для крупномасштабного распределения могут также использоваться граничные сети или другие сети доставки контента.

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

В типичной конфигурации аппаратный кодер берет ввод аудио-и видеосигнала, кодирует его видео H.264 и аудио AAC, и выводит его в Транспортном Потоке MPEG 2, тогда повреждающемся в серию коротких медиа-файлов потоком программного обеспечения segmenter. Эти файлы помещаются в веб-сервер. segmenter также создает и поддерживает индексный файл, содержащий список медиа-файлов. URL индексного файла публикуется на веб-сервере. Клиентское программное обеспечение читает индекс, затем запрашивает перечисленные медиа-файлы в порядке и выводит на экран их без любых пауз или разрывов между сегментами.

Пример простой конфигурации потоковой передачи HTTP показан на рисунке 1-1.

Рисунок 1-1  базовая конфигурация

Ввод может быть живым или из записанного заранее источника. Это обычно кодируется как MPEG 4 (видео H.264 и аудио AAC) и упаковывается в Транспортном Потоке MPEG 2 стандартными аппаратными средствами. Транспортный поток MPEG 2 тогда повреждается в сегменты и сохраняется как серия один или больше .ts медиа-файлы. Это обычно выполняется с помощью программного инструмента, такого как поток Apple segmenter.

Потоки только для аудио могут быть серией MPEG элементарные аудиофайлы, отформатированные как AAC с заголовками ADTS как MP3, или как AC 3.

segmenter также создает индексный файл. Индексный файл содержит список медиа-файлов. Индексный файл также содержит метаданные. Индексный файл .M3U8 список воспроизведения. К URL индексного файла получают доступ клиенты, тогда запрашивающие индексируемые файлы в последовательности.

Серверные компоненты

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

Кодер носителей

Кодер носителей берет сигнал в реальном времени от устройства аудио-видео, кодирует носители и инкапсулирует его для транспорта. Кодирование должно быть установлено в формат, поддерживаемый клиентским устройством, таким как видео H.264 и аудио HE-AAC. В настоящее время поддерживаемый формат поставки является Транспортными Потоками MPEG 2 для аудио-видео или MPEG элементарные потоки для только для аудио.

Кодер поставляет закодированные носители в Транспортном Потоке MPEG 2 по локальной сети к потоку segmenter. Транспортные потоки MPEG 2 не должны быть перепутаны со сжатием видео MPEG 2. Транспортный поток является упаковочным форматом, который может использоваться со многими различными форматами сжатия. Audio Technologies и Video Technologies перечисляют поддерживаемые форматы сжатия.

Поток Segmenter

Поток segmenter является процессом — обычно программным обеспечением — который читает Транспортный Поток из локальной сети и делит его на серию маленьких медиа-файлов равной продолжительности. Даже при том, что каждый сегмент находится в отдельном файле, видеофайлы сделаны из непрерывного потока, который может быть восстановлен беспрепятственно.

segmenter также создает индексный файл, содержащий ссылки на отдельные медиа-файлы. Каждый раз, когда segmenter завершает новый медиа-файл, индексный файл обновляется. Индекс используется для отслеживания доступности и расположения медиа-файлов. segmenter может также зашифровать каждый участок среды и создать файл ключей как часть процесса.

Участки среды сохраняются как .ts файлы (MPEG 2 транспортируют потоковые файлы). Индексные файлы сохраняются как .M3U8 списки воспроизведения.

Файл Segmenter

Если у Вас уже есть медиа-файл, закодированный с помощью поддерживаемых кодеков, можно использовать файл segmenter, чтобы инкапсулировать его в транспортном потоке MPEG 2 и повредить его в сегменты равной длины. Файл segmenter позволяет Вам пользоваться библиотекой существующих аудиофайлов и видеофайлов для отправки видео по требованию через HTTP Живая Потоковая передача. Файл segmenter выполняет те же задачи как поток segmenter, но это берет файлы в качестве ввода вместо потоков.

Файлы участка среды

Файлы участка среды обычно производятся потоком segmenter, на основе ввода от кодера, и состоят из серии .ts файлы, содержащие сегменты Транспортного Потока MPEG 2, переносящего видео H.264 и AAC, MP3 или аудио AC 3. Для широковещательной передачи только для аудио segmenter может произвести MPEG элементарные аудиопотоки, содержащие или аудио AAC с заголовками ADTS, аудио MP3 или аудио AC 3.

Индексные файлы (списки воспроизведения)

Индексные файлы обычно производятся потоком segmenter или файлом segmenter, и сохраняются как .M3U8 списки воспроизведения, расширение .m3u формат используется для списков воспроизведения MP3.

Вот очень простой пример индексного файла в форме .M3U8 список воспроизведения, что segmenter мог бы произвести, если бы весь поток содержался в трех незашифрованных 10-секундных медиа-файлах:

#EXT-X-VERSION:3
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:1
 
# Old-style integer duration; avoid for newer clients.
#EXTINF:10,
http://media.example.com/segment0.ts
 
# New-style floating-point duration; use for modern clients.
#EXTINF:10.0,
http://media.example.com/segment1.ts
#EXTINF:9.5,
http://media.example.com/segment2.ts
#EXT-X-ENDLIST

Для максимальной точности необходимо указать все продолжительности как значения с плавающей точкой при отправке списков воспроизведения клиентам, поддерживающим версию 3 протокола или позже. (Клиенты старшего возраста поддерживают только целочисленные значения.) Необходимо указать версию протокола при использовании длин с плавающей точкой; если версия опущена, список воспроизведения должен соответствовать версии 1 протокола.

Индексный файл может также содержать URLs для файлов ключа шифрования и чередовать индексные файлы для различной пропускной способности. Для получения дополнительной информации формата индексного файла, см. Интернет-проект IETF HTTP Живая спецификация Потоковой передачи.

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

Компоненты распределения

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

Рекомендуемая конфигурация обычно ограничивается указанием ассоциаций типа MIME для .M3U8 файлы и .ts файлы.

Для получения дополнительной информации посмотрите, что Развертывающийся HTTP Живет, Передавая потоком.

Клиентский компонент

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

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

Этот процесс продолжается, пока клиент не встречается #EXT-X-ENDLIST тег в индексном файле. Если нет #EXT-X-ENDLIST тег присутствует, индексный файл является частью продолжающейся широковещательной передачи. Во время продолжающихся широковещательных сообщений клиент загружает новую версию индексного файла периодически. Клиент ищет новые медиа-файлы и ключи шифрования в обновленном индексе и добавляет этот URLs к его очереди.