Андрей Смирнов
Время чтения: ~23 мин.
Просмотров: 3

Tcp против udp или будущее сетевых протоколов

Проводное подключение и настройка

Чтобы смотреть телевидение по стандарту IPTV, подключая его к старому телевизору, нужно будет использовать ресивер. Речь идет, разумеется, о тех телевизорах, которые не поддерживают соединения с интернетом и/или передачи сигнала через разъемы USB. Куда проще владельцам современной техники, которая соответствует стандарту Smart TV.

Подключить IPTV-бокс к телевизору можно только после его отключения. Первым шагом становится подсоединение кабеля HDMI к разъемам приставки и телевизионного приемника. Если для подключения используется кабель стандарта RCA, его присоединяют к аудиовыходу. Далее нужно воткнуть «тюльпаны» в подходящий разъем телевизора. Патчкорд формата Ethernet нужно включить в какой-то из портов LAN на маршрутизаторе. Другой его конец присоединяют к блоку ресивера. Только после этого надо подключить блок питания.

Следующий шаг, который надо сделать, это открытие интерфейса тюнера при помощи кнопки Setup. Через раздел, связанный с расширенными настройками, назначают параметры связи и воспроизведения видеосигнала. Потом скачивают VLC Media Player, файл m3u, сбрасывая такие файлы на флешку. Далее раскрывают меню USB, а с накопителя запускают установочный файл плеера. Как только установка завершена, открывают проигрыватель.

Используя его возможности, нужно будет установить плейлист, выбрав необходимый файл на флеш-карте. Далее система показывает перечень каналов общим списком. Запустить воспроизведение канала можно при помощи нажатия на его иконку. Чтобы работал режим «Видео по запросу» и можно было пользоваться опцией TimeShift, необходимо через расширенные настройки правильно задать время и дату

При использовании проводного подключения очень важно правильно указать способ подключения к удаленному порталу

Потом обычно:

  • выбирают «Авто» (DHCP);
  • проверяют статус соединения Ethernet через вкладку свойств;
  • прописывают необходимые параметры NTP-серверов;
  • настраивают видео;
  • задают разрешение экрана;
  • устанавливают подходящее разрешение на видеовыходе;
  • сохраняют настройки и перезапускают приставку либо медиаплеер.

Introduction

UDP IPTV to RTSP proxy is a lightweight GNU/Linux daemon which, being installed on a LAN router, provides on-demand access to UDP multicast streams via RTSP and unicast RTP protocols.

Since version 0.2 the conventional HTTP «continuous download» streaming method is supported.

The server itself does not support streaming of any files, it only can receive incoming multicast streams and retransmit them to interested clients.

The main purpose of the software is to provide simple IPTV service to small office or home ethernet and/or Wi-Fi LANs where upgrading network to handle multicast correctly is not an option.

The software is not intended to handle large scale installations and service clients you don’t trust (like public Internet).

[править] Создание сетевого интерфейса

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

Если устройств, обеспечивающих одинаковый тип интерфейса, несколько, их автоматическое определение не производится.

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

Не путайте интерфейсы и
устройства системы. Интерфейсам не соответствуют
никакие специальные файлы в каталоге /dev

Вновь созданный интерфейс является ненастроенным: он выключен и к нему не
привязан никакой IP-адрес. Для того чтобы ввести интерфейс в работу, нужно
провести его настройку и включить (поднять) его при помощи команды
ifconfig.

При настройке интерфейса обычно настраиваются следующие параметры:

  • IP-адрес должен быть указан обязательно, поскольку без него использование интерфейса неосуществимо;
  • Сетевая маска должна указываться в том случае, если она отличается от той, которая соответствует классу IP-адреса;
  • Широковещательный адрес указывается в том случае, если он отличается от широковещательного адреса, вычисляемого на основе значений IP-адреса и сетевой маски.

Эти параметры задаются одной командой, которая при этом, как правило, сразу и включает интерфейс.

# ifconfig eth0 192.168.1.1 up
# ifconfig eth1 10.0.0.1 netmask 255.255.255.0 up

Usage

Example:

// Let's create a DNS-proxy that proxies IPv4 udp-requests to googles IPv6 DNS-server
var proxy = require('udp-proxy'),
	options = {
		address: '2001:4860:4860::8888',
		port: 53,
		ipv6: true,
		localaddress: '0.0.0.0',
		localport: 53535,
		localipv6: false,
		proxyaddress: '::0',
		timeOutTime: 10000
	};

