Previous Entry Add to Memories Share Next Entry
Ретранслирование iptv на freeNAS
photo maniac
[info]bright_pixel
У провайдера в сетке есть iptv, правда довольно хитрое, через udp->http IPTV прокси, видимо что-то вроде linux-ого udpxy.
Я данное видео на своём телефоне с Андроидом просматривать так и не научился, хотя перепробовал с десяток плееров.

Но теперь у меня есть HP Microserver (никакой рекламы) с FreeNAS работающим на флэшке (embedded), поэтому я могу ретранслировать видео в нужном не виде с помощью vlc. Так как FreeNAS работает с флэшки, для установки понадобится диск подмонтированный с помощью UnionFS (http://en.wikipedia.org/wiki/UnionFS)

Детальнейше всё расписано вот тут : http://sourceforge.net/apps/phpbb/freenas/viewtopic.php?f=15&t=9008

/mnt/usb60 - это путь к моему usb-винту:
/dev/da1p1 on /mnt/usb60 (ufs, NFS exported, local, soft-updates, acls)

Итак, создаём и монтируем директории:
freenas:~# mkdir -p /mnt/usb60/opt/usr_local
freenas:~# mkdir -p /mnt/usb60/opt/var
freenas:~# mount_unionfs /mnt/usb60/opt/usr_local /usr/local
freenas:~# mount_unionfs /mnt/usb60/opt/var /var

freenas:~# mount
/dev/md0 on / (ufs, local)
devfs on /dev (devfs, local)
procfs on /proc (procfs, local)
/dev/md1 on /var (ufs, local)
/dev/da1p1 on /mnt/usb60 (ufs, NFS exported, local, soft-updates, acls)
/dev/da0a on /cf (ufs, local, read-only)
<above>:/mnt/usb60/opt/usr_local on /usr/local (unionfs, local)
<above>:/mnt/usb60/opt/var on /var (unionfs, local)mkdir -p /mnt/usb60/opt/usr_local

Ставим sudo (понадобится для запуска vlc):
freenas:~# pkg_add -r sudo

К данной задаче это не относится, но так как мне их не хватает, то заодно уж ставлю MC, wget и ftp-клиента:
freenas:~# pkg_add -r mc-light
freenas:~# pkg_add -r wget
freenas:~# pkg_add -r lftp

Ну и непосредственно сам vlc:
freenas:~# pkg_add -r vlc

Тут есть пока некий вопрос, так как готовый порт vlc качает и ставит несколько десятков пакетов, многие из которых точно не нужны. Теоретически можно собрать vlc самому из исходников (ftp://download.videolan.org/pub/videolan/vlc/), например по рецепту отсюда:
http://itblog.su/wp-content/uploads/2008/03/internet_radio_video_translation_server.txt
отключаем  все,  чем  можно  пренебречь,  а  именно:поддержкой   DVD,  тарелок,  исков,  буфера  кадров,  библиотеки  SDL,
протокола   SLP  и  аудиоформата  OGG:
$ tar zxvf vlc-0.5.3.tar.gz
$ cd vlc-0.5.3
$ ./configure --prefix=/usr/local/vlc --disable-dvd --disable-dvbpsi --disable-ogg --disable-vorbis --disable-x11 --disable-xvideo --disable-sdl --disable-freetype --disable-fb --disable-gtk --disable-wxwindows --disable-slp --disable-mad
$ make
# make install

Однако на FreeNAS нет gcc и make и доставить их у меня не получилось. Так что пока что я установил следующий vlc вместе со всеми зависимостями:
ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-7.3-release/Latest/vlc.tbz

Осталось самое простое : запустить стриминг:
/usr/local/bin/sudo -u nobody /usr/local/bin/cvlc -vvv http://iptv.tiera.tv/udp/239.195.0.1:1234 --sout '#standard {access=http,mux=ps,dst=192.168.1.2:8088}'

На клиенте осталось запустить плеер и открыть в плеере url http://192.168.1.2:8088

Для Андроида единственный плеер который сумел проигрывать потоковое видео это yxPlayer. Так как мой аппарат HTC Wildfire обладает не очень мощным процессором, то для устранения лагов можно сжать картинку, запустив стриминг следующим образом:
/usr/local/bin/sudo -u nobody /usr/local/bin/cvlc -vvv http://iptv.tiera.tv/udp/239.195.0.1:1234 --sout '#transcode{width=320,height=240,vcodec=mp2v,vb=600,acodec=mpga,ab=96}:standard {access=http,mux=ps,dst=192.168.1.2:8088}'

P.S. Подробно про опции стриминга VLC можно прочесть тут http://www.videolan.org/doc/streaming-howto/en/

Очень любопытно, коллега. Но при чем тут UnionFS? ;)

Хотя дочитал конфиг и понял.

Ну да, не очень понятно расписал ... в жанре заметок на полях :)

You are viewing [info]bright_pixel's journal