ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Архивные статьи в категории ‘Multicast’

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

ЗАМЕТКА

В рамках поднятия IPTV в сети столкнулись с приставкой D-Link DIB-120.

Симптомы

Приставка D-Link DIB-120 при загрузке показывает логотип Alpha и потом черный экран и больше ничего.

Выяснилось

Компания Dlink завезла в Россию партию DIB-120, залитых безбраузерной прошивкой.
Отличить такую приставку можно по ее серийному номеру. Он начинается с Р1Т818.
В приставке прошит статический IP-адрес 192.168.1.1 и она слушает мультикаст группу с адреса 239.60.8.1:37732

Решение проблемы

Существуют два способа решения проблемы:

1. Если у вас есть сервер с OS Linux, то можно запустить вещание файла прошивки на  мультикаст адрес 239.60.8.1:37732 с помощью проги amfus.

Положите файлы прошивки и amfus в одну папку, затем создайте в этой же папке конфиг:

DIB120.conf:

a0_rootfs a-fs-cramfs.img V4.03.009 14299136 e6d0e447beed049bb2d41798721f29d7
kernel vmlinuz-7402c0 V4.03.009 1602656 7cc07013cc6ff0ea8f078920175791c1

Затем запустите:

./amfus -d DIB120.conf -m 239.60.8.1:37732 -i 1000 -t 32

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

По умолчанию IP STB D-Link DIB-120 поставляется без прошивки (при загрузке отображается ALPHA и черный экран).

На форумах говорят, что это «бракованная» партия, а на самом деле это «чистый» аппарат без странички.

Чтобы исправить это можно загрузить в него следующую прошивку 4.04.013_multicast.rar (доступна обновленная прошивка для DIB-120 от 6.11.09 4.05.004_multicast.rar).

Для перепрошивки понадобиться любой WEB сервер (например Apache).

В корневую директорию сервера необходимо сохранить два файла, которые находятся в архиве (a-fs-cramfs.img и vmlinuz-7402c0).

В качестве примера установлен IP сервера (компьютера с установленным Apache) – 192.168.1.2.

Устройство по умолчанию имеет IP 192.168.1.1, для этого в командной строке нужно выполнить команду telnet 192.168.1.1 на запрос имени пользователя необходимо указать root, а пароль пустой.

В командной строке DIB-120 нужно выполнить следующие команды:

cd /tmp

wget http://192.168.1.2/vmlinuz-7402c0
eraseall /dev/mtd2 ; dd if=vmlinuz-7402c0 of=/dev/mtd2

wget http://192.168.1.2/a-fs-cramfs.img
eraseall /dev/mtd0 ; dd if=a-fs-cramfs.img of=/dev/mtd0

reboot

Внимание! После перезагрузки пароль root’a будет изменен (см. файл password.txt в архиве), пароль можно изменить выполнив команду passwd

Оригинал статьи тут: http://cworld.org.ua/2009/09/16/firmware-d-link-dib-120/

Большое спасибо Hades за данную публикацию,  а то у меня FreeBSD и я уже чуть было не озадачился поднятием эмулятора Linux 🙂

Сделал все как описано в статье, за исключением того, что поднял не Apache, а по быстрому поставил  nginx (/usr/ports/www/nginx).

Все получилось, после прошивки и ребута приставка начала стучаться по DHCP и успешно получила от моего сервера DHCP IP-адрес.

Вот конфиг  nginx.conf:

user   www www;
worker_processes  1;

error_log  logs/error.log;
pid         /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       192.168.1.2:80;
        server_name  localhost;

        location / {
            root   /usr/local/www/nginx;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
    }
}

Вот пример вывода с приставки при перепрошивке:

# cd /tmp
# wget http://192.168.1.2/vmlinuz-7402c0
Connecting to 192.168.1.2[192.168.1.2]:80
vmlinuz-7402c0 100% |*****************************| 1565 KB --:--:-- ETA
# eraseall /dev/mtd2 ; dd if=vmlinuz-7402c0 of=/dev/mtd2
Erasing 128 Kibyte @ 1e0000 -- 93 % complete.
3130+1 records in
3130+1 records out
# wget http://192.168.1.2/a-fs-cramfs.img
Connecting to 192.168.1.2[192.168.1.2]:80
a-fs-cramfs.img 100% |*****************************| 13964 KB 00:00:00 ETA
# eraseall /dev/mtd0 ; dd if=a-fs-cramfs.img of=/dev/mtd0
Erasing 128 Kibyte @ 11e0000 -- 99 % complete.