// This is the function that creates the server, each connection is handled internally
var server = proxy.createServer(options);

// this should be obvious
server.on('listening', function (details) {
	console.log('DNS - IPv4 to IPv6 proxy }>=<{ by: ok 2012');
	console.log('udp-proxy-server ready on ' + details.server.family + '  ' + details.server.address + ':' + details.server.port);
	console.log('traffic is forwarded to ' + details.target.family + '  ' + details.target.address + ':' + details.target.port);
});

// 'bound' means the connection to server has been made and the proxying is in action
server.on('bound', function (details) {
	console.log('proxy is bound to ' + details.route.address + ':' + details.route.port);
	console.log('peer is bound to ' + details.peer.address + ':' + details.peer.port);
});

// 'message' is emitted when the server gets a message
server.on('message', function (message, sender) {
	console.log('message from ' + sender.address + ':' + sender.port);
});

// 'proxyMsg' is emitted when the bound socket gets a message and it's send back to the peer the socket was bound to
server.on('proxyMsg', function (message, sender, peer) {
	console.log('answer from ' + sender.address + ':' + sender.port);
});

// 'proxyClose' is emitted when the socket closes (from a timeout) without new messages
server.on('proxyClose', function (peer) {
	console.log('disconnecting socket from ' + peer.address);
});

server.on('proxyError', function (err) {
	console.log('ProxyError! ' + err);
});

server.on('error', function (err) {
	console.log('Error! ' + err);
});

Events

server.on( , function ( args ) { });

  • , details
    • details is an object with two objects:
      • target address
      • server address
  • , details
    • details is an object with two objects:
      • route address
      • peer address
  • , message, sender
    • message is the payload from user using the proxy
    • sender is the user address
  • , message, sender, peer
    • message is the answer to the message from the user
    • sender is the answerer address
    • peer is the requesting address
  • , err

    in case of an error err has the error-messages

  • , err

    if the message could not be proxied err has the error-messages

  • , peer
    • when a socket is closed after no new messages in set timeout
    • peer is the address of the disconnected client

address object contains:

  • : string ip-address
  • : string IPv6 or IPv4
  • : number udp-port

Настройка IPTV + VLC

Все нижеописанные действия по настройке продемонстрированы на примере приложения IPTV от разработчика Александра Софронова и плеера VLC для Android, но вышеперечисленные приложения имеют схожий функционал, и если вы захотите использовать другой клиент для просмотра потокового ТВ, разобраться в нем по аналогии не составит труда. Также, если будут проблемы с воспроизведением видео, полезно ознакомиться с инструкцией Воспроизведение IPTV на Android без поддержки аппаратного ускорения.

Установите приложение IPTV:

Price: Free

Установите плеер VLC:

Price: Free

Запустите приложение IPTV. Программа предложит добавить плейлист с каналами. Плейлист – это текстовый файл с расширением «.m3u» или «.xspf», содержащий список адресов потоков на ТВ каналы. Обычно поставщик интернета предоставляет ссылку на него. Плейлисты можно достаточно легко найти в интернете и скачать. После добавления плейлиста программа отобразит все содержащиеся в нем каналы.

Нажмите на желаемый канал и приложение IPTV запустит VLC плеер с выбранным каналом.

На этом можно было бы закончить, если бы не одно «но»!

