Попробую внести свою лепту в деле SS2 под FreeBSD.
Транслирую 49 каналов с 3 тарелок в мультикасте тремя серваками под линуксом (ядро 2.6.24).
В двух серваках по 4 SS2 (2.6 rev. D) в каждом. Примерно 150 мбит мультикаста заливается в НР5308.
5308 маршрутизит мультикаст.
Теперь о серваках трансляция на VLC-0.8.6.e
сомпилился VLC с такими параметрами
Код: Выделить всё
./configure --prefix=/usr/local/vlc-0.8.6e --enable-v4l --disable-gnomevfs --disable-screen --disable-speex --disable-x11 --disable-xvideo --disable-glx --disable-opengl --disable-sdl --disable-visual --disable-joystik --disable-vcd --disable-vcdx --disable-cdda --disable-hal --disable-hd1000v --disable-hd1000a --disable-bonjour --disable-daap --disable-httpd --enable-vlm --disable-dvdnav --disable-smb --disable-libcdio --disable-libcddb --disable-ogg --disable-mkv --disable-mod --disable-mpc --disable-vorbis --disable-png --disable-x264 --disable-cmml --disable-freetype --disable-fribidi --disable-libxml2 --disable-fb --disable-wxwidgets --disable-skins2 --enable-sap --enable-dvbpsi --enable-libmpeg2 --with-dvbpsi=/usr/local/lib --disable-nls --enable-optimize-memory --enable-sout --enable-release --enable-dvb
По зависимостям даже не впомню так как ставил давно и в последствии просто обнавлял версии VLC
запуск VLC через rc.local (привожу реальный запуск с одного из серваков)
Код: Выделить всё
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
#/sbin/ifconfig eth0 down
#/sbin/ifconfig eth0 0.0.0.0 up
#/sbin/vconfig add eth0 200
#/sbin/ifconfig eth0.200 192.168.199.10 netmask 255.255.255.0 up
#/sbin/route add default gw 192.168.199.1
#sleep 1
chown -R vlc:vlc /dev/dvb
sudo -u vlc /usr/local/vlc-0.8.6e/bin/vlc --intf=dummy --rc-unix=/tmp/vlc1.sock --rc-fake-tty 2 --ttl 2 --color --ts-es-id-pid --no-overlay \ --programs=2500,3300,4600,5800,3700 dvb: --dvb-adapter=1 --dvb-budget-mode --dvb-frequency=3944000 --dvb-srate=15550000 \ --dvb-voltage=13 --dvb-fec=3 --dvb-lnb-lof1=5150000 --dvb-lnb-lof2=5150000 --dvb-lnb-slof=5150000 --dvb-modulation=128 \ --sout-standard-access=udp --sout-standard-mux=ts --sout \ '#duplicate{dst=std{url=231.155.25.150,sap,name="O2tv"},select="program=2500",dst=std{url=231.155.25.151,sap,name="Ru \ TV"},select="program=3300",dst=std{url=231.155.25.152,sap,name="Amazing Life \ promo"},select="program=4600",dst=std{url=231.155.25.153,sap,name="Telekanal \ Zvezda"},select="program=3700",dst=std{url=231.155.25.154,sap,name="Style TV"},select="program=5800"}' &
sudo -u vlc /usr/local/vlc-0.8.6e/bin/vlc --intf=dummy --rc-unix=/tmp/vlc0.sock --rc-fake-tty 2 --ttl 2 --color --ts-es-id-pid --no-overlay \ --programs=500,700,900,1300 dvb: --dvb-adapter=0 --dvb-budget-mode --dvb-frequency=12548000 --dvb-srate=22000000 --dvb-fec=7 \ --dvb-voltage=13 --dvb-lnb-lof1=9750000 --dvb-lnb-lof2=10600000 --dvb-lnb-slof=11700000 --dvb-modulation=128 --sout-standard-access=udp \ --sout-standard-mux=ts --sout '#duplicate{dst=std{url=231.155.30.10,sap,name="Zoo \ Park"},select="program=500",dst=std{url=231.155.30.11,sap,name="Fashion TV \ Russia"},select="program=700",dst=std{url=231.155.30.12,sap,name="TV \ XXI"},select="program=900",dst=std{url=231.155.30.13,sap,name="Gameplay TV"},select="program=1300"}' &
sudo -u vlc /usr/local/vlc-0.8.6e/bin/vlc --intf=dummy --rc-unix=/tmp/vlc2.sock --rc-fake-tty 2 --ttl 2 --color --ts-es-id-pid --no-overlay \ --programs=26,35,48 dvb: --dvb-adapter=2 --dvb-budget-mode --dvb-frequency=11606000 --dvb-srate=44948000 --dvb-fec=5 --dvb-voltage=13 \ --dvb-lnb-lof1=9750000 --dvb-lnb-lof2=10600000 --dvb-lnb-slof=11700000 --dvb-modulation=128 --sout-standard-access=udp \ --sout-standard-mux=ts --sout '#duplicate{dst=std{url=231.155.25.200,sap,name="Bridge \ TV"},select="program=26",dst=std{url=231.155.25.201,sap,name="Perviy kanal \ SNG"},select="program=35",dst=std{url=231.155.25.202,sap,name="Kitay"},select="program=48"}' &
sudo -u vlc /usr/local/vlc-0.8.6e/bin/vlc --intf=dummy --rc-unix=/tmp/vlc3.sock --rc-fake-tty 2 --ttl 2 --color --ts-es-id-pid --no-overlay \ --programs=100,200,600 dvb: --dvb-adapter=3 --dvb-budget-mode --dvb-frequency=12670000 --dvb-srate=22000000 --dvb-fec=7\ --dvb-voltage=13 --dvb-lnb-lof1=9750000 --dvb-lnb-lof2=10600000 --dvb-lnb-slof=11700000 --dvb-modulation=128 --sout-standard-access=udp \ --sout-standard-mux=ts --sout '#duplicate{dst=std{url=231.155.26.40,sap,name="Luxe \ TV"},select="program=100",dst=std{url=231.155.26.41,sap,name="Telekanal \ 2x2"},select="program=200",dst=std{url=231.155.26.42,sap,name="TV Club"},select="program=600"}' &
#sudo -u vlc /usr/local/vlc-0.8.6e/bin/vlc --intf=dummy --rc-unix=/tmp/vlc3.sock --rc-fake-tty 2 --ttl 12 --color --ts-es-id-pid --no-overlay #--programs=13,14 dvb: --dvb-adapter=3 --dvb-budget-mode --dvb-frequency=11044000 --dvb-srate=44948000 --dvb-fec=5 --dvb-voltage=18 #--dvb-lnb-lof1=9750000 --dvb-lnb-lof2=10600000 --dvb-lnb-slof=11700000 --dvb-modulation=128 --sout-standard-access=udp #--sout-standard-mux=ts --sout '#duplicate{dst=std{url=231.155.25.220,sap,name="Love #Music"},select="program=13",dst=std{url=231.155.25.221,sap,name="Neo Music"},select="program=14"}' &
touch /var/lock/subsys/local
чтобы udev автоматом пихал карты в /dev/dvb
создал /etc/udev/rules.d/dvb.rules
Код: Выделить всё
KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c"
создал /etc/udev/scripts/dvb.sh
Код: Выделить всё
#!/bin/bash
/bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,'
ps ax наблюдаем вот это
Код: Выделить всё
4081 ? Ss 0:00 sshd: andr [priv]
4096 ? R 0:00 sshd: andr@pts/0
4104 pts/0 Ss 0:00 -bash
4141 pts/0 S 0:00 su
4142 pts/0 R 0:00 bash
5415 ? Sl 2:10 /usr/local/vlc-0.8.6e/bin/vlc -vvv --intf=dummy --ttl 12 --color --ts-es-id-pid --programs=100,900,1300 dvb: --dvb-adapter=0 --dvb-frequency=4042000 --d
5416 ? Sl 6:31 /usr/local/vlc-0.8.6e/bin/vlc -vvv --intf=dummy --ttl 12 --color --ts-es-id-pid --programs=1,768,800,900,4901,4902,5700 dvb: --dvb-adapter=1 --dvb-frequ
5417 ? Sl 5:14 /usr/local/vlc-0.8.6e/bin/vlc -vvv --intf=dummy --ttl 12 --color --ts-es-id-pid --programs=900,2100,3300,3600,3700,3800,3900,4000 dvb: --dvb-adapter=2 -
5418 ? Sl 1:48 /usr/local/vlc-0.8.6e/bin/vlc -vvv --intf=dummy --ttl 12 --color --ts-es-id-pid --programs=1100,1200 dvb: --dvb-adapter=3 --dvb-frequency=12610000 --dvb
5459 ? S< 0:00 [kdvb-fe-3]
5460 ? S< 0:00 [kdvb-fe-0]
5469 ? S< 0:00 [kdvb-fe-1]
5471 ? S< 0:00 [kdvb-fe-2]
lsmod
Код: Выделить всё
[root@stream2 andr]# lsmod
Module Size Used by
xt_tcpudp 3072 12
iptable_filter 2308 1
ip_tables 9944 1 iptable_filter
x_tables 10372 2 xt_tcpudp,ip_tables
i2c_i801 7440 0
b2c2_flexcop_pci 7204 84
b2c2_flexcop 22544 1 b2c2_flexcop_pci
mt312 6920 1 b2c2_flexcop
stv0299 9232 1 b2c2_flexcop
dvb_core 65564 2 b2c2_flexcop,stv0299
Код: Выделить всё
[root@stream2 andr]# cd /dev/dvb
[root@stream2 dvb]# ls -l
total 0
drwxr-xr-x 2 root root 120 Apr 2 08:42 adapter0
drwxr-xr-x 2 root root 120 Apr 2 08:42 adapter1
drwxr-xr-x 2 root root 120 Apr 2 08:42 adapter2
drwxr-xr-x 2 root root 120 Apr 2 08:42 adapter3
Код: Выделить всё
[root@stream2 adapter0]# ls -l
total 0
crw------- 1 root root 212, 4 Apr 2 08:42 demux0
crw------- 1 root root 212, 5 Apr 2 08:42 dvr0
crw------- 1 root root 212, 3 Apr 2 08:42 frontend0
crw------- 1 root root 212, 7 Apr 2 08:42 net0
вот примерно как у меня
Если чтонить такое же учинить на freebsd было бы замечательно.
VLC думаю должно без проблем --enable-dvb прям из портов
Можно подправить Makefile
libdvbpsi5-0.1.6 есть в портах
покрайней мере все необходимое есть в портах
Читать мультикаст пробывал STB Длинком-110 без проблем глотает мультикаст с VLC
Правда в этой конфигурации замечен один глюк.
При запуске серваков примерно через полчаса наблюдаются подрывы после НР5308
Лечится совершенно тупо подклучением по SSH к серваку и постоянным удержанием SSH.
С чем это связано толи с косяками PIM маршрутизации на НР5308 либо с самими серваками особо разобраться нет времени.
Обращайтесь если есть вопросы постараюсь ответить.