27928+0 records in
27928+0 records out
#
# reboot
# Connection closed by foreign host.

Уверен, что данная заметка пригодится не только мне.

Автор: Николаев Дмитрий (virus (at) subnets.ru)

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 4,75 из 5)
Загрузка...
Отправить на почту Отправить на почту

Запуск вещания VoD (Video on Demand) — Видео по запросу

Для примера возьмем сервер с unicast IP-адресом 172.16.10.14, вещаем с порта 5554

Консоль сервера:
===========

1. vlc --ttl 12 --color -I telnet --telnet-password 123 --rtsp-host 172.16.10.14:5554

2. telnet localhost 4212

3.
> new Test vod enabled
> setup Test input /path/to/file.avi

На клиенте:
=======

запускаем vlc проигрыватель
нажимаем «Файл» ->«Открыть URL»
в строке MRL пишем: rtsp://172.16.10.14:5554/Test
жмем «ОК» — смотрим фильм «по запросу»


Multicast вещание нескольких видео файлов на multicast IP-адреса 239.255.1.1 и 239.255.1.2

Вещаем по RTP, консоль сервера:
===========

1. vlc --ttl 12 --color -I telnet --telnet-password 123

2. telnet localhost 4212

3.
> new channel1 broadcast enabled
> setup channel1 input /path/to/file_1.avi
> setup channel1 output #rtp{mux=ts,dst=239.255.1.1,sap,name="Channel1"}
> new channel2 broadcast enabled
> setup channel2 input /path/to/file_2.avi
> setup channel2 output #rtp{mux=ts,dst=239.255.1.2,sap,name="Channel2"}
> control channel1 play
> control channel2 play

Вещаем по UDP, консоль сервера:
===========

1. vlc --ttl 12 --color -I telnet --telnet-password 123

2. telnet localhost 4212

3.
> new channel1 broadcast enabled
> setup channel1 input /path/to/file_1.avi
> setup channel1 output #standard{access=udp{ttl=12},mux=ts{tsid=22,pid-video=23,pid-audio=24,pid-pmt=25,use-key-frames},dst=239.255.1.1,sap,name="Channel1"}
> control channel1 play
По второму каналу точно так же, не буду повторяться.

Если мы хотим зациклить проигрывание файлов до бесконечности «по кругу» то добавим:
> setup channel1 loop
> setup channel2 loop

На клиенте:
========

запускаем vlc проигрыватель
нажимаем «Инструменты» -> «Настройки», там, в нижнем левом углу жмем в «Показывать настройки» на «Все», затем раскрываем «Вывод потока», а там ищем «Модули вывода», в поле «Интерфейс вывода IPv4 multicast» пишем IP-адрес, который прописан на вашей сетевой карте ( смотрящей в сторону сервера вещающего поток), жмем «Сохранить»

Для просмотра потока по RTP:

После того как выполнили настройки: «Файл» ->«Открыть URL»
в строке MRL пишем:
udp://@239.255.1.1:5004 (что бы посмотреть видео из файла file_1.avi)
или
udp://@239.255.1.2:5004 (что бы посмотреть видео из файла file_2.avi соответственно)

Для просмотра потока по UDP:
в строке MRL пишем:
udp://@239.255.1.1 (что бы посмотреть видео из файла file_1.avi)

З.Ы.

Так же запустить вещание в один поток по UDP можно так:

vlc -vvv /path/to/file.avi —sout ‘#standard{access=udp{ttl=15},mux=ts{tsid=22,pid-video=23,pid-audio=24,pid-pmt=25,use-key-frames},dst=239.255.1.1}’ —random —loop —volume 100


VLC Unicast to HTTP

Вещаем поток в HTTP страницу, просмотр возможен как и на HTTP странице, так и отдельно с помощью плеера Windows Media Player.

Консоль сервера:
===========

vlc -vvv /path/to/file.avi --sout '#transcode{vcodec=DIV3,vb=256,scale=1,acodec=mp3,ab=32,channels=2}:std{access=mmsh,mux=asfh,dst=:8080}'

На клиенте:
========

код страницы для отображения вещания + ссылка на запуск WMP:

<html>
<title>TEST</title>
<body>
<div id='content'>
<table align='left' style='border:none'>
<tr><td  style = 'width:320px;border:none'>
<div style = 'width:320px;'>
<OBJECT ID="mediaPlayer" width="320" height="309"
                CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
                CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
                STANDBY="Loading Microsoft Windows Media Player components..."
                TYPE="application/x-oleobject">