Много провайдеров предпочитают вещать поток по multicast протоколу (ссылки типа udp://), так как он по сравнению с unicast’ом (обычно http:// протокол) позволяет существенно оптимизировать занимаемую ширину канала, вещая поток всем, а не создавать отдельные сессии для каждого телезрителя.

К сожалению, много устройств на Android не поддерживают UDP-multicast потоки, кроме нескольких моделей, у которых udpxy вшит в прошивку.

Для передачи IPTV на Android устройства нужна система транскодирования, которая будет передавать IPTV не multicast’ом, а потоком поверх HTTP.

Современные роутеры с прошивкой на основе Linux типа DD-WRT и Open-WRT уже имеют подобную систему, но если у вас бюджетный роутер без поддержки транскодирования, можно организовать собственный прокси с помощью компьютера, подключенного в общую сеть с устройством на Android.

Для операционных систем Windows нужно скачать программу UDP-to-HTTP Proxy.

Для операционных систем семейства Linux UDP-to-HTTP Proxy сервер находится здесь.

Настройка UDP-to-HTTP Proxy (Windows)

Настройка программы заключается в указании IP-адресов интерфейса UDP-мультикаста и интерфейса HTTP-сервера. Для случая, если ваш компьютер и устройство на Android находятся в одной сети, это один и тот же адрес и равен он IP-адресу вашего ПК. Раскройте список «Интерфейс мультикаста», он уже должен содержать IP-адрес компьютера (последний в списке).

Нажмите на кнопку «Запустить».

Сервер запущен, теперь переходим к настройкам на Android-устройстве.

Настройка UDP-прокси на Android

Откройте приложение IPTV, нажмите на системную кнопку меню устройства и выберите в списке опцию «Настройки».

Нажмите на опцию «Настройки UDP-прокси».

Введите IP-адрес компьютера с запущенным «UDP-to-HTTP Proxy» сервером, введите номер порта, по умолчанию — 7781. Выберите тип прокси сервера » UDP-to-HTTP Proxy (Windows)» и нажмите ОК, чтобы сохранить настройки.

Все! Можете тестировать воспроизведение ТВ онлайн на Android.

Unicast или multicast, что лучше

Установив в роутере модуль «UDPXY», можно обнаружить несколько улучшений:

  1. Пропали фризы изображения, нет периодических отключений одного и того же канала.
  2. Трафик в локальной сети, который требуется для передачи IPTV, стал меньше.
  3. Теперь работают те устройства, которые «не понимали» многоадресных потоков.

В-общем, от установки UDP-прокси вреда не будет. Единственным ухудшением станет то, что программы, которые показывали IPTV раньше, теперь отображают «черный экран». На самом деле, для работы с телевидением unicast можно настроить и VLC, и IPTV Player.

В последнем случае поступают так. Открыв общие настройки, надо задать не только путь к файлу плейлиста или его адрес, но и адрес сервера UDP-прокси. В последней строке задают и значение используемого порта:

Установка параметров IPTV Player

Собственно, это – все. Теперь проигрыватель будет получать потоки от роутера по протоколу TCP, что и требовалось.

Установка прокси-сервера udpxy

Основное программное обеспечение, позволяющее решить нашу задачу — это демон udpxy, для UNIX/Linux, позволяющий организовать мультикаст трафика UDP для TCP (HTTP) клиентов. В нашем примере используется компиляция udpxy для процессоров Atheros, т.к. Dlink DIR-825 работает на процессоре Atheros AR7161.

Выполним на роутере следующие команды:

wget http://xkr446.hotbox.ru/udpxy -P /tmp
chmod +x /tmp/udpxy
/tmp/udpxy -a 192.168.1.1 -p 4022 -m ВАШ_WAN_IP_АДРЕС -B 1Mb -M 30

Итак, что здесь происходит:

  1. wget скачивает udpxy и помещает его в каталог /tmp.
  2. На udpxy добавляются права на выполнение.
  3. Запускается демон ( укажите лучше полный путь /tmp/udpxy ) на 192.168.1.1:4022 ( -a 192.168.1.1 -p 4022 ), используя внешний IP ( -m ВАШ_WAN_IP_АДРЕС ), предоставленный вашим провайдером, выделяя 1Мб памяти для буферизации ( -B 1Mb  — именно с этим параметром надо будет играться, если качество трансляции далеко от желаемого).

Сделаем ту же последовательность команд универсальной, заменим адреса на системные переменные и выгрузив udpxy с нашего сервера:

wget http://fight.org.ua/soft-catalogue/udpxy -P /tmp 
chmod +x /tmp/udpxy
/tmp/udpxy -a $(nvram get lan_ipaddr) -p 4022 -m $(nvram get wan_ipaddr) -B 1Mb -M 30

Для роутера DIR-615 подойдет следующая последовательность команд (здесь используется другая сборка udpxy):

Назначаем данный скрипт в автозагрузку — Administration => Command => Save Startup

Перезагружаем роутер: Administration => Reboot router

Проверить статус работу UDP Proxy можно по следующему адресу:

http://192.168.1.1:4022/status

Если все сделано правильно, мы увидим такую табличку:

Statistics¶

The UDP proxy filter emits both its own downstream statistics as well as many of the where applicable. The downstream
statistics are rooted at udp.<stat_prefix>. with the following statistics:

Name

Type

Description

downstream_sess_no_route

Counter

Number of datagrams not routed due to no cluster

downstream_sess_rx_bytes

Counter

Number of bytes received

downstream_sess_rx_datagrams

Counter

Number of datagrams received

downstream_sess_rx_errors

Counter

Number of datagram receive errors

downstream_sess_total

Counter

Number sessions created in total

downstream_sess_tx_bytes

Counter

Number of bytes transmitted

downstream_sess_tx_datagrams

Counter

Number of datagrams transmitted

downstream_sess_tx_errors

counter

Number of datagram transmission errors

idle_timeout

Counter

Number of sessions destroyed due to idle timeout

downstream_sess_active

Gauge

Number of sessions currently active

The following standard are used
by the UDP proxy:

Name

Type

Description

upstream_cx_none_healthy

Counter

Number of datagrams dropped due to no healthy hosts

upstream_cx_overflow

Counter

Number of datagrams dropped due to hitting the session circuit breaker

upstream_cx_rx_bytes_total

Counter

Number of bytes received

upstream_cx_tx_bytes_total

Counter

Number of bytes transmitted

The UDP proxy filter also emits custom upstream cluster stats prefixed with
cluster.<cluster_name>.udp.:

Name

Type

Description

sess_rx_datagrams

Counter

Number of datagrams received

sess_rx_errors

Counter

Number of datagram receive errors

sess_tx_datagrams

Counter

Number of datagrams transmitted

sess_tx_errors

Counter

Number of datagrams tramsitted

Настройка IPTV во FreeBSD 9.1 по средствам udpxy

У моего провайдера есть IPTV по средствам Multicast. Можно использовать конечно маршрутизацию и трансляцию Multicast в нашу локальную сеть. Но это не так просто сделать, плюс к тому же это лишняя нагрузка. Я пошел другим путем, есть серверная программа udpxy. Принцип работы основан на том что она принимает Multicast по протоколу UDP и транслирует его в протокол TCP. Вещание осуществляет по средствам HTTP запросов.
Это удобно когда устройства или программы не умеют работать с мультикастом. Еще мы получим доступ к IPTV с любого адреса интернета, что сможем посмотреть что-нибудь с планшета.

И так приступим к установке.
Обновляем дерево портов и переходим
Далее установим с нужными нам параметрами
Добавим разрешающие правила в IPFW. В моем случаи внесу изменения в файл /usr/local/etc/ipfw_config Как настроить IPFW читаем: notanony.ru/post/14/

# Переменная для пути запуска ipfw.
fwcmd="/sbin/ipfw"
# Переменная для внешнего сетевого адаптера (Интернет).
internet="re0"
# Разрешаем прохождения igmp трафика.
${fwcmd} add allow igmp from any to any via ${internet}
# Разрешаем UDP трафик от IP адресов с которых ведется Multicast вещание. Для каждого интернет и IPTV провайдера IP адреса будут свои.
${fwcmd} add allow udp from any to 224.0.90.0/24 via ${internet}
${fwcmd} add allow udp from any to 234.5.2.0/24 via ${internet}

Перезапускаем IPFW командой
Добавляем udpxy в загрузку системы, файл /etc/rc.conf с нужными параметрами запуска.

udpxy_enable="YES"
udpxy_flags="-m 169.254.1.1 -a 192.168.0.1 -p 4022"

Где m – IP адрес сетевого интерфейса который смотрит в интернет(IPTV вещание), a – IP адрес к которому могут подключать клиенты, p – порт подключения. Что бы люди из интернета не могли использовать IPTV. Список других параметров запуска читаем в документации udpxy.com/umanual-ru.html
Запускаем udpxy командой Если настроили все верно, IPTV будет транслироваться. Теперь приведем плейлист провайдера для работы с udpxy.

#EXTM3U
#EXTINF:-1,Первый канал (Россия)
udp://@234.5.2.1:1234
#EXTINF:-1,Россия 1
udp://@234.5.2.2:1234
#EXTINF:-1,ТВ Центр

Пример обращение к Multicast через udpxy:

http://192.168.0.1:4022/udp/234.5.2.1:1234

IP адрес и порт udpxy, далее идет тип протокола (udp), 234.5.2.1:1234 – IP адрес и порт Multicast вещания.
Для этого откроем плейлист провайдера (m3u). В моем случаи заменим

udp://@

на

http://192.168.0.1:4022/udp/

через любой текстовый редактор. В результате получим следующий плейлист:

#EXTM3U
#EXTINF:-1,Первый канал (Россия)
http://192.168.0.1:4022/udp/234.5.2.1:1234
#EXTINF:-1,Россия 1
http://192.168.0.1:4022/udp/234.5.2.2:1234
#EXTINF:-1,ТВ Центр
http://192.168.0.1:4022/udp/224.0.90.104:1234

Открываем получившийся плейлист в плеере IPTV.

0.10
27.08.2013 12:20

Tommy

Установка и настройка

Пакет устанавливается комадой

opkg install udpxy

Скрипт (авто)запуска в папке . Измените первую букву на букву для автозапуска. Отредактируйте скрипт под свои нужды. Для PPPoE соединений без IP (Pure PPPoe) следует раскомментировать строку, присваивающую ip интерфейсу . В скрипте производится выгрузка модуля ядра , после этого просмотр мультикаста на компьютерах невозможен. В некоторых случаях можно обойтись и без выгрузки этого модуля. В большинстве случаев без выгрузки работать udpxy не будет. Часто нужно «подкрутить» в скрипте параметры запуска демона — например, размер буфера (параметр ) и другие.

How it works

In summary, FF proxy server listens for HTTP requests over UDP and forwards them to their destination server over TCP for processing.

To establish a TCP connection, a «handshake» must be completed between the client and the server using an exchange of SYN and ACK packets.

In ELI5 terms:

  • the client says «hello, here is a random number 123456» to the server
  • the server responds with a «hi there, i received your number 123456, my random number is 654321»
  • finally the client says «thanks for your number, here is the data I want to send you …».

The so-called random numbers are known as sequence numbers and correspond to the current offset of the data sent or received over the connection, relative to the initial sequence number.

However I digress, the TCP handshake process involves transferring, at minimum, two packets between the client and remote server before data is able to be exchanged across the connection, hence the client must wait for at least one network round trip before initiating a HTTP request.

On the other hand, we have the UDP protocol. UDP is very simple comparatively and does not provide the reliability guarantees of TCP. Essentially UDP supports:

  • sending independent packets of data
  • receiving independent packets of data
  • broadcasting packets to multiple hosts (cool but not relevant here)

UDP lets us avoid the overhead of the network by removing any need for a handshake process before data can be exchanged. However HTTP web servers typically do not listen for traffic on UDP ports hence is not a viable solution on it’s own.

FF Proxy makes it possible to send HTTP requests over UDP by acting as the middle man. Listening for HTTP requests over UDP and forwarding the requests to the destination web server over TCP.

Hence FF proxy allows clients to reduce HTTP request latency to near zero at the cost not receiving the HTTP response from the remote server or any guarantees that the request was even received.

FF protocol

To support forwarding larger HTTP requests, FF implements it’s own protocol layer on top of UDP.
This protocol supports the fragmentation of HTTP requests into a stream of UDP packets. These packets are then reassembled as they are received by an FF proxy and consequently, the HTTP request is forwarded over TCP once reassembly completes.
The structure of an FF packet is divided into a fixed length header, followed by multiple request options and finally followed by the payload.

Encryption and HTTPS

FF supports the protection of sensitive payloads in transit by performing encryption between the client and the proxy in combination with initiating a HTTPS request to the upstream server. Since the client and FF proxy do not perform bidirectional communication, no key negotiation can take place. Hence FF implements symmetric encryption (AES-256-GCM) using a pre-shared key between that is configured on both the client and the proxy.

Middleware

Add a middleware object to the proxy to intercept any incoming or outgoing message. Use this if you need to potentially change the message content before it is relayed, or prevent it from sending altogether.

The object must contain the following functions:

message( , , function ( msg, sender ) { });

  • will be invoked with every message from a peer to the server.
  • proxy will only relay the message when is invoked.

proxyMsg( , , , function ( msg, sender, peer ) { });

  • will be invoked with every message from the server to a .
  • proxy will only relay the message when is invoked.

The following example will block any message going from the client to the server that has length > 120.

var proxy =require('udp-proxy'),   options ={      address'2001:4860:4860::8888',      port53,      ipv6true,      localaddress'0.0.0.0',      localport53535,      localipv6false,      proxyaddress'::0',      timeOutTime10000,      middleware{messagefunction(msg,sender,next){if(msg.length<=120){next(msg, sender);}},proxyMsgfunction(msg,sender,peer,next){next(msg, sender, peer);}}};var server =proxy.createServer(options);

Home

Introduction

UDP IPTV to RTSP proxy is a lightweight GNU/Linux daemon which, being installed on a LAN router, provides on-demand access to UDP multicast streams via RTSP and unicast RTP protocols.

Since version 0.2 the conventional HTTP «continuous download» streaming method is supported.

The server itself does not support streaming of any files, it only can receive incoming multicast streams and retransmit them to interested clients.

The main purpose of the software is to provide simple IPTV service to small office or home ethernet and/or Wi-Fi LANs where upgrading network to handle multicast correctly is not an option.

The software is not intended to handle large scale installations and service clients you don’t trust (like public Internet).

Download

You can get the latest development version from SVN repository. Please note that this is a development version and as a free bonus you can expect more bugs than usually.

Releases considered stable are in Downloads section.

Quick Start

  1. Download the source.
  2. Compile it with GNU make and GCC. This should produce a binary named iptv2rtsp-proxy.
  3. You can copy the binary to any suitable place or keep it with source for testing.
  4. Run server with

    $ ./iptv2rtsp-proxy -f -s <YOUR_IP> -l <LISTEN_PORT>

    for example:

    $ ./iptv2rtsp-proxy -f -s 192.168.10.10 -l 5555

  5. Connect by opening an url in your media player:

    rtsp://<SERVER_IP>:<LISTEN_PORT>/iptv/<MCAST_GROUP>/<UDP_PORT>

    for example:

    rtsp://192.168.0.1:5555/iptv/224.50.50.50/1234

    or

    http://192.168.0.1:5555/iptv/224.50.50.50/1234

    or

    http://192.168.0.1:5555/udp/224.50.50.50:1234

Random notes:
  • -f option tells server to stay in foreground, you’ll see diagnostic output in your terminal, press Ctrl+C to terminate.
  • -s is not an IP address servers listens connections on — it’s used as SDP origin. Server listens on any address.
  • -l specifies RTSP port. The default is 554, this means that you need a root privileges to start a server, so 5555 is used in the example above.
  • options -c and -p can be used to specify names of config and pid files.
HTTP protocol note:

There are essentially no signaling between server and client, almost no control over TCP behavior, all this makes error handling and recovery extremely difficult.

If server detects that it can not send data to the client in more or less reliable way, the connection will be closed.

The server has fixed-sized buffer for streamed data, this buffer will overflow quickly if client can not receive (or decode) data. Overflowed buffer can make streaming data severely damaged, thus preventing client to decode it, making the issue yet worse leaving no chance to recover.

In short: server sends data by servers’ clock, there’s no way to change this. Correct behavior for client would be to receive and process all data same moment it’s available. Alternative to this is receiving data by clients’ clock. Without proper synchronization (and there’re usually none) it is possible socket buffers to overflow (if send rate is higher than receive or stream is damaged) effectively stalling all transmission for this client.

Overview

The software currently implements only a very limited subset of features described in these documents:

The goal is not to implement these completely, only parts that are required by popular software to function properly.

RTSP protocol supports PAUSE requests, but this server supposed to work with «live» streams only and does not have any PVR functionality. While it’s possible to «pause» streaming, it’s impossible to resume from the point it was paused. After resuming, audio/video decoders will act as if there were a big packet loss.

It is possible to implement FEC schemes for RTP, but it looks like there no clients supporting FEC now.

RTSP Compatibility

ClientVersionsPlaybackPause
1.0, 2.0OKN/A (1)
11.0OKNo (2)
0.2.12OK?
0.5.9OKNo (2)
1.1not okN/A (1)
5.0OKOK
Notes:
  1. Client doesn’t send PAUSE requests. Pause is emulated by a client and streaming continues.
  2. While paused client sends neither RTCP reports, nor RTSP requests to prevent session timeout. As a result session timeouts and there’s no way to determine if it’s still alive.
  3. Part of «Elecard MPEG-2 PlugIn for WMP» and possibly other software. Being a DirectShow filter this product allows Windows Media Player and other players to understand RTSP protocol.

IPTV и firewall

Весьма правильно, что в роутерах изначально включен firewall. Но в нашем случае он будет являться помехой для работы IPTV. Существует два способа обхода этой проблемы: первый — простой, а второй —  правильный.

1. Простой способ — заходим на вкладку Security и отключаем SPI Firewall. Жмем Save.

Рекомендую использовать этот способ в тестовых целях — например при возникновении проблем в настройке IPTV. Постоянно оставлять роутер в работе с отключенным firewall не следует.

2. Правильный способ — сообщить роутеру об отсутствии необходимости резать наш IPTV. Добавим правило в iptables нашего роутера:

iptables -I INPUT -d 224.0.0.0/240.0.0.0 -j ACCEPT

Правила добавляются во вкладке Administration => Commands.

Methods

var proxy = require(‘udp-proxy’);

requires the proxy-module

var server = proxy.createServer( options );

  • .createServer( options ) creates an instance of udp-proxy with the given options
    • options must be an object consisting of:
      • : string

        default: ‘localhost’

        (the address you want to proxy to)

      • : number

        default: 41234

        (the port you want to proxy to)

      • : boolean

        default: false

        (if the target uses IPv6)

      • : string

        default: ‘0.0.0.0’ ( ::0 if localipv6 is set to true)

        (the interface-addresses to use for the server)

      • : number

        default: 0 (random)

        (the port for the server to listen on)

      • : boolean

        default: false

        (if you want the server to use IPv6)

      • : string

        default: 0.0.0.0 ( ::0 if ipv6 is set to true)

        (if you want to set on which interface the proxy connects out)

      • : number

        default: 10000 (10s)

        the time it takes for socket to time out (in ms)

      • : number

        default: 10000 (10s)

        the time it takes for socket to time out (in ms)

      • : object

        default: none

        apply a middleware to the proxy, see Middleware section below.

the proxy always connects outwards with a random port

server.close(callback) closes proxy server.

Установка и активация модуля UDPXY

Откройте графический интерфейс роутера ZyXEL семейства «Кинетик 2». Находясь в разделе «Система», перейдите к вкладке «Компоненты»:

Список доступных программных модулей

Отметьте галочкой модуль «UDP-HTTP прокси» и нажмите кнопку «Обновить», расположенную внизу страницы. Разумеется, соединение роутера с Интернетом должно быть активно.

После установки требуемого компонента, перейдите в другой раздел – «Домашняя сеть». Если в нем есть вкладка «IGMP Proxy», обязательно откройте ее:

Настройки вещания multicast в локальную сеть

В разделе под названием «Приложения» сейчас содержится вкладка «Сервер UDPXY»:

Настройка UDP Proxy

Значения параметров на этой странице лучше выставить, как показано на рисунке. Мы обязаны выполнить следующее:

  1. Установить галочку «Включить».
  2. Номер порта TCP выбирается произвольно, но нельзя использовать значения, занятые другими сервисами (FTP, HTTP и другими программами).
  3. Остальные настройки можно не менять.
  4. Нажимаем «Применить», чтобы запомнить установленные параметры.

Настройка роутера завершена полностью.

Как заставить смартфон показывать ТВ

Мы рассмотрим, как выполнить настройку приложения, которое называется «IPTV». Сначала его нужно скачать с Google Play и установить. А затем, выполняется конвертирование плейлиста в формат m3u. Но приложение «IPTV» не умеет работать с файлами, хранящимися на диске смартфона. Необходимо поместить файл «*.m3u» в любое общедоступное хранилище и получить ссылку на него.

Дальше, открываем «Настройки» программы «IPTV» и нажимаем надпись «Список каналов».

Установка адреса файла плейлиста

На открывшейся вкладке устанавливаем значение адреса, по которому плейлист сейчас доступен. В завершение, нажимаем «Готово». Осталось поменять настройки «UDP-прокси».

Перейдя к соответствующей вкладке, установите галочку «Использовать прокси». В качестве адреса сервера мы указываем значение IP роутера, по которому он доступен из «локалки»:

Настройка параметров UDP-прокси

Затем устанавливают значение порта TCP (то, которое задано в настройках «UDPXY»). В нижнем списке обязательно надо выбрать «UDP-HTTP proxy Windows». На последнем шаге нажимают «OK».

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации