Смотрим IPTV на iPhone и iPad
Недавно свершил подвиг, до которого долгое время не доходили руки — настроил раздачу iptv через Linksys WRT54G2. На самом деле, раздача осуществляется, конечно же, не только на iPad/iPhone, но и на другие устройства, а статья так названа для привлечения поискового трафика) Основной целью эксперимента было сделать мой mac-компьютер способным просматривать iptv. Хоть зомбоящик и зло, иногда бывает прикольно посмотреть параллельно с работой какие-нибудь новости, познавательные или спортивные передачи, мульты наконец. Да, а что, я это дело люблю)). И так, что у нас в распоряжении: wifi-роутер Linksys WRT54G2, интернет-провайдер Interzet (это не очень принципиально, опять же, по большей части для поисковиков), компьютер iMac, компьютер Windows-PC и куча гаджетов — iPhone, iPad, androids.
Несколько раз я пытался подступиться к этой проблеме, я думал, она уже всесторонне освещена, но каждый раз я натыкался на дефицит информации. То есть, информация есть, но слишком уж она разбросана. В этот раз я строго решил дойти до конца. В итоге по успешному завершению подумал, что не плохо бы записать все на память. А может кому и полезным окажется…
Linksys WRT54G2 появился у меня в тот момент, когда его предшественник netgear после непродолжительного функционирования приказал долго жить. К сожалению, «из коробки» Linksys не захотел показывать iptv. Не совсем не захотел, но выдавал нечто
На лицо неконсистентость данных, вероятно, являющяеся следствием UDP-природы iptv. То есть, проблема в том, что пакеты доходят до компьютера в неправильном порядке. Попробовал прошиться стандартным firmware от Cisco, но что-то мне подсказывало, что не поможет. Так и было.
Спустя некоторое время я вспомнил рассказ моего коллеги об истории роутеров LinkSys, и о том, что существуют альтернативные прошивки (не от производителя), которые предоставляют несравнимо более продвинутый функционал. Одной из них является DD-WRT. Я не буду описывать процесс перепрошивки (на сайте dd-wrt есть отличная инструкция), скажу лишь, что Linksys WRT54G2 совместим c dd-wrt.
И так, перепрошили. Что дальше?
Нужно обзавестись плэйлистом телеканалов своего провайдера. Внутри он может выглядеть так:
#EXTM3U #EXTINF:-1,Первый канал #EXTVLCOPT:udp-caching=500 udp://@235.10.10.1:1234 #EXTINF:-1,Россия 1 #EXTVLCOPT:udp-caching=500 udp://@235.10.10.14:1234 #EXTINF:-1,НТВ #EXTVLCOPT:udp-caching=500 udp://@235.10.10.11:1234
В общем то все понятно. URL вида udp://@235.10.10.11:1234 указывает медиа-плееру адрес UDP-потока, на что плеер должен начать слушать UDP-порт. Транслятор будет рассылать широковещательные пакеты всем абонентам сети — кому нужно, заберут.
Кстати, уже можно смотреть. Нужно убедиться, что на роутере не включена фильтрация multicast (широковещательного трафика). Для этого заходим в консоль роутера через браузер (по умолчанию http://192.168.1.1), заходим в раздел Security -> Firewall
Убеждаемся, что галка Filter Multicast не стоит.
Запускаем плеер. На маке пользуюсь VLC, да и на Windows кстати тоже, поэтому будем считать, что половину проблем статьи уже осветили. Далее открываем плэйлист — должно работать.
Проблемы начинаются с вай-фай устройствами. Роутер начинает транслировать UDP-трафик по воздуху, что делает работу в сети через вай-фай практически не возможной. Как быть? Единственный вариант — включать обратно фильтрацию Multicast. Но как тогда смотреть тв? Есть решение, и имя ему — UDPXY. Дело в том, что dd-wrt представляет собой полноценный линукс. UDPXY — это программа демон, которая преобразует udp-поток в http, таким образом, что ссылка вида udp://@235.10.10.11:1234 превращается в, например, http://192.168.1.1:81/udp/235.10.10.11:1234, и это работает с включенной фильтрацией Multicast.
Как установить UDPXY на Linksys WRT54G2? По уму нужно брать исходники, компилировать под архитектуру WRT54G2… в общем жуть. Гораздо проще взять готовый бинарник, залить на роутер и запустить. Так и сделаем. Заходим в веб-интерфейсе роутера в раздел Administration -> Commands
и вставляем
cd /tmp sleep 30 wget "http://heximal.ru/download/udpxy" sleep 30 chmod +x udpxy /tmp/udpxy -a 192.168.1.1 -p 81 -m 10.208.X.X -B 1Mb -M 30
и нажимаем Run Commands. Только сначала нужно прописать нужные параметры запуска udpxy:
-a — ip-адрес нашего(вашего) роутера (подсказка — его можно подсмотреть в правом верхнем углу веб-интерфейса роутера)
-p — tcp порт роутера
-m — IP-адрес роутера в локальной сети нашего(вашего) провайдера.
-B — размер буфера данных. Везде рекомендуют выставлять 1Мб (следует помнить,
что их всего 16)
-M — интервал в секундах для повторной отправки igmp-запроса на получение iptv-потока.
Можно также нажать Save Startup, тогда эта серия команд будет выполняться каждый раз при запуске роутера. Кстати, я лично это выполнял в терминале чере telnet — люблю в консоли поколбасить)
Что же именно тут происходит? Бинарник udpxy скачивается с сайта интернета (я решил держать это снаружи, так как дома нет в данный момент компьютера, который всегда включен и гарантированно отдаст роутеру файл в любой момент). Это, к сожалению, нужно делать при каждом запуске, поскольку в стандартной прошивке dd-wrt программа udpxy не установлена по понятным причинам. Программ под dd-wrt написано очень много, и все их в стандартную сборку не включишь. А у роутера WRT54G2 хоть и есть флэш-память (4мб), но используется только для хранения образа системы, который копируется в RAM (16Mb) при включении, это значит, что файловая система монтируется в оперативной памяти — ей отведена какая-то часть. Вследствие этого после каждого перезапуска все, что было скачано/сохранено на виртуальный диск, будет стерто.
Этот вопрос можно решить, если самостоятельно собрать дистрибутив UDPXY, но для этого нужно будет проделать кучу телодвижений.
Остановимся на варианте со скачиванием udpxy с интернет-сервера при каждом запуске.
Убедиться в том, что udpxy работает можно, зайдя на страницу статуса:
http://192.168.1.1:81/status
После этого можно ставить в настройках файерволла галку Filter Multicast и открывать в плеере уже ссылки не вида udp://@235.10.10.11:1234, а переделанные в http://192.168.1.1:81/udp/235.10.10.11:1234.
Теперь пару слов о том, как в такой конфигурации смотреть все это благолепие на мобильных гаджетах а-ля iPhone, iPad, Android.
Очевидно, с помощью приложений, кэп! Для iOS я нашел парочку хороших в AppStore — OPlayer и GoodPlayer. Они умеют воспроизводить http-видеопоток. OPlayer имеет дружелюбный интерфейс. Запускаем, нажимаем Open URL, добавляем url вида http://192.168.1.1:81/udp/235.10.10.11:1234, и смотрим.
Правда, я так и не нашел возможности загрузить playlist — пришлось заводить каналы вручную.
Но он у меня на iPad не стал запускаться, пришлось раскошелиться на GoodPlayer, который даже по-круче станет, потому что с кучей каких-то непонятных настроек)
Для Android-девайсов тоже есть неплохое решение. Там даже вроде можно загружать плэйлисты.
Уфф. хотел коротко написать, но получилось как всегда.
наканецто! наканецто я смогу смотреть iptv на macOS
автор, огромнейшее тебе спасибо прям глубокий тебе поклон
я где-то читал что на маке порты начиная с 1001 до какогото там 2000 что ли забиты , и получить к ним права может только root пользователь, а у меня добрая половина каналов висит на порте 1001 , так что твоя статья была оочень полезной и нужной.
Лично я смотрю тв на bilink.tv и ни разу не жаловался. Мои любимые каналы, цена копеешная, качество отличное. По очереди смотрю на айпаде и компе. Пока варианта лучше не нашел
Недавно открыл для себя Bilink.TV. Вроде нормально работает. Хорошая подборка каналов и цена нормальная. Плюс также на компе могу смотреть.
Не пробовал смотреть через гаджеты, но сейчас смотрю IPTV онлайн через Bilink, говорят он только на территории Украины работает, но я пока лучше сервиса по стоимости не находил
@Андрей
Антон, Максим, Андрей ты затрахал на всех сайтах свою херню пишешь
Достаточно просто установить плеер, поддерживающий чтение плей-листов формата m3u (у меня стоит goodplayer, к сожалению он платный (100 руб.) стоит ) скачать такой плей лист с сайта и закинуть его в программу через iTunes и будет вам счастье)))
@Дмитрий
Видимо, вы не совсем внимательно прочитали статью. goodplayer я упоминал — это действительно хорошая программа. Суть в том, что если раздавать iptv по wifi, это очень сильно забивает эфир. Поэтому и существуют такие инструменты как udpxy