<PARAM NAME="url" VALUE="mms://10.10.16.71:8080">
<PARAM NAME="autoStart" VALUE="1">
<PARAM NAME="bgColor" VALUE="#000000">
<PARAM NAME="showControls" VALUE="true">
<PARAM NAME="TransparentatStart" VALUE="false">
<PARAM NAME="AnimationatStart" VALUE="true">
<PARAM NAME="StretchToFit" VALUE="true">
<EMBED src="mms://10.10.16.71:8080"
                        type="application/x-mplayer2"
                        name="MediaPlayer"
                        autostart="1" showcontrols="1" showstatusbar="1" autorewind="1"
                        width="320" height="309"></EMBED>
</OBJECT>
</div>
</td><td valign=top style='padding-left:30px;border:none;text-align:left'>
<a class='text' href='mms://10.10.16.71:8080'>Открыть в МедиаПлеер</a>
</td></tr>
</table>
</div>
</div>
</body>
</html>

10.10.16.71 — IP-адрес сервера, с которого вещается поток
8080 — порт куда вещается поток

Заливаем эту страницу на свой WWW сервер, заходим на нее http://адрес_WWW_сервера/mms_test.html и смотрим вышаемый поток.


VLC Multicast to Unicast

Принимаем поток по multicast, а отдаем по unicast

Консоль сервера:
===========

vlc --ttl 12 udp://@224.0.42.49:5000 --sout '#std{access=udp,mux=ts,dst=192.168.1.15:1234}'

224.0.42.49:5000 — адрес потока откуда берем multicast
192.168.1.15 — адрес клиента куда отправляем unicast

Будьте внимательны с указанием портов для потоков.

Если на сервере несколько сетевых карт и соответственно IP-адресов, то указать через какую карту брать поток можно прописав маршрут (роутинг) через IP-адрес сервера на нужной вам сет. карте, например на сервере одна из сет. карт это em0 с IP-адресом 192.168.1.1:

route add 224.0.42.49/32 192.168.1.1

Добавив маршрут сервер будет пытаться получить multicast поток через em0, что можно видеть с помощью tcpdump:

tcpdump -ni em0

09:24:34.475683 IP XX.XX.100.182.32857 > 224.0.42.49.5000: UDP, length 1316
09:24:34.478554 IP XX.XX.100.182.32857 > 224.0.42.49.5000: UDP, length 1316
09:24:34.481677 IP XX.XX.100.182.32857 > 224.0.42.49.5000: UDP, length 1316

Отправка unicast потока клиенту (192.168.1.15) будет выглядеть примерно так:

09:26:11.374433 IP 192.168.1.1.61320 > 192.168.1.15.1234: UDP, length 1316
09:26:11.376441 IP 192.168.1.1.61320 > 192.168.1.15.1234: UDP, length 1316
09:26:11.378381 IP 192.168.1.1.61320 > 192.168.1.15.1234: UDP, length 1316

На клиенте:
=======

запускаем vlc проигрыватель
нажимаем «Файл» ->«Открыть URL»
в строке MRL пишем: udp://@192.168.1.15
жмем «ОК» — смотрим unicast поток отправляемый сервером

Сжимаем выходной поток:

vlc --ttl 12 -vvv udp://@224.0.42.49:5000 --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=200,ab=128,deinterlace}:rtp{mux=ts,dst=192.168.1.15}'

«vb=» — Эта опция позволяет установить bitrate видио потока в kbit/s
«ab» — TЭта опция позволяет установить bitrate аудио потока в kbit/s


VLC и несколько сетевых интерфейсов
Вопрос:

У меня в компьютере несколько сетевых интерфейсов, как указать VLC чтобы multicast шел через нужный мне, например 192.168.1.15 ?

Ответ:
Это можно сделать указав IP-адрес нужного вам сетевого интерфейса в настройках VLC.

vlc_ifaces

vlc_ifaces

Теперь IGMP запросы будут уходить с сетевого интерфейса с IP-адресом 192.168.1.15

Если вещание производится из консоли сервера (например сервер с OS FreeBSD) и в нем несколько сетевых интерфейсов, то указать через какой интерфейс пускать поток multicast (udp) можно прописав статический маршрут, например:

224.0.42.49 — адрес потока который собираемся вещать
192.168.1.15 — IP-адрес на одной из сетевых карт сервера

route add 224.0.42.49/32 192.168.1.15

Теперь поток multicast (udp) будет уходить с сетевого интрфейса с IP-адресом 192.168.1.15

Ссылки:

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 3,25 из 5)
Загрузка...
Отправить на почту Отправить на почту