La diffusion se fait sur canard.ferme.crans.org, lapin.ferme.crans.org, oie.ferme.crans.org des 2.6Ghz
mouton.ferme.crans.org un PII sert pour les vignettes. (qu'on pourrait remplacer par un PC prété par le BDE ??? non ???)
Pour la diffusion sat et TNT, le logiciel utilisé est ./MumuDvb
Pour le satellite, le CR@NS a développé sa propre solution de diffusion, qui est aussi utilisée pour la TNT. (voir plus bas).
Merci de ne pas utiliser nos adresses multicast si vous essayez les lignes suivantes (genre, restez en dehors de 239.0.0.0/4). N'est-ce pas Olive ? N'est-ce pas Morgan ? Bon, on arrête de jouer avec nos IP, sinon, on va commencer à déconnecter. Mieux, le multicast, c'est compliqué, il y a un fort risque de broadcast sous des conditions normales. Donc si vous vous mettez à multicaster et que ça nous cause des problèmes, ça nous met de mauvaise humeur. Bref, dans le doute, abstenez-vous de faire pareil plus de 10 secondes.
- Informations générales
- Configurer
- Les annonces SAP
- La génération des vignettes
- Le DNS de mouton
- Installer la télé
- Diffuser autre chose que des flux télé
- Câbler
- Documentations videolan
Informations générales
Les différentes diffusions
Diffusion de la TNT
La télévision numérique terrestre permet d'avoir 18 chaînes gratuites (dont les 6 chaînes nationales) en qualité numérique, et ce, avec une antenne normale. Une carte TNT peut recevoir tout un multiplex, la liste des multiplex est disponible ici
La TNT est diffusée par le Cr@ns.
Diffusion des chaînes du satellite
Un signal satellite permet la réception pour une même configuration d'une carte de recevoir un transpondeur complet. Un transpondeur contient un certains nombres de chaînes TV ou radios. On trouve ainsi des transpondeurs avec 10 chaînes de télévision ou plusieurs radios.
Le signal reçu peut être de plusieurs natures dans ce cas et pas seulement analogique. On peut donc recevoir des signaux numériques de meilleure qualité.
Dans le cas du CRANS, on dispose de cartes satellites qui sont capables de recevoir un signal numérique de type MPEG2 qui est ensuite diffusé sur le réseau sans être réencodé.
Diffusion des chaînes hertziennes
La télévision hertzienne est diffusée à raison d'une chaîne par fréquence. Donc pour capter plusieurs chaînes simultanément il faut être capable de recevoir plusieurs fréquences simultanément.
Une carte TV pour PC ne peut être réglée que sur une seule fréquence à la fois donc elle n'est capable que de recevoir un signal analogique d'une fréquence à la fois.
Le CRANS a investi dans deux cartes TV qui sont désormais inutilisées au profit de la TNT.
Le MPEG2-TS
C'est le principal protocole utilisé pour la diffusion de la télé numérique via la TNT (DVB-T), par satellite (DVB-S) et par cable (DVB-C).
Pour plus d'informations on peut se référer à : http://en.wikipedia.org/wiki/Transport_stream
Le multicast
Le multicast permet de diffuser les flux uniquement au personnes qui les demandent en les éméttant qu'une seule fois. C'est les switchs qui se chargent de propager et dupliquer les paquets.
http://en.wikipedia.org/wiki/Multicast http://fr.wikipedia.org/wiki/Multicast
Cela nous permet de ne pas surcharger le réseau, les switchs HP savent gérer le multicast et peuvent l'interdire sur certaines prises (si on veut punir de télé quelqu'un
La solution retenue
Au final la solution peut se résumer de la manière suivante :
Mumudvb réceptionne les flux et les découpe pour les envoyer sur différentes adresses de Multicast. Ensuite les switchs se chargent, lorsque quelqu'un demande une chaine de la propager.
A coté de ca des scripts surveillent mumudvb et génèrent sa configuration.
Présentation de mumudvb
mumudvb est à l'origine une modification de dvbstream.
Mumudvb a été écrit pour diffuser plusieurs chaînes provenant du même transpondeur sur des IPs différentes sans jeter des paquets du flux (donc moins de charge processeur).
Actuellement la diffusion de douze chaînes prend environ 15% du processeur sur la machine canard (Celeron 2.6Ghz) ce qui est tout à fait correct.
mumudvb est disponible sur la page ./MumuDvb ou sur le site officiel de mumudvb.
Il nécessite un fichier de configuration dont la syntaxe est documentée. Pour la configuration se référer à /ConfigurationMumuDvb ou au readme (en particulier pour les versions récentes) .
Pour accéder au flux il suffit d'un client compatible udp comme xine, vlc, mplayer ou des set top boxes (amino par exemple) cf TvReseau/AvoirLaTv
Un script est écrit pour générer automatiquement les fichiers de conf et redémarrer mumudvb en cas de probleme.
De plus mumudvb écrit en temps réel la liste des chaines qu'il diffuse et génère les annonces SAP (cf la section associée sur cette page).
La liste des chaines diffusés est disponible sur http://television.crans.org/
Configurer
La base
Pour configurer mumudvb seul on se réfère tout d'abord a la page /ConfigurationMumuDvb
Les scripts crans
Nous avons écrit des scripts pour assouplir et automatiser le lancement des cartes sat.
Les scripts concernant la télé sont situé dans /usr/scripts/tv
Deux scripts sont importants pour nous : sat_base.py et sat_conf.py
Sat_base.py
Apres le premier bloc de lignes d'initialisation, ce script contient la liste des transpondeurs de la forme suivante :
Pour la TNT :
class TNT_R2_474000(TNT_base) :
chaines = {
'1280' : 'fra TNT08 Direct 8',
'1281' : 'fra TNT10 TMC',
'1282' : 'fra TNT15 BFM TV',
'1283' : 'fra TNT16 i tele',
'1284' : 'fra TNT17 europe2 TV',
'1285' : 'fra TNT18 Gulli'}
Pour le SAT :
class Hotbird_12597(carte) :
pol='v'
srate=27500
chaines = {
'1024' : 'rus sport planeta',
'1027' : 'eng BBC World',
'1031' : 'rus ORT International',
'1034' : 'fra autres Euronews',
'2221 2232 1034 768' : 'eng Euronews',
'1025' : 'fra KTO' }
L'idée est la suivante : pour chaque transpondeur, on va créer une classe qui hérite de la classe carte (pour la TNT, la classe TNT_base est héritée de la classe carte et contient les paramètres de réception). Le nom de la classe doit se terminer par la fréquence du transpondeur.
La classe contiendra les paramètres de réception et la liste des chaines. La liste des chaines est un dictionnaire qui contient les différents PID (se référer a la configuration de mumudvb pour plus de détails) et le nom de la chaine commençant par la langue (qui servira a créer les groupes de chaines).
Sat_conf.py
Ce fichier est relativement simple. Il permet de signaler quelle transpondeur doit etre lancé sur quelle carte de quel serveur
Il permet aussi de savoir quelles chaines sont présentes sur quel serveur pour cela il suffit de l'exécuter avec comme argument le nom du serveur (si il n'y a pas d'argument c'est le serveur courant qui est utilisé)
Les autres scripts
- launch_sat.py : Il permet de lancer la télé, pour avoir de l'aide il suffit de le lancer sans arguments
Mettre a jour
Désormais mumudvb trouve les pids audio, vidéo, télétexte et sous titre à partir du pid PMT (program map table) qui change rarement. Lorsqu'une chaine n'a plus de son par exemple il suffit de killer mumu sur la carte et le relancer pour qu'au lancement les pids soient retrouvés.
Je vais ici décrire comment obtenir le pid PMT
Une première possibilité est de surveiller le site : http://fr.kingofsat.net/freqs.php?pos=13.0E (ne marche pas pour la TNT).
La deuxième solution, celle que je vais décrire ici, consiste a regarder quels pids sont diffusés pour quelles chaines et comparer avec notre configuration.
La procédure est la suivante :
- Pour chaque carte de chaque serveur, on regarde quel transpondeur est diffusé ;
On utilise la commande scan -c -x 0 -a numéro_carte ;
- On n'a plus qu'a regarder les nouveautés et mettre les bon pids.
Exemple : Trouver le pid PMT de telesud
On commence par se logguer dans la ferme (n'importe quelle machine). Puis, un coup de python /usr/scripts/tv/sat_conf.py nom_machine avec nom_machine in [canard, lapin, oie].
python /usr/scripts/tv/sat_conf.py canard nous renvoie (entre autres) :
<sat_base.Hotbird_12577 instance at 0xb7d7d48c>
fra telesud
ned liberty TV
x-ero sexysat 4
x-ero Full X 4 free
fra liberty TV
On a trouvé telesud, diffusée par canard avec le transpondeur Hotbird_12577.
On va donc sur canard et on lance scan -a 4 -c . (on a choisi 4 apres le -a car c'etait la cinquième carte)
Ca nous renvoie (entre autre) : TELESUD (0x1fa8) 01: PCR == V V 0x04b4 A 0x0086.
Ce qui correspond à :
- Le PMT 0x1fa8
On a plus qu'à aller dans le fichier /usr/scripts/tv/sat_base.py, à la section Hotbird_12577.
On finit par un coup de sudo /usr/scripts/tv/launch_sat.py restart 4 pour relancer le tout et le tour est joué !
Les annonces SAP
Les annonces SAP permettent aux clients d'avoir de manière dynamique une liste des chaines diffusées et avoir des noms à la place d'ips de multicast (il y a aussi un DNS sur mouton qui fait ça dans un autre esprit, on en parlera après)
Le protocole SAP est décrit ici : http://en.wikipedia.org/wiki/Session_Announcement_Protocol
L'idée est la suivante : le serveur envoie des paquets qui contiennent le nom de la chaine et les informations pour la recevoir sur une adresse de multicast a des intervalles de temps régulier. Le client n'a plus qu'a s'inscrire sur cette adresse pour recevoir les annonces.
Au crans mumudvb génère et envoie les annonces SAP
En résumé ce système nous permet d'annoncer les chaines de manière automatisée et en éliminant automatiquement les chaines mortes.
Mouton, munin et le sap
Pour pouvoir générer les graphes d'audimat et les vignettes, il est nécessaire d'avoir une liste des chaines mise a jour automatiquement. Le sap remplissant formidablement bien cette tache, il a été décidé de récupérer les annonces. Mouton se charge de cela régulièrement et met les annonces ici : http://tv.crans.org/sap.txt
La génération des vignettes
Elle est faite par mouton, ceci n'est pas extrêmement fiable, si quelqu'un veux bien se pencher sur le problème, il est le bienvenu.
Le DNS de mouton
Mouton sert la zone tv.crans.org ce qui permet d'avoir des chaines du genre w9.tv.crans.org
Installer la télé
Installation de la carte sat
On utilise des Pinnacle PC TV Sat ou des Hauppauge Nova-S qui sont des cartes sats ne disposant pas de décodeur MPEG 2.
On a une parabole avec une tête monobloc pouvant recevoir Astra ou Hotbird.
Pour utiliser la carte, on doit charger les modules suivants pour les Pinnacle :
bttv dvb_bt8xx cx24110
Et ceux-ci pour les Nova-S :
budget-ci stv0299
L'autodétection doit fonctionner. Pour tester la carte, on peut installer le paquet dvb-utils qui contient l'utilitaire scan. A partir d'une fréquence de départ, il va essayer trouver toute les chaînes d'un sat et générer un fichier de chaînes utilisable par d'autres utilitaires dont vls (dpkg -L dvb-scan | grep -i astra | grep scan pour trouver le fichier pour Astra 19.2). Avec une tête double, il faut trouver à la main le bon DiSEqC que l'on spécifie avec le paramètre -s.
Une fois que cela fonctionne, on sauve le fichier généré quelque part et on peut tester la carte avec l'utilitaire szap également fourni. On lui file le fichier que l'on a généré et une chaîne (comme VIVA PLUS). Au bout de quelques secondes, on doit obtenir des lignes avec FE_HAS_LOCK. Le signal doit être au-dessus de 8000, le rapport signal/bruit aussi (même si en pratique, ce n'est pas la peine). Notons toutefois que avec les Pinnacle, la mesure n'est pas fiable. En laissant tourner szap avec le paramètre -r, on peut ensuite récupérer le flug MPEG2-TS dans /dev/dvb/adapter0/dvr0. Par exemple :
mplayer -vo aa -ao null - < /dev/dvb/adapter0/dvr0
Ou encore :
cat /dev/dvb/adapter0/dvr0 | nc portable 2345
puis sur le portable :
nc -l -p 2345 | mplayer -
Cela fonctionne aussi bien avec la télé qu'avec les radios.
On peut aussi utiliser dvbtune qui est plus simple d'utilisation que scan lorsqu'on connait la fréquence.
Ex : dvbtune -f 12692 -p H -s 27500 -m
Using DVB card "ST STV0299 DVB-S" tuning DVB-S to L-Band:0, Pol:H Srate=27500000, 22kHz=off ERROR setting tone : Invalid argument polling.... Getting frontend event FE_STATUS: polling.... Getting frontend event FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC Bit error rate: 21504 Signal strength: 44156 SNR: 55251 FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC Signal=44161, Verror=0, SNR=55254dB, BlockErrors=0, (S|L|C|V|SY|) Signal=44140, Verror=0, SNR=55194dB, BlockErrors=0, (S|L|C|V|SY|)
La carte reste accordée tant que l'on a pas quitté dvbtune
Installer la carte TNT
La nouvelle hauppauge fonctionne bien sous linux à partir du noyau version 2.6.12-rc4 Les modules utilises sont
i2c-core cx88 cx88-dvb cx22702
Ces modules sont chargés automatiquement par Hotplug
Pour la carte TNT USB on peut regarder ici Les modules a charger sont :
i2c-core dib3000-common dib3000mc dib3000mb mt352 dvb-dibusb
Le firmware est disponible ici : dvb-dibusb-avertv-usb2-1.fw Elle marche bien avec un linux 2.6.12-rc4 (elle fonctionnera encore mieux avec les suivants une refonte du pilote est en cours)
Pour la carte avermedia le chipset utilisé est Fusion 878A.
Les modules sont :
dvb-core bttv bt878 dvb-bt8xx mt352
Elle marche nickel. Mais nécessite des paramètres au boot du noyau sur les HP qui sont les suivants : noapci acpi=noirq pci=usepirqmask
Pour la carte Hauppauge bi-tuner on peut regarder ici : http://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-NOVA-T-500 et là : http://www.linuxtv.org/wiki/index.php/DVB-T_USB_Devices#DiB0700_USB2.0_DVB-T_devices
En fait c'est un contrôleur usb avec deux cartes usb derrière. Il pose quelques problèmes au niveau des interruptions, il faut ajouter au noyau les paramètres suivants : noacpi acpi=off pci=irqroute pci=noacpi noapic irqpoll cf http://ubuntuforums.org/showthread.php?t=81153&highlight=noapic+usb
Les modules sont chargés automatiquement par hotplug
Pour avoir une sensibilité correcte il faut modifier /etc/modprobe.d/options et mettre options dvb-usb-dib0700 force_lna_activation=1
Aperrement il faut un noyau very récent pour qu'elle marche bien (2.6.22 mini)
Diffuser autre chose que des flux télé
Diffuser des VOB
Si l'on veut diffuser des VOB (MPEG 2 issus de DVD), on peut faire :
vlc -v Install-00*.vob --sout '#standard{access=udp,url=239.254.xx.xx,sap,name="Nom chaîne"}' --ttl 4 --loop
Des DivX
A priori, c'est possible, il y a un transcodeur dans VLC pour transformer ça en MPEG2. Par exemple :
vlc -v machin.avi \
--sout '#transcode{acodec=mpga,vcodec=mp2v}:standard{access=udp,url=239.254.xx.xx,sap,name="Test DivX"}' \
--ttl 4 --loop
Mais ça charge pas mal la machine...
Câbler
Le sat
On a une tête quad, c'est à dire :
- une tête avec 4 sorties
- chaque sortie correspond à un couple polarisation, bande de fréquence
On a donc 4 fils qui arrivent dans le local.
On utilise un Multiswitch pour répartir le signal.
Un multiswitch, c'est un truc qui va prendre les 4 fils (+ 1 pour la TNT) en entrée et qui a un certain nombre de sortie (16 pour le notre). Si la sortie 3 demande tel satellite, telle fréquence et telle polarisation, le multiswitch branchera la sortie sur la bonne entrée. Le multiswitch se révèle indispensable pour avoir un signal correctement amplifié et ne pas avoir à ce soucier de cabler quelle tête sur quelle carte.
Les splitters perdent beaucoup trop de signal pour être utilisables (-3dB par splitter).
Le hertzien et la TNT
- On utilise le multiswitch comme pour le sattellite. Le modèle acheté supportant les fréquences de la télévision terrestre. La connectique est juste un peu différente.








