• 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.

  1. Informations générales
    1. Les différentes diffusions
      1. Diffusion de la TNT
      2. Diffusion des chaînes du satellite
      3. Diffusion des chaînes hertziennes
    2. Le MPEG2-TS
    3. Le multicast
    4. La solution retenue
    5. Présentation de mumudvb
  2. Configurer
    1. La base
    2. Les scripts crans
      1. Sat_base.py
      2. Sat_conf.py
      3. Les autres scripts
    3. Mettre a jour
      1. Exemple : Trouver le pid PMT de telesud
  3. Les annonces SAP
    1. Mouton, munin et le sap
  4. La génération des vignettes
  5. Le DNS de mouton
  6. Installer la télé
    1. Installation de la carte sat
    2. Installer la carte TNT
  7. Diffuser autre chose que des flux télé
    1. Diffuser des VOB
    2. Des DivX
  8. Câbler
    1. Le sat
    2. Le hertzien et la TNT
  9. 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.

Documentations videolan


CatégoriePagePublique