Streaming de chaînes TNT sur un réseau local » Historique » Version 3
Version 2 (Julien Aubé, 03/09/2011 23:32) → Version 3/20 (Julien Aubé, 08/09/2011 12:37)
h1. Streaming de chaînes TNT sur un réseau local
Cette page explique l'une des installations possible pour diffuser les chaînes de la TNT sur un réseau local, en multicast ou en HTTP. multicast.
*Note*: J'ai ajouté la possibilité de streamer via HTTP car la plupart des points d'accès sans fil 802.11b/g on un comportement délicat en
cas de trames multicast: Ils réduisent la vitesse de connexion à 1Mbps.
Ceci est bien sur rédhibitoire pour un flux DVB.
Les chaînes en HD ne sont pas diffusées.
La bande passante utilisés est de environ 10Mbps lorsque toute les chaînes sont actives.
*Historique*
- Repassé en IPv4 pour la diffusion: Les switchs ne gèrent pas l'IPv6 et MLD, les set-top-box non plus.
- Ajouté _minisapserver_ pour le stream en multicast
- Utilisation d'_iproute2_ plutôt que _ifconfig_
- Ajout du convertisseur de stream _udpxy_
h2. Matériel
Il faut:
* Un PC, relativement puissant, sous Linux. J'ai choisi un AMD Fusion E350, avec 8Go de RAM.
* Autant de tuners TV que de multiplex à diffuser. Sur Cahors, il y a 4 multiplex, j'ai choisi 2 cartes TV double-tuner : Terratec Cinergy T DualRC ( http://www.terratec.net/fr/produkte/Cinergy_T_Stick_Dual_RC_102264.html )
* Un amplificateur TV muni de autant de sorties que de tuners TV, si possible placé au plus près de l'antenne. Un simple dérivateur dégrade le signal, et les cartes TV n'aiment pas.
* Je conseille de faire toute l'installation en connecteurs de type "F" (filetés, comme pour le satellite). J'ai simplement utilisé des convertisseurs au niveau de la prise murale, et des cartes TV. La raison, c'est que ces connecteurs sont moins sujets aux vibrations et aux perturbations transitoires.
* Au niveau réseau , un switch capable de faire de l'IGMP-Snooping (éventuellement) (sinon vous avez le risque d'inonder le réseau).
h2. Driver des cartes TV
Il vous faut arriver à la situation suivante:
<pre>
/dev/dvb/adapter0/demux0
/dvr0
/frontend0
/net0
/adapter1/demux0
/dvr0
/frontend0
/net0
/adapter2/demux0
/dvr0
/frontend0
/net0
/adapter3/demux0
/dvr0
/frontend0
/net0
</pre>
Dans le cas des cartes USB de type Terratec Cinergy T DualRC , le driver est _dvb_usb_af9015_ .
Ce driver nécessite un firmware, et après plusieurs essais, le firmware (http://otit.fi/~crope/v4l-dvb/af9015/af9015_firmware_cutter/firmware_files/ ) qui marche le mieux est le 4.65 , à placer dans /lib/firmware/<kernel-version>/dvb-usb-af9015.fw .
Attention, souvent la distribution *écrase* ce fichier et place une version différente du firmware, ça crée des bugs bizarres.
Dans /etc/modprobe.d/dvb/cof j'ai placé les options suivantes:
<pre>
options dvb_usb_af9015 remote=-1
options dvb_usb disable-rc-polling=1
options usbcore autosuspend=-1
</pre>
Ceci désactive la télécommande (qui ne marche pas sur ces adaptateurs de toute façon) et évite de flooder les logs, mais aussi désactive la suspension USB , qui fait planter la carte et nécessite un redémarrage à froid.
Une fois que ça marche, j'ai ceci dans les logs:
<pre>
[ 14.632591] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in cold state, will try to load a firmware
[ 14.694155] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[ 14.762381] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in warm state.
[ 14.762638] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 14.763897] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 14.827810] af9013: firmware version:4.65.0.0
[ 14.834356] DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)...
[ 14.846115] mxl5007t 1-00c0: creating new instance
[ 14.849933] mxl5007t_get_chip_id: unknown rev (3f)
[ 14.850017] mxl5007t_get_chip_id: MxL5007T detected @ 1-00c0
[ 14.852144] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 14.852906] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 15.501354] af9013: found a 'Afatech AF9013 DVB-T' in warm state.
[ 15.505639] af9013: firmware version:4.65.0.0
[ 15.521986] DVB: registering adapter 1 frontend 0 (Afatech AF9013 DVB-T)...
[ 15.522339] mxl5007t 2-00c0: creating new instance
[ 15.525602] mxl5007t_get_chip_id: unknown rev (3f)
[ 15.525687] mxl5007t_get_chip_id: MxL5007T detected @ 2-00c0
[ 15.528612] dvb-usb: TerraTec Cinergy T Stick Dual RC successfully initialized and connected.
[ 15.974156] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in cold state, will try to load a firmware
[ 15.984388] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[ 16.051462] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in warm state.
[ 16.051719] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 16.052967] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 16.060942] af9013: firmware version:4.65.0.0
[ 16.067817] DVB: registering adapter 2 frontend 0 (Afatech AF9013 DVB-T)...
[ 16.068222] mxl5007t 3-00c0: creating new instance
[ 16.071530] mxl5007t_get_chip_id: unknown rev (3f)
[ 16.071615] mxl5007t_get_chip_id: MxL5007T detected @ 3-00c0
[ 16.073434] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 16.074030] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 16.717317] af9013: found a 'Afatech AF9013 DVB-T' in warm state.
[ 16.721354] af9013: firmware version:4.65.0.0
[ 16.737449] DVB: registering adapter 3 frontend 0 (Afatech AF9013 DVB-T)...
[ 16.737808] mxl5007t 4-00c0: creating new instance
[ 16.741072] mxl5007t_get_chip_id: unknown rev (3f)
[ 16.741157] mxl5007t_get_chip_id: MxL5007T detected @ 4-00c0
[ 16.743857] dvb-usb: TerraTec Cinergy T Stick Dual RC successfully initialized and connected.
</pre>
h2. Software
h3. Chaînes TV
Il vous faudra connaître les chaînes TV qui vous sont accessibles.
Pour cela, l'utilitaire a utiliser est _scan_ :
<pre>scan -a 0 /usr/local/share/dvb/dvb-t/fr-Cahors</pre>
(Bien sur il faut remplacer le fichier par celui de votre zone géographique)
Ceci va vous lister la liste des chaînes sur chaque multiplex.
h3. Mumudvb
J'ai commencé par utiliser mumudvb. Il est plus simple d'utilisation et supporte l'igmp-snooping, mais malheureusement je l'ai trouvé moins stable dans le temps: Une erreur dans le flux TV (ce qui arrive de temps en temps) le fait planter sèchement. J'ai malgré tout inséré les fichiers de configuration que j'ai utilisé en attachement de cet article.
(Attention, ces fichiers ne diffusent pas en multicast - ils sont configurés pour l'unicast)
mumudvb_card0.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=0
autoconf_unicast_start_port=1320
port_http=4242
freq=818
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
mumudvb_card1.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=1
autoconf_unicast_start_port=1310
port_http=4241
freq=786
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
mumudvb_card2.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=2
autoconf_unicast_start_port=1300
port_http=4240
freq=490
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
mumudvb_card3.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=3
autoconf_unicast_start_port=1330
port_http=4243
freq=698
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
Le fichier de playlist pour VLC associé _TV.m3u_:
<pre>
#EXTM3U
#EXTINF:-1,France 2
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/1
#EXTINF:-1,France 5
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/2
#EXTINF:-1,France O
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/3
#EXTINF:-1,LCP
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/4
#EXTINF:-1,France 3
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/5
#EXTINF:-1,TF1
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/1
#EXTINF:-1,NRJ12
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/2
#EXTINF:-1,TMC
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/3
#EXTINF:-1,ARTE
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/4
#EXTINF:-1,M6
#EXTVLCOPT:http-caching=5000
http://tavernier:4242/bynumber/1
#EXTINF:-1,W9
#EXTVLCOPT:http-caching=5000
http://tavernier:4242/bynumber/2
#EXTINF:-1,NT1
#EXTVLCOPT:http-caching=5000
http://tavernier:4242/bynumber/3
#EXTINF:-1,Direct 8
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/1
#EXTINF:-1,BFM TV
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/2
#EXTINF:-1,i>TELE
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/3
#EXTINF:-1,DirectStar
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/4
#EXTINF:-1,Gulli
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/5
#EXTINF:-1,France 4
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/6
</pre>
h3. DVBlast
DVBlast est un logiciel écrit par les auteurs de VLC. Il a moins de fonctionnalités que mumudvb et est plus compliqué à configurer.
Néanmoins, il est très stable, surtout face aux erreurs des flux DVB.
Il ne gère pas malheureusement pas l'IGMP, ce qui explique que j'ai utilisé une configuration spéciale:
Pour éviter de flooder le mon réseau, j'ai monté une interface *dummy0* en inscrivant _dummy_ dans _/etc/modules_ .
Ensuite, cette interface est montée et mise en place pour accepter le multicast:
<pre>
ip link set <pre>ifconfig dummy0 multicast on
ip addr add 10.0.0.100 dev dummy0
ip link set dummy0 up
ip route add 225.1.0.0/16 dev dummy0
</pre>
up</pre>
Ainsi le trafic multicast ne sort pas de la machine, ce qui est mon objectif pour le moment.
Pour diffuser en multicast sur le réseau local, enlever cette restriction, il suffit dans les fichiers ci-dessous de commenter les lignes ci-dessus dans retirer la partie _%dummy0_ de chaque ligne: Ceci active le script de démarrage. multicast sur l'interface par défaut.
Voici la configuration que j'ai utilisé. Ces données sont à modifier en fonction de votre émetteur:
<pre>
<IP>[:<port>][/udp] <always on> <SID> [<PID>,]*
</pre>
Ici, l'IPv6 est en format standard, et désigne l'interface de sortie _dummy0_ .
Le flag always_on est mis.
Le SID est celui de la chaine, trouvé via _scan -a 0 /usr/local/share/dvb/dvb-t/fr-Cahors_.
/etc/dvblast/dvblast.0.conf:
<pre>
; France 2
225.1.1.1:2000 [ff12::1%dummy0]:2000 1 257
; France 5
225.1.1.2:2000 [ff12::1%dummy0]:2001 1 260
; France O
225.1.1.3:2000 [ff12::1%dummy0]:2002 1 261
; LCP
225.1.1.4:2000 [ff12::1%dummy0]:2003 1 262
; France 3
225.1.1.5:2000 [ff12::1%dummy0]:2004 1 302
</pre>
/etc/dvblast/dvblast.1.conf:
<pre>
; Direct 8
225.1.4.1:2000 [ff12::1%dummy0]:3000 1 513
; BFM TV
225.1.4.2:2000 [ff12::1%dummy0]:3001 1 515
; i>TELE
225.1.4.3:2000 [ff12::1%dummy0]:3002 1 516
; DirectStar
225.1.4.4:2000 [ff12::1%dummy0]:3003 1 517
; Gulli
225.1.4.5:2000 [ff12::1%dummy0]:3004 1 518
; France 4
225.1.4.6:2000 [ff12::1%dummy0]:3005 1 519
</pre>
/etc/dvblast/dvblast.2.conf:
<pre>
; TF1
225.1.2.1:2000 [ff12::1%dummy0]:4000 1 1537
; NRJ12
225.1.2.2:2000 [ff12::1%dummy0]:4001 1 1538
; TMC
225.1.2.3:2000 [ff12::1%dummy0]:4005 1 1542
; ARTE
225.1.2.4:2000 [ff12::1%dummy0]:4006 1 1543
</pre>
/etc/dvblast/dvblast.3.conf:
<pre>
; M6
225.1.3.1:2000 [ff12::1%dummy0]:5000 1 1025
; W9
225.1.3.2:2000 [ff12::1%dummy0]:5001 1 1026
; NT1
225.1.3.3:2000 [ff12::1%dummy0]:5002 1 1027
</pre>
Voici le fichier de démarrage, situé dans _/etc/init.d/dvblast_ .
C'est là ou sont précisé les fréquences de travail de chaque récepteur.
<pre>
#! /bin/sh
### BEGIN INIT INFO
# Provides: dvblast
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts DVBlast daemons.
# Description: DVBlast is a DVB streamer.
### END INIT INFO
run_dvblast()
{
rm -f /tmp/dvblast.$1.sock
dvblast -e -qq -t0 -r /tmp/dvblast.$1.sock -a $1 -f $2 -c /etc/dvblast/dvblast.$1.conf >/tmp/dvblast.$1.log 2>&1 &
sleep 0.5s
}
. /lib/lsb/init-functions
test -f /usr/bin/dvblast || exit 0
case "$1" in
start)
ifconfig dummy0 multicast up
run_dvblast 0 490167000
run_dvblast 1 698167000
run_dvblast 2 786167000
run_dvblast 3 818167000
;;
stop)
killall dvblast
rm -f /tmp/dvblast.[0-3].sock
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: /etc/init.d/dvblast {start|stop|restart}"
exit 1
esac
exit 0
</pre>
Dans cette configuration, il est possible, plutôt que de créer un Voici le fichier de playlist VLC, d'installer et de faire VLC. Actuellement je fait tourner un serveur SAP.
VLC sur la *même* machine que celle qui diffuse: Il faut installer est donc là aussi nécessaire d'enlever le programme _minisapserver_ , l'activer _%dummy0_ dans _/etc/defaults/minisapserver_,
et faire un fichier de configuration: _/etc/sap.conf_
le cas d'une diffusion réseau.
<pre>
# sap.cfg - Configuration file of the mini SAP server
# Global miniSAPserver options #EXTM3U
[global]
# Number of seconds between announces. 5 is default. Internet announces better use 30.
sap_delay=20
# The network interface on which to stream.
interface=eth1
[program]
type=rtp
name=TF1
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.2.1
port=2000
[program]
type=rtp
name=France #EXTINF:-1,France 2
user=videolan #EXTVLCOPT:http-caching=5000
machine=OB_Network rtp://[ff12::1%dummy0]:2000
site=http://obnet.org
address=225.1.1.1
port=2000
[program]
type=rtp
name=France 3
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.1.5
port=2000
[program]
type=rtp
name=France 4
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.6
port=2000
[program]
type=rtp
name=France #EXTINF:-1,France 5
user=videolan #EXTVLCOPT:http-caching=5000
machine=OB_Network rtp://[ff12::1%dummy0]:2001
site=http://obnet.org
address=225.1.1.2
port=2000
[program]
type=rtp
name=France #EXTINF:-1,France O
user=videolan #EXTVLCOPT:http-caching=5000
machine=OB_Network rtp://[ff12::1%dummy0]:2002
site=http://obnet.org #EXTINF:-1,LCP
address=225.1.1.3 #EXTVLCOPT:http-caching=5000
port=2000
[program] rtp://[ff12::1%dummy0]:2003
type=rtp #EXTINF:-1,France 3
name=Arte #EXTVLCOPT:http-caching=5000
user=videolan rtp://[ff12::1%dummy0]:2004
machine=OB_Network
site=http://obnet.org
address=225.1.2.4
port=2000
[program]
type=rtp
name=M6
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.3.1
port=2000
[program]
type=rtp
name=W9
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.3.2
port=2000
[program]
type=rtp
name=NRJ12
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.2.2
port=2000
[program]
type=rtp
name=TMC
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.2.3
port=2000
[program]
type=rtp
name=Direct 8
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.1
port=2000
[program]
type=rtp
name=NT1
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.3.3
port=2000
[program]
type=rtp
name=DirectStar
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.4
port=2000
[program]
type=rtp
name=LCP
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.1.4
port=2000
[program]
type=rtp
name=BFM TV
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.2
port=2000
[program]
type=rtp
name=i>TELE
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.3
port=2000
[program]
type=rtp
name=Gulli
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.5
port=2000
</pre>
h2. Streaming HTTP
Comme indiqué en introduction, le streaming direct en multicast présente des inconvénients:
- Flood constant de tous les ports si le switch ne supporte pas correctement l'IGMP-Proxying
- Mise à genoux des points d'accès wifi
J'ai donc modifié la configuration comme suis:
h3. Déroutage du trafic multicast sur une interface dummy
Comme DVBlast ne sais pas envoyer du trafic ailleurs que sur une IP multicast, j'ai crée une interface _dummy0_ en ajoutant le module _dummy_ dans _/etc/modules_.
J'ai ensuite ajouter les lignes suivantes dans la section _start_ du fichier /etc/init.d/dvblast, avant le lancement des instances de dvblast:
<pre>
#### Partie à commenter pour envoyer le flux en multicast sur l'interface par défaut
ip link set dummy0 multicast on
ip addr add 10.0.0.100 dev dummy0
ip link set dummy0 up
ip route add 225.1.0.0/16 dev dummy0
######################################################
</pre>
h3. Installation de udproxy
*udpxy* est un petit programme (à installer depuis les sources http://sourceforge.net/projects/udpxy/ car il n'est pas packagé) qui écoute un flux multicast et le met à disposition via une socket HTTP en écoute sur un serveur. Ainsi les chaines sont streamés "à la demande", en unicast.
Il n'y a pas de fichier de configuration: J'ai simplement ajouté dans la section _start_ de _/etc/init.d/dvblast_ la ligne suivante:
<pre>udpxy -R 10 -B 1Mb -c 50 -m dummy0 -p 4022 -a eth1</pre>
Par contre, l'annonce SAP par _minisapserver_ ne sert plus à rien, il faut créer un fichier de playlist adapté:
<pre>
#EXTM3U
#EXTINF:-1,TF1
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.1:2000
#EXTINF:-1,France 2 rtp://[ff12::1%dummy0]:4000
#EXTVLCOPT:http-caching=5000 #EXTINF:-1,NRJ12
http://192.168.1.100:4022/udp/225.1.1.1:2000
#EXTINF:-1,France 3
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.5:2000
#EXTINF:-1,France 4 rtp://[ff12::1%dummy0]:4001
#EXTVLCOPT:http-caching=5000 #EXTINF:-1,TMC
http://192.168.1.100:4022/udp/225.1.4.6:2000
#EXTINF:-1,France 5
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.2:2000
#EXTINF:-1,France O rtp://[ff12::1%dummy0]:4005
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.3:2000
#EXTINF:-1,ARTE
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.4:2000
rtp://[ff12::1%dummy0]:4006
#EXTINF:-1,M6
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.3.1:5000
rtp://[ff12::1%dummy0]:5000
#EXTINF:-1,W9
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.3.2:2000
#EXTINF:-1,NRJ12 rtp://[ff12::1%dummy0]:5001
#EXTINF:-1,NT1
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.2:2000
#EXTINF:-1,TMC rtp://[ff12::1%dummy0]:5002
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.3:2000
#EXTINF:-1,Direct 8
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.1:2000
#EXTINF:-1,NT1 rtp://[ff12::1%dummy0]:3000
#EXTINF:-1,BFM TV
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.3.3:2000
#EXTINF:-1,DirectStar rtp://[ff12::1%dummy0]:3001
#EXTINF:-1,i>TELE
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.4:2000
#EXTINF:-1,LCP rtp://[ff12::1%dummy0]:3002
#EXTINF:-1,DirectStar
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.4:2000
#EXTINF:-1,BFM TV rtp://[ff12::1%dummy0]:3003
#EXTINF:-1,Gulli
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.2:2000
#EXTINF:-1,i>TELE rtp://[ff12::1%dummy0]:3004
#EXTVLCOPT:http-caching=5000 #EXTINF:-1,France 4
http://192.168.1.100:4022/udp/225.1.4.3:2000
#EXTINF:-1,Gulli
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.5:2000 rtp://[ff12::1%dummy0]:3005
</pre>
Les chaînes en HD ne sont pas diffusées.
La bande passante utilisés est de environ 10Mbps lorsque toute les chaînes sont actives.
h2. Conclusion
Cette configuration est très stable et fonctionne depuis plus d'une semaine sans plantage, ce qui n'était pas le cas de mumudvb.
J'y vois 2 principaux problèmes:
* Manque de souplesse, en particulier sur les fréquences des émetteurs, et sur les chaînes à diffuser (Parfois les SID changent)
changent).
* A l'heure actuelle l'envoi multicast est inconditionnel: inconditionnel. Au niveau du switch, il faudrait trouver un moyen de faire une sorte d'IGMP-Snooping en IPv6 (je crois que ça s'appelle *MLD*). Mais comment faire comprendre ça au switch ? Est-ce que ça se gère au niveau du PC d'envoi ? Le but est d'éviter de flooder tous les ports avec toutes les chaines systématiquement. (A travailler - Mon switch Netgear GS716T ne gère pas le MLD. A tenter avec le BDCOM S2548GX ? )
*update* : Il semble que pour qu'un système envoie, en IPv4, une annonce IGMP pour les groupes multicast concernés, il est indispensable que le programme emmeteur ajoute, dans le corp du programme, une socket en écoute et fasse un appel IOCTL à IP_ADD_MEMBERSHIP. _mumudvb_ effectue cette opération, mais pas _dvblast_.
Ceci pourrait résoudre le problème du groupage multicast avec dvblast.
Néanmoins, sur le switch Netgear GS716T le problème reste que en cas d'activation de l'option "Unknow Multicast frame filtering", les trames d'annonces IPv6 sont filtrées avec, sans possibilité de les insérer dans une liste blanche: Une investigation plus poussée semble nécessaire.
Cette page explique l'une des installations possible pour diffuser les chaînes de la TNT sur un réseau local, en multicast ou en HTTP. multicast.
*Note*: J'ai ajouté la possibilité de streamer via HTTP car la plupart des points d'accès sans fil 802.11b/g on un comportement délicat en
cas de trames multicast: Ils réduisent la vitesse de connexion à 1Mbps.
Ceci est bien sur rédhibitoire pour un flux DVB.
Les chaînes en HD ne sont pas diffusées.
La bande passante utilisés est de environ 10Mbps lorsque toute les chaînes sont actives.
*Historique*
- Repassé en IPv4 pour la diffusion: Les switchs ne gèrent pas l'IPv6 et MLD, les set-top-box non plus.
- Ajouté _minisapserver_ pour le stream en multicast
- Utilisation d'_iproute2_ plutôt que _ifconfig_
- Ajout du convertisseur de stream _udpxy_
h2. Matériel
Il faut:
* Un PC, relativement puissant, sous Linux. J'ai choisi un AMD Fusion E350, avec 8Go de RAM.
* Autant de tuners TV que de multiplex à diffuser. Sur Cahors, il y a 4 multiplex, j'ai choisi 2 cartes TV double-tuner : Terratec Cinergy T DualRC ( http://www.terratec.net/fr/produkte/Cinergy_T_Stick_Dual_RC_102264.html )
* Un amplificateur TV muni de autant de sorties que de tuners TV, si possible placé au plus près de l'antenne. Un simple dérivateur dégrade le signal, et les cartes TV n'aiment pas.
* Je conseille de faire toute l'installation en connecteurs de type "F" (filetés, comme pour le satellite). J'ai simplement utilisé des convertisseurs au niveau de la prise murale, et des cartes TV. La raison, c'est que ces connecteurs sont moins sujets aux vibrations et aux perturbations transitoires.
* Au niveau réseau , un switch capable de faire de l'IGMP-Snooping (éventuellement) (sinon vous avez le risque d'inonder le réseau).
h2. Driver des cartes TV
Il vous faut arriver à la situation suivante:
<pre>
/dev/dvb/adapter0/demux0
/dvr0
/frontend0
/net0
/adapter1/demux0
/dvr0
/frontend0
/net0
/adapter2/demux0
/dvr0
/frontend0
/net0
/adapter3/demux0
/dvr0
/frontend0
/net0
</pre>
Dans le cas des cartes USB de type Terratec Cinergy T DualRC , le driver est _dvb_usb_af9015_ .
Ce driver nécessite un firmware, et après plusieurs essais, le firmware (http://otit.fi/~crope/v4l-dvb/af9015/af9015_firmware_cutter/firmware_files/ ) qui marche le mieux est le 4.65 , à placer dans /lib/firmware/<kernel-version>/dvb-usb-af9015.fw .
Attention, souvent la distribution *écrase* ce fichier et place une version différente du firmware, ça crée des bugs bizarres.
Dans /etc/modprobe.d/dvb/cof j'ai placé les options suivantes:
<pre>
options dvb_usb_af9015 remote=-1
options dvb_usb disable-rc-polling=1
options usbcore autosuspend=-1
</pre>
Ceci désactive la télécommande (qui ne marche pas sur ces adaptateurs de toute façon) et évite de flooder les logs, mais aussi désactive la suspension USB , qui fait planter la carte et nécessite un redémarrage à froid.
Une fois que ça marche, j'ai ceci dans les logs:
<pre>
[ 14.632591] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in cold state, will try to load a firmware
[ 14.694155] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[ 14.762381] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in warm state.
[ 14.762638] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 14.763897] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 14.827810] af9013: firmware version:4.65.0.0
[ 14.834356] DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)...
[ 14.846115] mxl5007t 1-00c0: creating new instance
[ 14.849933] mxl5007t_get_chip_id: unknown rev (3f)
[ 14.850017] mxl5007t_get_chip_id: MxL5007T detected @ 1-00c0
[ 14.852144] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 14.852906] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 15.501354] af9013: found a 'Afatech AF9013 DVB-T' in warm state.
[ 15.505639] af9013: firmware version:4.65.0.0
[ 15.521986] DVB: registering adapter 1 frontend 0 (Afatech AF9013 DVB-T)...
[ 15.522339] mxl5007t 2-00c0: creating new instance
[ 15.525602] mxl5007t_get_chip_id: unknown rev (3f)
[ 15.525687] mxl5007t_get_chip_id: MxL5007T detected @ 2-00c0
[ 15.528612] dvb-usb: TerraTec Cinergy T Stick Dual RC successfully initialized and connected.
[ 15.974156] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in cold state, will try to load a firmware
[ 15.984388] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[ 16.051462] dvb-usb: found a 'TerraTec Cinergy T Stick Dual RC' in warm state.
[ 16.051719] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 16.052967] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 16.060942] af9013: firmware version:4.65.0.0
[ 16.067817] DVB: registering adapter 2 frontend 0 (Afatech AF9013 DVB-T)...
[ 16.068222] mxl5007t 3-00c0: creating new instance
[ 16.071530] mxl5007t_get_chip_id: unknown rev (3f)
[ 16.071615] mxl5007t_get_chip_id: MxL5007T detected @ 3-00c0
[ 16.073434] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 16.074030] DVB: registering new adapter (TerraTec Cinergy T Stick Dual RC)
[ 16.717317] af9013: found a 'Afatech AF9013 DVB-T' in warm state.
[ 16.721354] af9013: firmware version:4.65.0.0
[ 16.737449] DVB: registering adapter 3 frontend 0 (Afatech AF9013 DVB-T)...
[ 16.737808] mxl5007t 4-00c0: creating new instance
[ 16.741072] mxl5007t_get_chip_id: unknown rev (3f)
[ 16.741157] mxl5007t_get_chip_id: MxL5007T detected @ 4-00c0
[ 16.743857] dvb-usb: TerraTec Cinergy T Stick Dual RC successfully initialized and connected.
</pre>
h2. Software
h3. Chaînes TV
Il vous faudra connaître les chaînes TV qui vous sont accessibles.
Pour cela, l'utilitaire a utiliser est _scan_ :
<pre>scan -a 0 /usr/local/share/dvb/dvb-t/fr-Cahors</pre>
(Bien sur il faut remplacer le fichier par celui de votre zone géographique)
Ceci va vous lister la liste des chaînes sur chaque multiplex.
h3. Mumudvb
J'ai commencé par utiliser mumudvb. Il est plus simple d'utilisation et supporte l'igmp-snooping, mais malheureusement je l'ai trouvé moins stable dans le temps: Une erreur dans le flux TV (ce qui arrive de temps en temps) le fait planter sèchement. J'ai malgré tout inséré les fichiers de configuration que j'ai utilisé en attachement de cet article.
(Attention, ces fichiers ne diffusent pas en multicast - ils sont configurés pour l'unicast)
mumudvb_card0.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=0
autoconf_unicast_start_port=1320
port_http=4242
freq=818
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
mumudvb_card1.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=1
autoconf_unicast_start_port=1310
port_http=4241
freq=786
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
mumudvb_card2.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=2
autoconf_unicast_start_port=1300
port_http=4240
freq=490
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
mumudvb_card3.conf:
<pre>
#------------ TUNING -------------
#The DVB/ATSC card we want to use
card=3
autoconf_unicast_start_port=1330
port_http=4243
freq=698
unicast=1
autoconfiguration=2
dvr_buffer_size=16
multicast_ttl=0
sap=0
</pre>
Le fichier de playlist pour VLC associé _TV.m3u_:
<pre>
#EXTM3U
#EXTINF:-1,France 2
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/1
#EXTINF:-1,France 5
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/2
#EXTINF:-1,France O
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/3
#EXTINF:-1,LCP
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/4
#EXTINF:-1,France 3
#EXTVLCOPT:http-caching=5000
http://tavernier:4240/bynumber/5
#EXTINF:-1,TF1
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/1
#EXTINF:-1,NRJ12
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/2
#EXTINF:-1,TMC
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/3
#EXTINF:-1,ARTE
#EXTVLCOPT:http-caching=5000
http://tavernier:4241/bynumber/4
#EXTINF:-1,M6
#EXTVLCOPT:http-caching=5000
http://tavernier:4242/bynumber/1
#EXTINF:-1,W9
#EXTVLCOPT:http-caching=5000
http://tavernier:4242/bynumber/2
#EXTINF:-1,NT1
#EXTVLCOPT:http-caching=5000
http://tavernier:4242/bynumber/3
#EXTINF:-1,Direct 8
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/1
#EXTINF:-1,BFM TV
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/2
#EXTINF:-1,i>TELE
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/3
#EXTINF:-1,DirectStar
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/4
#EXTINF:-1,Gulli
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/5
#EXTINF:-1,France 4
#EXTVLCOPT:http-caching=5000
http://tavernier:4243/bynumber/6
</pre>
h3. DVBlast
DVBlast est un logiciel écrit par les auteurs de VLC. Il a moins de fonctionnalités que mumudvb et est plus compliqué à configurer.
Néanmoins, il est très stable, surtout face aux erreurs des flux DVB.
Il ne gère pas malheureusement pas l'IGMP, ce qui explique que j'ai utilisé une configuration spéciale:
Pour éviter de flooder le mon réseau, j'ai monté une interface *dummy0* en inscrivant _dummy_ dans _/etc/modules_ .
Ensuite, cette interface est montée et mise en place pour accepter le multicast:
<pre>
ip link set <pre>ifconfig dummy0 multicast on
ip addr add 10.0.0.100 dev dummy0
ip link set dummy0 up
ip route add 225.1.0.0/16 dev dummy0
</pre>
up</pre>
Ainsi le trafic multicast ne sort pas de la machine, ce qui est mon objectif pour le moment.
Pour diffuser en multicast sur le réseau local, enlever cette restriction, il suffit dans les fichiers ci-dessous de commenter les lignes ci-dessus dans retirer la partie _%dummy0_ de chaque ligne: Ceci active le script de démarrage. multicast sur l'interface par défaut.
Voici la configuration que j'ai utilisé. Ces données sont à modifier en fonction de votre émetteur:
<pre>
<IP>[:<port>][/udp] <always on> <SID> [<PID>,]*
</pre>
Ici, l'IPv6 est en format standard, et désigne l'interface de sortie _dummy0_ .
Le flag always_on est mis.
Le SID est celui de la chaine, trouvé via _scan -a 0 /usr/local/share/dvb/dvb-t/fr-Cahors_.
/etc/dvblast/dvblast.0.conf:
<pre>
; France 2
225.1.1.1:2000 [ff12::1%dummy0]:2000 1 257
; France 5
225.1.1.2:2000 [ff12::1%dummy0]:2001 1 260
; France O
225.1.1.3:2000 [ff12::1%dummy0]:2002 1 261
; LCP
225.1.1.4:2000 [ff12::1%dummy0]:2003 1 262
; France 3
225.1.1.5:2000 [ff12::1%dummy0]:2004 1 302
</pre>
/etc/dvblast/dvblast.1.conf:
<pre>
; Direct 8
225.1.4.1:2000 [ff12::1%dummy0]:3000 1 513
; BFM TV
225.1.4.2:2000 [ff12::1%dummy0]:3001 1 515
; i>TELE
225.1.4.3:2000 [ff12::1%dummy0]:3002 1 516
; DirectStar
225.1.4.4:2000 [ff12::1%dummy0]:3003 1 517
; Gulli
225.1.4.5:2000 [ff12::1%dummy0]:3004 1 518
; France 4
225.1.4.6:2000 [ff12::1%dummy0]:3005 1 519
</pre>
/etc/dvblast/dvblast.2.conf:
<pre>
; TF1
225.1.2.1:2000 [ff12::1%dummy0]:4000 1 1537
; NRJ12
225.1.2.2:2000 [ff12::1%dummy0]:4001 1 1538
; TMC
225.1.2.3:2000 [ff12::1%dummy0]:4005 1 1542
; ARTE
225.1.2.4:2000 [ff12::1%dummy0]:4006 1 1543
</pre>
/etc/dvblast/dvblast.3.conf:
<pre>
; M6
225.1.3.1:2000 [ff12::1%dummy0]:5000 1 1025
; W9
225.1.3.2:2000 [ff12::1%dummy0]:5001 1 1026
; NT1
225.1.3.3:2000 [ff12::1%dummy0]:5002 1 1027
</pre>
Voici le fichier de démarrage, situé dans _/etc/init.d/dvblast_ .
C'est là ou sont précisé les fréquences de travail de chaque récepteur.
<pre>
#! /bin/sh
### BEGIN INIT INFO
# Provides: dvblast
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts DVBlast daemons.
# Description: DVBlast is a DVB streamer.
### END INIT INFO
run_dvblast()
{
rm -f /tmp/dvblast.$1.sock
dvblast -e -qq -t0 -r /tmp/dvblast.$1.sock -a $1 -f $2 -c /etc/dvblast/dvblast.$1.conf >/tmp/dvblast.$1.log 2>&1 &
sleep 0.5s
}
. /lib/lsb/init-functions
test -f /usr/bin/dvblast || exit 0
case "$1" in
start)
ifconfig dummy0 multicast up
run_dvblast 0 490167000
run_dvblast 1 698167000
run_dvblast 2 786167000
run_dvblast 3 818167000
;;
stop)
killall dvblast
rm -f /tmp/dvblast.[0-3].sock
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: /etc/init.d/dvblast {start|stop|restart}"
exit 1
esac
exit 0
</pre>
Dans cette configuration, il est possible, plutôt que de créer un Voici le fichier de playlist VLC, d'installer et de faire VLC. Actuellement je fait tourner un serveur SAP.
VLC sur la *même* machine que celle qui diffuse: Il faut installer est donc là aussi nécessaire d'enlever le programme _minisapserver_ , l'activer _%dummy0_ dans _/etc/defaults/minisapserver_,
et faire un fichier de configuration: _/etc/sap.conf_
le cas d'une diffusion réseau.
<pre>
# sap.cfg - Configuration file of the mini SAP server
# Global miniSAPserver options #EXTM3U
[global]
# Number of seconds between announces. 5 is default. Internet announces better use 30.
sap_delay=20
# The network interface on which to stream.
interface=eth1
[program]
type=rtp
name=TF1
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.2.1
port=2000
[program]
type=rtp
name=France #EXTINF:-1,France 2
user=videolan #EXTVLCOPT:http-caching=5000
machine=OB_Network rtp://[ff12::1%dummy0]:2000
site=http://obnet.org
address=225.1.1.1
port=2000
[program]
type=rtp
name=France 3
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.1.5
port=2000
[program]
type=rtp
name=France 4
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.6
port=2000
[program]
type=rtp
name=France #EXTINF:-1,France 5
user=videolan #EXTVLCOPT:http-caching=5000
machine=OB_Network rtp://[ff12::1%dummy0]:2001
site=http://obnet.org
address=225.1.1.2
port=2000
[program]
type=rtp
name=France #EXTINF:-1,France O
user=videolan #EXTVLCOPT:http-caching=5000
machine=OB_Network rtp://[ff12::1%dummy0]:2002
site=http://obnet.org #EXTINF:-1,LCP
address=225.1.1.3 #EXTVLCOPT:http-caching=5000
port=2000
[program] rtp://[ff12::1%dummy0]:2003
type=rtp #EXTINF:-1,France 3
name=Arte #EXTVLCOPT:http-caching=5000
user=videolan rtp://[ff12::1%dummy0]:2004
machine=OB_Network
site=http://obnet.org
address=225.1.2.4
port=2000
[program]
type=rtp
name=M6
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.3.1
port=2000
[program]
type=rtp
name=W9
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.3.2
port=2000
[program]
type=rtp
name=NRJ12
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.2.2
port=2000
[program]
type=rtp
name=TMC
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.2.3
port=2000
[program]
type=rtp
name=Direct 8
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.1
port=2000
[program]
type=rtp
name=NT1
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.3.3
port=2000
[program]
type=rtp
name=DirectStar
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.4
port=2000
[program]
type=rtp
name=LCP
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.1.4
port=2000
[program]
type=rtp
name=BFM TV
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.2
port=2000
[program]
type=rtp
name=i>TELE
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.3
port=2000
[program]
type=rtp
name=Gulli
user=videolan
machine=OB_Network
site=http://obnet.org
address=225.1.4.5
port=2000
</pre>
h2. Streaming HTTP
Comme indiqué en introduction, le streaming direct en multicast présente des inconvénients:
- Flood constant de tous les ports si le switch ne supporte pas correctement l'IGMP-Proxying
- Mise à genoux des points d'accès wifi
J'ai donc modifié la configuration comme suis:
h3. Déroutage du trafic multicast sur une interface dummy
Comme DVBlast ne sais pas envoyer du trafic ailleurs que sur une IP multicast, j'ai crée une interface _dummy0_ en ajoutant le module _dummy_ dans _/etc/modules_.
J'ai ensuite ajouter les lignes suivantes dans la section _start_ du fichier /etc/init.d/dvblast, avant le lancement des instances de dvblast:
<pre>
#### Partie à commenter pour envoyer le flux en multicast sur l'interface par défaut
ip link set dummy0 multicast on
ip addr add 10.0.0.100 dev dummy0
ip link set dummy0 up
ip route add 225.1.0.0/16 dev dummy0
######################################################
</pre>
h3. Installation de udproxy
*udpxy* est un petit programme (à installer depuis les sources http://sourceforge.net/projects/udpxy/ car il n'est pas packagé) qui écoute un flux multicast et le met à disposition via une socket HTTP en écoute sur un serveur. Ainsi les chaines sont streamés "à la demande", en unicast.
Il n'y a pas de fichier de configuration: J'ai simplement ajouté dans la section _start_ de _/etc/init.d/dvblast_ la ligne suivante:
<pre>udpxy -R 10 -B 1Mb -c 50 -m dummy0 -p 4022 -a eth1</pre>
Par contre, l'annonce SAP par _minisapserver_ ne sert plus à rien, il faut créer un fichier de playlist adapté:
<pre>
#EXTM3U
#EXTINF:-1,TF1
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.1:2000
#EXTINF:-1,France 2 rtp://[ff12::1%dummy0]:4000
#EXTVLCOPT:http-caching=5000 #EXTINF:-1,NRJ12
http://192.168.1.100:4022/udp/225.1.1.1:2000
#EXTINF:-1,France 3
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.5:2000
#EXTINF:-1,France 4 rtp://[ff12::1%dummy0]:4001
#EXTVLCOPT:http-caching=5000 #EXTINF:-1,TMC
http://192.168.1.100:4022/udp/225.1.4.6:2000
#EXTINF:-1,France 5
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.2:2000
#EXTINF:-1,France O rtp://[ff12::1%dummy0]:4005
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.3:2000
#EXTINF:-1,ARTE
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.4:2000
rtp://[ff12::1%dummy0]:4006
#EXTINF:-1,M6
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.3.1:5000
rtp://[ff12::1%dummy0]:5000
#EXTINF:-1,W9
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.3.2:2000
#EXTINF:-1,NRJ12 rtp://[ff12::1%dummy0]:5001
#EXTINF:-1,NT1
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.2:2000
#EXTINF:-1,TMC rtp://[ff12::1%dummy0]:5002
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.2.3:2000
#EXTINF:-1,Direct 8
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.1:2000
#EXTINF:-1,NT1 rtp://[ff12::1%dummy0]:3000
#EXTINF:-1,BFM TV
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.3.3:2000
#EXTINF:-1,DirectStar rtp://[ff12::1%dummy0]:3001
#EXTINF:-1,i>TELE
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.4:2000
#EXTINF:-1,LCP rtp://[ff12::1%dummy0]:3002
#EXTINF:-1,DirectStar
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.1.4:2000
#EXTINF:-1,BFM TV rtp://[ff12::1%dummy0]:3003
#EXTINF:-1,Gulli
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.2:2000
#EXTINF:-1,i>TELE rtp://[ff12::1%dummy0]:3004
#EXTVLCOPT:http-caching=5000 #EXTINF:-1,France 4
http://192.168.1.100:4022/udp/225.1.4.3:2000
#EXTINF:-1,Gulli
#EXTVLCOPT:http-caching=5000
http://192.168.1.100:4022/udp/225.1.4.5:2000 rtp://[ff12::1%dummy0]:3005
</pre>
Les chaînes en HD ne sont pas diffusées.
La bande passante utilisés est de environ 10Mbps lorsque toute les chaînes sont actives.
h2. Conclusion
Cette configuration est très stable et fonctionne depuis plus d'une semaine sans plantage, ce qui n'était pas le cas de mumudvb.
J'y vois 2 principaux problèmes:
* Manque de souplesse, en particulier sur les fréquences des émetteurs, et sur les chaînes à diffuser (Parfois les SID changent)
changent).
* A l'heure actuelle l'envoi multicast est inconditionnel: inconditionnel. Au niveau du switch, il faudrait trouver un moyen de faire une sorte d'IGMP-Snooping en IPv6 (je crois que ça s'appelle *MLD*). Mais comment faire comprendre ça au switch ? Est-ce que ça se gère au niveau du PC d'envoi ? Le but est d'éviter de flooder tous les ports avec toutes les chaines systématiquement. (A travailler - Mon switch Netgear GS716T ne gère pas le MLD. A tenter avec le BDCOM S2548GX ? )
*update* : Il semble que pour qu'un système envoie, en IPv4, une annonce IGMP pour les groupes multicast concernés, il est indispensable que le programme emmeteur ajoute, dans le corp du programme, une socket en écoute et fasse un appel IOCTL à IP_ADD_MEMBERSHIP. _mumudvb_ effectue cette opération, mais pas _dvblast_.
Ceci pourrait résoudre le problème du groupage multicast avec dvblast.
Néanmoins, sur le switch Netgear GS716T le problème reste que en cas d'activation de l'option "Unknow Multicast frame filtering", les trames d'annonces IPv6 sont filtrées avec, sans possibilité de les insérer dans une liste blanche: Une investigation plus poussée semble nécessaire.