Наконец-то дошли руки поправить старые косяки и добавить новых =)
Вернул Виртуальный Новомосковск в качестве источника, заодно сменил стандартную тему, за бэкграунд спасибо забавному сервису Wordle
Пришлось тут столкнуться с популярным форматом телепрограмм – JTV. В отличие от простого и логичного XMLTV, творение Beholder кажется жутко непонятным. К моему удивлению, в интернете нет вменяемого описания формата, поэтому решил написать свое. Для работы нам пригодится любой хексовый редактор, например HxD
Итак, телепрограмма в формате JTV представляет собой кучу файлов, где каждому каналу соответствует два файла с расширениями .pdt и .ndx и соответствующими названию канала именами.
PDT
Файл всегда начинается с записи JTV 3.x TV Program Data, за которым всегда следует три символа 0Ah.
После этого последовательно перечисляются названия телепрограмм в следующем формате:
Длина названия программы, записанная в 2 байта. Название программы.
Например, программа называется Your Style.. В шестнадцатеричной системе выглядит как 59 6F 75 72 20 53 74 79 6C 65 2E. В названии 11 (0Bh) символов. Конечная запись выглядит как 0B 00 59 6F 75 72 20 53 74 79 6C 65 2E
Например, PDT файл может выглядеть так:
4A 54 56 20 33 2E 78 20 54 56 20 50 72 6F 67 72 JTV 3.x TV Progr
61 6D 20 44 61 74 61 0A 0A 0A 0B 00 59 6F 75 72 am Data.....Your
20 53 74 79 6C 65 2E 0B 00 59 6F 75 72 20 53 74 Style...Your St
79 6C 65 2E 0A 00 59 6F 75 72 20 4C 69 66 65 2E yle...Your Life.
0F 00 50 72 69 6D 65 20 53 68 6F 77 63 61 73 65 ..Prime Showcase
2E .
NDX
Файл начинается с 2 байт, обозначающих общее количество записей. Например, если всего имеется 20 (32h) записей, то эти 2 байта будут выглядеть как 32 00 Если в файле больше 255 записей, например 300 (012Сh), то байты инвертируются, то есть фактически записываются как 2С 01
После этого записываются данные для каждой программы, по 12 байт каждая. Структура у них следующая: в начале идут два нулевых байта (00 00), за ними следует 8 байт, обозначающие дату и время начала телепрограммы, в виде FILETIME. FILETIME это 64-х разрядное значение, обозначающее количество интервалов по 100 наносекунд каждый, прошедших с первого января 1601 года. Например, 00 C8 A6 64 03 B6 CB 01 обозначает 56477943831382785 таких интервалов, что соответствует 5 утра 17 января 2011 года. В конце записываются 2 байта, обозначающие смещение в файле PDT для соответствующей программы
Рассмотрим пример файла NDX в связке с вышеуказанным файлом PDT
04 00 00 00 00 C8 A6 64 03 B6 CB 01 1A 00 00 00
00 98 2F 28 14 B6 CB 01 27 00 00 00 00 68 B8 EB
24 B6 CB 01 34 00 00 00 00 38 41 AF 35 B6 CB 01
40 00
Смещения выделены курсивом. Например, первое смещение, 1А 00 соответствует смещению, где начинается 0B 00 (вторая строчка файла PDT)
Как-то так =)
ВНЕЗАПНО оказалось, что в твиттер Новомосковска перестали попадать новости с nmsk.ru, в скором времени починю
Довел до работоспособного состояния программу, позволяющую смотреть IPTV в сети компании “Росинтел” без танцев с бубном, соторого дира, dd-wrt, сетевух с вланами и так далее. Ссылка на дистрибутив, инструкции по использованию и установке находятся здесь. Программа находится в разработке, поэтому возможны некоторые проблемы с ее работоспособсностью, о которых желательно сообщать мне =)
Важное замечение. Автор сего опуса не представляет официальную точку зрения ЗАО “Росинтел”, не отвечает за последствия действий, описанных ниже и не рекомендует выполнять их никому, кроме как на свой страх и риск.
Ну что же, отмазались и поехали =). Итак, с недавнего времени все абоненты компании “Росинтел” с положительным балансом на счету получили возможность на халяву смотреть 58 каналов. Рассмотрим, как это можно сделать.
Для понимания происходящего требуется знать и понимать, что такое VLAN. Поскольку никто читать пространную статью о том, что это такое, не будет, скажу просто, что это группа сетевых устройств, взаимодействующих между собой на канальном уровне, хотя при этом физически они могут быть подключены к разным сетевым коммутаторам. Нужна это штука много для чего, но в том числе и для более удобной работы с широковещательным трафиком в сети, коим и является пресловутое IPTV. VLAN это не то же самое, что WLAN и вообще не то же самое, что VPN. Не знаю почему, но это очень частый вопрос =)
Нас интересует два VLANa – 0, условно называемый internet и 222, условно называемый iptv. VLANы бывают тегированные и нетегированные (вторые также могут называться нативными, это термин, который использует Cisco). В тегированных VLANах каждый кадр трафик определенным образом помечен, таким образом указывается, какому VLANу он принадлежит. Существует несколько протоколов для решения данной задачи, но наиболее распространенным является IEEE 802.11Q. В нашем случае VLAN 0 – нативный, а 222 – тегированный. Что же это означает для конечного пользователя? Дело в том, что наиболее популярная ныне операционная система Windows не умеет работать с вланами “из коробки”, в отличие от Linux/Unix. Фактически это означает, что в Windows по умолчанию нельзя создать некий сетевой интерфейс, который бы относился к некоему влану, поэтому приходится либо использовать отдельную железку – D-Link DIR-100, либо пытаться заставить свою сетевуху начать понимать метки вланов.
Остановимся поподробнее на каждом из этих вариантов. В случае с DIR-100, он будет выступать как коммутатор вланов, никаких дополнительных настроек сетевухи производить не требуется. Данный вариант считается официальным. Можно либо приобрести в самом Росинтеле уже настроенный девайс за 1000 рублей, либо прошить уже имеющийся, согласно инструкции на сайте Росинтела.
Для слишком жадных, либо очень умных есть альтернативный вариант, точнее варианты. Можно попробовать научить работать свою сетевуху с вланами. Настройка сетевой карты обычно производится через некую утилиту, найти которую можно на сайте производителя и по сути сводится к созданию двух вышеупомянутых вланов.
Общая инструкция
1) ставим драйвер или утилиту с поддержкой vlan. Найти ее можно на сайте производителя.
2) создаем 2 vlan-а (после создания, как правило, появятся еще два виртуальных сетевых адаптера, а старый переведется в режим поставщика vlan и будет выведен из непосредственной маршрутизации трафика)
а) с тегом 0 (как вариант ставим тип vlan Native/Untagged в тех драйверах, где можно выбрать) – называем Internet – заводим на него свои настройки интернета. В некоторых случаях тег 0 невозможно установить непосредственно в утилите – создаем с любым – потом пытаемся поменять на 0. В некоторых еще более запущенных случаях – проставляем тег через реестр. То есть, натурально, ставим какую-нибудь мониторилку реестра, создаем любой влан и анализируем, где появилась запись. Потом перебиваем в нужным местах номер влана на 0.
Если вышеперечисленные телодвижения ничего не дали – после пункта б) – пытаемся поднять ipv4 на сетевом адаптере, являющимся поставщиком vlan, но это самый тухлый вариант
б) с тегом 222 (тип Tagged) – прописываем любой адрес с любой маской из серого диапазона rfc1819 – называем IPTV. Диапазоны следующие: 10.0.0.0 – 10.255.255.255 (255.0.0.0), 172.16.0.0 – 172.31.255.255 (255.240.0.0), 192.168.0.0 – 192.168.255.255 (255.255.0.0)
3) ставим плеер, указываем интерфейс IPTV для работы ТВ
4) загружаем плей-лист, в случае необходимости – добавляем плеер в исключения брэндмауэра
5) тестируем
Есть также вариант с использованием роутеров, которые умеют работать с вланами. Если же официально Ваш роутер этого делать не умеет, можно рассмотреть вариант с прошивкой его альтернативной прошивкой (простите за тавталогию=). Наиболее распространенная это dd-wrt. Список устройств, которые можно прошить с ее помощью, равно как и информацию о ее настройке можно найти на сайте
Отдельно хотел бы рассмотреть вопрос с Wi-Fi. У многих сетка дома построена на данной технологии и некоторые пользователи сталкиваются с проблемами при попытке посмотреть ТВ. Связано это вот с чем: IPTV использует протокол UDP, в котором отсутствует гарантированность доставки пакета. Это значит, что при некоторой загрузке канала, ряд пакетов, не пролезающий в полосу пропускания, будет отброшен, что и приведет к появлению артефактов картинки. Для решения этой проблемы существуют так называемые UPD2HTTP прокси, наиболее известные это UDP-to-HTTP Прокси и udpxy. Информация о их настройке легко находится на сайтах данных утилит.
В данный момент проходит тестирование, поэтому о замеченных проблемах рекомендуется писать в HelpDesk, в раздел “Тестирование IPTV”.
В будущем планируется предоставлять услугу без компьютера, при помощи D-Link DIB-120 и Amino 130. Цена пока неизвестна. Поскольку возникают вопросы о возможности приобретения приставок на стороне, а также использования других приставок, например, домолинковских Zyxel, мое понимание ситуации таково: IPTV очень, очень сильно завязано на авторских правах. Требования владельцев контента иногда просто шизофренические =) Примером может служить домолинковский PCPlayer, где изменение конфигурации системы вызывает блокировку программы, после чего приходится проводить время дозваниваясь в саппорт и снимая блокировку =) Приобрести приставку типа Amino 130 “с рук” во-первых, весьма сложно, так как продукт весьма специфичен, а во-вторых, перспективы ее последующей активации представляются мне весьма сомнительными. Что касается других STBшек. Полагаю, что middleware все-таки рассчитано на конкретные приставки, учитывает их алгоритмы CAS, API и так далее, и в этой связи использовать нечто отличное от эталонных экземпляров проблематично. Пока неизвестна система шифрования контента, говорить о том, есть ли некие перспективы работы “левых” приставок, нелогично. =)
Информация о пакетах каналов и их стоимости пока неизвестна. Известно, что некий набор каналов будет доступен всем пользователям с положительным балансом. В данный момент работает вообще у всех, даже у тех, кто в глубочайшем минусе =) Дата запуска услуги в коммерческую эксплуатацию пока неизвестна.
