Deutsch

Как работает Картина (Принцип IPTV)

139  
vita-lick завсегдатай29.12.09 13:10
vita-lick
29.12.09 13:10 
Принцип IPTV (передачи TV-каналов поверх IP-сетей) и VoD (видео по запросу, доставка мультимедиа-контента в зависимости от заказа пользователя) весьма прост в техническом аспекте. Ниже я попробую рассказать, как можно построить локальное IPTV в рамках локальной домашней сети. Данный рассказ базируется на опыте работы с IPTV-системами и знаниях функционала отдельных компонентов системы, а потому, возможно, что на практике окажется все много сложнее. :)
Итак, базовая IPTV система состоит из пяти основных подсистем:
* поставщики контента √ это может быть как сетевое оборудование, ретранслирующие потоки со спутника в IP-сеть (например, PBI DCH-4000P), так и NAS с большим количеством видео-контента;
* middleware √ оболочка пользователя, реализующая собственно интерфейс к предоставляемым услугам √ авторизация пользователя, выбор телеканалов, выбор видео, дополнительные сервисы, как запись передач, просмотр новостей и т.п.;
* система учета √ то, что считает потребление услуг и следит за наличием достаточного количества денег на счету пользователя (здесь на ней мы останавливаться не будем, потому как тема и без того обширная);
* сеть передачи данных √ ну, тут как бы все понятно; :)
* абонентское окончание √ (STB, Set Top Box) приставка, обычно подключающаяся к сети одним хвостом, другим хвостом √ в телевизор, и осуществляет отображение интерфейса и видеопотока на экран оного телевизора.
Начать, наверное, стоит с конца, а именно √ с STB. Как правило, это узкоспециализированное устройство на базе одноплатного компьютера или SoC, чаще всего представляет коробочку а-ля DSL-модем. Внутри может быть MIPS-процессор (D-Link DIB-120) или ARM-процессор (Amino 125), на котором крутится Linux. SBT не продаются в компьютерных магазинах, а обычно поставляются под IPTV-проект оператору, который уже продает их вместе со своими услугами конечным потребителям. В приставки часто встраивают DRM-защиту контента, которая накладывает на изображение водяные знаки, незаметные человеческому глазу, но позволяющие однозначно определить приставку (как правило, по MAC-адресу), через которую производилась запись.
amino-settopbox
С программной точки зрения STB состоит из компонент, позволяющих проигрывать multicast и unicast-видеопотоки, сжатые кодеками семейств MPEG-2 и MPEG-4. Как правило, видео имеет SD-качество, но есть приставки, поддерживающие HD-качество. В любом случае, все упирается в ширину последней мили, если это DSL √ скорее всего, более чем одной приставки на точку присутствия поставить не удастся.
Помимо видеопроигрывателя приставки комплектуются браузером (в приставках Amino это Opera Mini), позволяющим реализовать интерфейс пользователя и облаюащим рассширенным набором JavaScript-функций, определяющих работу с видео √ откуда брать, как показывать, состояние проигрывания и т.п. Спецификация на расширения чаще всего закрыты NDA и поставляются только разработчикам middleware-решений в рамках SDK работы с приставкой. Таким образом middleware вырождается в обычное web-приложение плюс сервисы передачи контента по сети.
Для передачи данных используются протоколы RTSP (управление) и RTP (собственно поток мультимедиа). Приставки, как правило, работают в единой одноранговой сети с сервером, для чего в случае DSL выделяют отдельные слоты VPI/VCI.
Приставка однозначно идентифицируется MAC-адресом, который используется для авторизации клиента (если нужна дополнительная авторизация √ используют пару ╚логин-пароль╩, как правило, цифровые, хотя пульт приставки позволяет вводить и буквы, на манер сотового телефона). При загрузке приставка получает по DHCP свой IP-адрес и в качестве расширенного параметра √ адрес middleware-сервера, который откроется сразу после инициализации приставки. Как правило, изготовители приставки позволяют модифицировать как используемые приставкой графические элементы (логотип при загрузке приставки), так и страницы по умолчанию, формируя специализированную для оператора прошивку приставок.
Таким образом, любую приставку можно заставить работать отдельно от всего комплекса, если поставить в сети локальный DHCP-сервер, который вместо адреса middleware подкинет ей адрес локального вэб-сервера. Так мы получим полный контроль над тем, что отображает приставка на экране нашего телевизора. Следующий шаг √ заставить приставку показывать изображение. Тут достаточно поискать в сети описание расширения JS браузера STB, или, в крайнем случае, при помощи снифера подглядеть ссылку на портал middleware провайдера, открыть ее в обычном браузере и произвести обратную инженерию JS-кода (в том случае, если он не обфусцирован). На основании этого кода можно написать вэб-приложение, которое будет реагировать на команды пульта (который выглядит для интерфейса как обычная клавиатура) и проигрывать видео. К слову говоря, библиотека jQuery вполне неплохо себя чувствует под Opera Mini, так что процесс разработки сильно упрощается.
Итак, допустим, вы прицепили приставку к локальному вэб-серверу и даже, о-ужас, научились ловить нажатие кнопок пульта и выдавать соответствующие элементы. Но просто сказать приставке URL (с префиксом http или ftp) может не получится, поскольку STB воспроизводит только потоковое видео по RTSP. Тут нам на помощь приходит замечательный продукт VLC, который позволяет взять видео с диска, запаковать поток и перебросить в нужное место.
Теперь построить свой сервер VoD нам не составит никакого труда:
* помещаем каталог видеофалов на страничку;
* в случае нажатия определенной кнопки на пульте нашему вэб-приложению посылается запрос от интерфейса, крутящегося в браузере STB;
* наше вэб-приложение создает процесс VLC, начиная вещание RTP-потока на IP-адрес приставки, о чем сообщает интерфейсу;
* интерфейс, соответственно, в свою очередь через JS API дает STB команду на показ;
* если все хорошо √ мы увидим фильм на экране телевизора, если плохо √ придется разбираться в причинах, начиная с отсутствия поддержки приставкой кодека, в котором представлено видео, заканчивая проблемами передачи данных в сети.
Аналогичным образом можно организовать трансляцию с DVB-карты, установленной в компьютер, или же с вэб-камеры (в этом случае, наверное, потребуется перекодирование потока, что тоже по силам VLC). Помимо прочего, наличие браузера дает нам возможности представления почти любой информации, но обязательно адаптированной с учетом ее демонстрации на телевизоре. Но это уже оставим на самостоятельное изучение. :)
(С) http://relabs.ru/archives/291
Пожалуй, худшая в этом мире вещь – это то, что с людьми нужно разговаривать, и вместо этого их нельзя банально избить палкой
#1