VideoLAN Streaming Howto

Transcription

VideoLAN Streaming Howto
VideoLAN Streaming Howto
Alexis de Lattre
Johan Bilien
Anil Daoud
Clément Sténac
Antoine Cellerier
VideoLAN Streaming Howto
by Alexis de Lattre, Johan Bilien, Anil Daoud, Clément Sténac, and Antoine Cellerier
Copyright © 2002-2004 Projet VideoLAN
Ce document explique comment diffuser, transcoder et sauver des flux en utilisant la solution VideoLAN
Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la licence GNU General Public License, telle qu’elle est publiée par la
Free Software Foundation; soit dans la version 2 de la licence, ou (si vous le souhaitez) toute version ultérieure. Le texte complet de la licence peut Ãa tre trouvé (en
anglais) en appendice. nGNU General Public License.
Table of Contents
1. Diffusions, muxeurs et codecs............................................................................................................................................1
Introduction .....................................................................................................................................................................1
Muxers et codecs.............................................................................................................................................................3
2. Diffusion facile ....................................................................................................................................................................5
Intro .................................................................................................................................................................................5
Diffuser en utilisant l’Assistant.......................................................................................................................................5
Diffusion en mode graphique........................................................................................................................................13
3. Utilisation avancée du flux de sortie en ligne de commande.....................................................................................20
Structure du flux de sortie .............................................................................................................................................20
Description des modules ...............................................................................................................................................20
Exemples .......................................................................................................................................................................32
4. Exemples d’utilisation avancée de diffusion avec VLC (transcodage, diffusion multiple, etc...) ..........................33
Transcodage ..................................................................................................................................................................33
Diffusion multiple .........................................................................................................................................................33
Transcodage et diffusion multiple.................................................................................................................................33
Diffusion HTTP ............................................................................................................................................................34
Diffusion RTP ...............................................................................................................................................................34
RTSP .............................................................................................................................................................................35
diffusion MMS / MMSH vers Windows Media Player.................................................................................................35
Utiliser le module es .....................................................................................................................................................35
5. VLM - Diffusions multiples et Vidéo à la demande .................................................................................................36
VLM..............................................................................................................................................................................36
Exemples .......................................................................................................................................................................39
6. Recevoir et enregistrer un flux.........................................................................................................................................41
Recevoir un flux avec VLC ...........................................................................................................................................41
Enregistrer un flux avec VLC........................................................................................................................................41
Recevoir un flux avec une set-top-box ..........................................................................................................................42
7. Diffuser un fichier .............................................................................................................................................................43
Diffuser un fichier avec VLC ........................................................................................................................................43
8. Diffuser un DVD ...............................................................................................................................................................44
Diffuser un DVD avec VLC..........................................................................................................................................44
9. Diffuser une chaine DVB (Satellite ou TNT)..................................................................................................................45
Installer les drivers DVB ...............................................................................................................................................45
Diffuser avec VLC ........................................................................................................................................................45
Diffuser avec VLC ........................................................................................................................................................45
10. Diffuser depuis une carte d’encodage ou d’autres périphériques d’acquisition ..............................................47
Cartes d’encodage matériel.......................................................................................................................................47
Cartes et encodage logiciel ...........................................................................................................................................48
Diffuser avec Directshow ..............................................................................................................................................50
11. Diffusion sur IPv6 ...........................................................................................................................................................52
Diffusion sur IPv6 .........................................................................................................................................................52
A. GNU General Public License ..........................................................................................................................................55
Preamble........................................................................................................................................................................55
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION .....................................55
How to Apply These Terms to Your New Programs.....................................................................................................59
iii
Chapter 1. Diffusions, muxeurs et codecs
Introduction
Apperçu
VideoLAN est une solution complète pour la lecture et la diffusion de vidéo par réseau, développée par des
étudiants de l’Ecole Centrale Paris (http://www.ecp.fr) et des développeurs du monde entier, sous licence GNU
General Public License (http://www.gnu.org/copyleft/gpl.html) (GPL). VideoLAN est concu pour diffuser des vidéos
MPEG sur des réseaux haut débit.
La solution de diffusion VideoLAN comprend :
•
VLS (VideoLAN Server), qui peut diffuser des fichiers MPEG-1, MPEG-2 et MPEG-4, des DVDs, des chaines
numériques satellite, des chaines de télévision numérique terrestre et des flux vidéos réseau en unicast ou
multicast.
•
VLC (à l’origine dénomé VideoLAN Client), qui peut Ãa tre utilisé comme un serveur pour diffuser des fichiers
MPEG-1, MPEG-é et MPEG-4, des DVDs et des flux vidéo réseau en unicast ou multicast ; ou comme un client
pour recevoir, décoder et afficher des flux MPEG sous de nombreux systèmes d’exploitation.
Voici une illustration de la solution de diffusion VideoLAN :
1
Chapter 1. Diffusions, muxeurs et codecs
Solution de diffusion VideoLAN
Pour plus de détails sur le projet, veuillez consulter le site web de VideoLAN (http://www.videolan.org).
Logiciels VideoLAN
VLC media player
VLC tourne sur de nombreux systèmes d’exploitation : Linux, Windows, Mac OS X, BeOS, *BSD, Solaris, Familiar
Linux, Yopy/Linupy et QNX. Il peut lire :
•
des fichiers MPEG-1, MPEG-2 et MPEG-4 / DivX depuis un disque dur, un lecteur de CD-ROM, ...
2
Chapter 1. Diffusions, muxeurs et codecs
•
des DVDs et VCDs
•
depuis des cartes d’acquisition satellite (DVB-S)
•
des flux MPEG-1, MPEG-2 et MPEG-4 reçu par le réseau et diffusés par des VLC ou le stream output de VLC
VLC peut aussi Ãa tre utilisé en temps que serveur pour diffuser :
•
des fichiers MPEG-1, MPEG-2 et MPEG-4 / DivX
•
des DVDs
•
depuis une carte d’encodage MPEG
vers :
•
une machine (c’est a dire une addresse IP) : ceci est appelé unicast
•
un groupe dynamique de machines que les clients peuvent joindre ou quitter (par exemple une adresse IP multicast) :
ceci est appelé multicast
en IPv4 ou IPv6
Pour obtenir une liste complète des fonctionalités de VLC sur les différentes plateformes supportées, allez voir la
VLC features page (http://www.videolan.org/vlc/features.html).
Note: VLC ne fonctionne pas sous Mac OS 9.
Mini-SAP-server
You can add a channel information service based on the SAP/SDP standard to the VideoLAN solution. The
mini-SAP-server sends announces about the multicast programs on the network in IPv4 or IPv6, and VLCs receive these
annouces and automatically add the programs announced to their playlist.
The mini-SAP-server works under Linux and Mac OS X.
Muxers et codecs
Qu’est-ce qu’un codec ?
Pour bien comprendre la solution VideoLAN, vous devez comprendre la différence entre un codec et un conteneur
Un codec est un algorithme de compression utilisé pour réduire la taille d’un flux. Il y a des codecs audio et des
codecs video. MPEG-1, MPEG-2, MPEG-4, Vorbis, DivX, etc. sont des codecs.
Qu’est-ce qu’un conteneur ? (ou muxeur)
Pour commencer, considérez un conteneur comme l’emballage d’un colis. Vous recevez un colis par la poste et vous
pensez "Chouette ! qu’est-ce qu’il y a à l’interieur ?" Vous ne vous souciez pas vraiment de la boite elle mÃa me, vous
vous interessez plutot à son contenu. Le problème ? Vous ne pouvez pas voir à l’interieur de la boite. Que faites vous
donc ? Vous prenez une paire de ciseaux et vous l’ouvrez.
3
Chapter 1. Diffusions, muxeurs et codecs
Un conteneur se base sur cette idée. Il contient une ou plusieurs flux déjà encodés à l’aide de codecs.
Généralement, il y a un flux vidéo et un flux audio. AVI, Ogg, MOV, ASF, MP4 etc sont des conteneurs. Les flux
contenus peuvent Ãa tre encodés à l’aide de codecs différents. Dans un monde parfait, vous pourriez mettre
n’importe quel codec dans n’importe quel conteneur. Malheureusement il y a quelques incompatibilités. Vous pouvez
trouver une matrice des différents codecs et conteneurs possible sur la features page
(http://www.videolan.org/streaming/features.html).
Encoder une vidéo
C’est la première étape lorsque vous créez votre colis.
Vous devez tout d’abbord encoder votre fichier. Ceci veut dire qu’un fichier, que ce soit de l’audio ou de la vidéo, est
compressé sous un autre format qui prend moins de place que le format précédent. Mes codecs généralement
utilisés pour la vidéo sont DivX, MPEG-1, MPEG-2 et MPEG-4. Pour l’audio, il s’aggit de MP3 ou Vorbis.
Vous devez ensuite mutilplexer. En gros, il s’aggit de prendre les flux séparés et de les grouper dans un seul fichier.
Lire une vidéo
Maintenant que vous avez un colis, vous allez devoir l’ouvrir avant de pouvoir accéder à son contenu. C’est exactement
ce que VLC va faire. Pour décoder un flux, VLC va tout d’abbord le démuxer. Il lit donc le conteneur et sépare
l’audio, la vidéo et les sous-titres, s’ils existent. Démuxer des fichiers ne baisse pas la qualité de la vidéo ou de
l’audio. Ca ne change pas du tout ces flux de données. Ca ne fait que les sauvegarder dans des fichiersdifférents,
chacun contenant un élément du fichier original. Ensuite, chacun de ces flux sont passés à des décodeurs qui
font les calculs mathématiques permettant de décompresser le flux.
Il y a une particulatrité concernant MPEG :
•
MPEG est un codec. Il y a plusieurs versions de ce codec appelées MPEG-1, MPEG-2, MPEG-4 ...
•
MPEG est aussi un conteneur, parfois appelé MPEG System. Il y a plusieurs types de conteneurs MPEG : ES, PS et
TS.
Par exemple, quand vous lisez une vidéo MPEG sur un DVD, les flux MPEG sont en fait composés de plusieurs
flux (appelés flux élémentaires, ES) : il y a un flux pour la vidéo, un pour l’audio, un autre pour les soustitres
et ainsi de suite. Ces différents flux sont mélangés dans un seul Program Stream (PS). Ainsi, les fichiers .VOB
que vous pouvez trouver sur un DVD sont en fait des fichiers MPEG-PS. Cependant, ce format PS n’est pas adapté
à la diffusion de vidéo sur un réseau ou par satellite. Un autre format, appelé Transport Stream (TS) a donc
été conçu pour diffuser du MPEG sur de tels dispositifs.
4
Chapter 2. Diffusion facile
Intro
Le plus facile pour commencer à diffuser avec VLC consiste à utiliser l’une des interfaces graphiques utilisateur :
wxwindows pour Windows et GNU/Linux, l’interface skinnable Windows et GNU/Linux ou l’interface native MacOS X.
Diffuser en utilisant l’Assistant
L’Assistant de Diffusion/Tanscodage vous guide pas par pas pour diffuser votre média sur un réseau ou le sauvegarder
sur votre disque dur. Cet Assistant fournit des menus simples à utiliser, mais les choix d’options sont restreints.
Note: L’assistant est seulement disponible depuis l’interface wxWindows.
Démarrer l’assistant
Pour démarrer l’Assistant de diffusion/transcodage, ouvrez le menu "Fichier", et sélectionnez Assistant dans le menu.
Démarrer l’assistant
Champs à remplir dans l’assistant
Pour commencer, sélectionnez le type de tâche :
•
Diffuser vers un réseau : Choisissez cette option si vous voulez diffuser un média sur un réseau.
•
Transcoder/Sauvegarder : Choisissez cette option si vous souhaitez changer le codec d’un fichier audio et/ou vidéo,
son échantillonage et/ou sa méthode d’encapsulation.
5
Chapter 2. Diffusion facile
Le boîte de dialogue de l’Assistant
Sélection de l’entrée
Choisissez un flux (tel qu’un fichier, un flux réseau, un disque, un périphérique de capture, ...) avec le bouton
Choisir, ou un élément existant de votre liste de lecture, en avec l’option Elément de la liste.
Extraction partielle : Pour lire uniquement une partie du flux, cochez "Activer" et choisissez un début et une fin (en
secondes). Cette option ne doit Ãa tre utilisée que dans le cas de flux que vous pouvez contrôler, comme des fichiers,
des disques, mais pas des flux réseaux ou des périphériques de capture.
6
Chapter 2. Diffusion facile
Sélection de l’entrée par l’Assistant
7
Chapter 2. Diffusion facile
Sélection de l’entrée depuis la liste de lecture par l’Assistant
Méthodes de diffusion
Si vous avez choisi l’option Diffuser vers un réseau, vous pouvez maintenant spécifier la méthode de diffusion. Les
méthodes de diffusion sont :
•
UDP Unicast : Diffuser vers un unique ordinateur. Entrez l’adresse IP du client (dans la plage 0.0.0.0 223.255.255.255).
•
UDP Multicast : Diffuser un flux vers plusieurs utilisateurs en utilisant le multicast. Entrez l’adresse IP du groupe
multicast (dans la plage 224.0.0.0 - 239.255.255.255).
8
Chapter 2. Diffusion facile
•
HTTP : Diffuser en utilisant le protocole HTTP. Si vous laissez le champ Destination vide, VLC va attendre les
connextions sur toutes les interfaces réseaux du serveur sur le port 8080. Spécifiez une adresse, un port et un
chemin pour les connexions en utilisant la syntaxe suivante [ip][:port][/path].
Par exemple, 192.168.0.1:80/stream va faire écouter VLC sur l’interface portant l’adresse IP 192.168.0.1, sur le port
TCP 80, dans le fichier virtuel /stream.
Méthode de diffusion par l’Assistant
Options de transcodage
Si vous avez choisi l’option Transcoder/Sauvegarder, vous pouvez spécifier les nouveaux codecs audio et vidéo, et
l’échantillonnage vers lesquels vous souhaitez convertir votre entrée.
9
Chapter 2. Diffusion facile
(Voir Diffusions, muxeurs et codecs)
Transcoder avec l’Assistant
Méthode d’encapsulation
Choisissez le format de méthode. La diffusion UDP requière une encapsulation MPEG TS. La diffusion par HTTP
peut-Ãa tre utilisée avec les encapsulations MPEG PS, MPEG TS, MPEG 1, OGG, RAW ou ASF. Sauvegarder un fichier
peut Ãa tre fait en utilisant n’importe quelle format d’encapsulation compatible avec les codecs choisis.
(Voir Diffusions, muxeurs et codecs)
10
Chapter 2. Diffusion facile
Méthode d’encapsulation par l’Assistant
Options de diffusion
Si vous avez choisi de Diffuser vers un réseau, vous pouvez maintenant spécifier plusieurs options.
•
Time To Live (TTL) Ceci définit le nombre de routeurs que votre flux peut traverser avant d’Ãa tre supprimé, pour
l’unicast UDP et les méthodes d’accès unicast. Si vous ne savez pas ce que cela signifie, vous devriez laisser la
valeur par défaut.
Note: Pour le multicast UDP, la valeur par défaut du TTL est 1, ce qui signifie que votre flux n’ira pas au-delà du
premier routeur. Vous voudrez certainement augmenter ce nombre si vous souhaitez que votre flux multicast soit
11
Chapter 2. Diffusion facile
routé.
•
Annonce SAP Pour annoncer votre flux sur le réseau quand vous utilisez une méthode de diffusion UDP, en utilisant
le protocole SAP, entrez le nom du flux dans le champ de texte et cochez la case correspondante. Ceci N’EST PAS
disponible pour la méthode de diffusion HTTP.
options de l’assistant de diffusion
12
Chapter 2. Diffusion facile
destination du fichier d’enregistrement
si vous avez choisi Tanscoder/Sauvegarder vous pouvez a présent spécifier le fichier dans lequel vous voulez
sauvegarder le flux.
Assistant de sauvegarde - interface wxWindows
Vous pouvez a présent cliquer sur Terminer pour commencer à diffuser/transcoder la source
13
Chapter 2. Diffusion facile
Diffusion en mode graphique
Introduction
Une deuxième facon de parametrer une instance de diffusion avec VLC est d’utiliser le menuFlux de sortie dans la boite
de dialogue Ouvrir... de l’interface wxWindows (Windows / GNU Linux), skins (Windows / GNU Linux) et MacOS X. Les
options et méthodes les plus courantes de diffusion sont accessibles dans ce menu
pour diffuser le media ouvert, cochez "flux de sortie" dans la boite de dialogue "ouvrir un fichier/disque/flux
reseau/périphérique de capture"et cliquez sur le bouton "paramètres"
menu ouvrir un fichier - interface wxWindows
14
Chapter 2. Diffusion facile
menu ouvrir un fichier - Mac OS X
15
Chapter 2. Diffusion facile
la boite dialogue Flux de sortie
la boite dialogue Flux de sortie - interface wxWindows
16
Chapter 2. Diffusion facile
la boite dialogue Flux de sortie - interface wxWindows
MRL Flux de sortie
Dans l’interface wxWindows, un boite de dialogue affiche le MRL de flux de sortie (Media Ressource Locator). Elle est
mise a jour quand vous modifiez des options dans le menu Flux de sortie. Pour plus d’information sur comment editer le
MRL de flux de sortie, lisez Utilisation avancée du flux de sortie en ligne de commande.
17
Chapter 2. Diffusion facile
methodes de diffusion
•
Jouer en local: affiche la diffusion à l’écran. Cela permet d’afficher le flux que vous Ãa tes en train de diffuser. Les
effets de transcodage, etc... peuvent Ãa tre surveillés en local avec cette fonction.
•
Fichier: Sauvegarder la diffusion dans un fichier. L’otion Dumper le flux brut permet d’enregistrer le flux d’entrée en
mÃa me temps qu’il est lu par VLC, sans aucun traitement.
•
HTTP: Pour utiliser la methode de diffusion HTTP. Spécifiez l’adresse IP ainsi que le numero de port TCP
à écouter
•
MMSH: Cette methode d’acces permet de diffuser vers Microsoft Windows Media Player. Spécifiez l’adresse IP ainsi
que le numero de port TCP à écouter.
Note: Cela fonctionnera seulement avec la methode d’encapsulation ASF
•
UDP: Diffusez en unicast en donnant une adresse dans la gamme 0.0.0.0 - 223.255.255.255 ou en multicast en donnant
une adresse dans la gamme 224.0.0.0 - 239.255.255.255. Il est aussi possible de diffuser vers des adresses IPv6.
Note: Cela fonctionnera seulement avec la methode d’encapsulation TS
•
RTP: pour utiliser le "Real-Time Transfer Protocol". Comme avec l’UDP, cela fonctionne avec des adresses unicast et
multicast.
Note: Les méthodes UDP, HTTP, MMSH et RTP necessitent de choisir l’option diffuser sur l’interface MacOS X.
(Voir Diffusions, muxeurs et codecs)
Méthode d’encapsulation
choisissez une méthode d’encapsulation qui corresponde aux methodes d’encodage et d’acces de votre diffusion, parmi
MPEG TS, MPEG PS, MPEG 1, OGG, Raw, ASF,AVI, MP4 et MOV. (voirDiffusions, muxeurs et codecs)
Options de transcodage
activez le transcodage video en cochant la case "Codec video". choisisses un codec dans la liste. Vous pouvez egalement
spécifier un debit et une echelle. (voirDiffusions, muxeurs et codecs)
activez le transcodage audio en cochant la case "Codec audio". choisisses un codec dans la liste. Vous pouvez egalement
spécifier un debit et le nombre de canaux audio a encoder (Voir Diffusions, muxeurs et codecs)
Option diverses
Choisissez la methode d’annonce de diffusion. Vous pouvez utiliser SAP (Service Announce Protocol) ou SLP (Service
Location Protocol). Vous devez alors spécifier un nom de chaine. L’interface MacOS X permet egalement d’exporter le
fichier de description (SDP) d’une session RTP en utilisant le serveur HTTP ou RTSP de VLC, ou bien un fichier. Cela
18
Chapter 2. Diffusion facile
peut Ãa tre fait en cochant les cases appropriées. La boite SDP URL permet de spécifier l’URL ou la destination ou le
fichier SDP sera disponible.
19
Chapter 3. Utilisation avancée du flux de sortie en
ligne de commande
Structure du flux de sortie
Flux de sortie est le nom d’une fonctionnalité de VLC qui permet de diffuser sur le réseau, ou d’enregistrer, n’importe
quel flux lu par VLC au lieu de l’afficher. Différents types de traitements peuvent Ãa tre appliqués au flux durant ce
procédé (transcodage, redimensionnement, filtres, re-multiplexage...) Le flux de sortie peut inclure plusieurs modules,
chacun d’eux possédant différentes fonctionnalités. Vous pouvez enchaîner les modules afin d’augmanter les
possibilités.
Voici la liste des modules actuellement disponibles :
•
standard permet d’envoyer le flux via un module de sortie : par exemple, UDP, fichier, HTTP... Vous voudrez
probablement utiliser ce module à la fin de vos chaînes.
•
trascode est utilisé pour transcoder (décoder et ré-encoder le flux en utilisant un codec et/ou un débit
différent) l’audio et la vidéo du flux d’entrée. Si les modules d’entrée ou de sortie ne permettent pas le
contrôle du débit (réseau, périphériques d’acquisition), ceci est fait "à la volée", en temps réel. Ceci
peut nécessiter un charge importante en CPU, en fonction des paramètres choisis. Les autres flux, tels que fichiers et
disques, sont transcodés aussi rapidement que le permet le système.
•
duplicate vous permet de créer une seconde chaîne, dans laquelle le flux sera traité d’une manière
indépendante.
•
display vous permet d’afficher le flux d’entrée, tel que VLC le ferait en temps normal. Utilisé de paire avec le
modules duplicate, ceci vous permet de visualiser le flux durant le traitement.
•
rtp diffuse sur RTP (un port UDP par flux élémentaire). Ce modules supporte aussi le RTSP.
•
es vous permet de séparer les flux élémentaires (ES) d’un flux d’entrée. Ceci peut Ãa tre utilisé afin
d’enregistrer les flux audio et vidéo dans des fichiers séparés, par exemple.
Chacun de ces modules peut accepter des options. Voici la syntaxe que vous devez employer :
% vlc flux_d’entrée --sout "#module1{option1=paramètre1{option-du-paramètre1},option2=paramètre2}:#module
Note: Certaines des options des modules sont requises (option1 dans cet exemple), les autres sont optionnelles. Les
paramètres des options (option-du-paramètre1 dans cet exemple) sont toujours optionnelles. Ces paramètres
d’options sont souvent des réglages très avancés. Si vous ne comprenez pas leur description, vous n’en avez
sûrement pas besoin.
Vous pouvez aussi utiliser la syntaxe suivante :
% vlc flux_d’entrée --sout-module1-option1=... --sout-module1-option2=... --sout-module2-option1=... --sout-
Par exemple, pour transcoder un flux et le diffuser, utilisez :
% vlc flux_d’entrée --sout ’#transcode{options}:standard{options}’
20
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
Description des modules
standard (alias std)
Ce module enregistre le flux dans un fichier ou le diffuse sur le réseau, après l’avoir multiplexé.
Les options disponibles sont :
access=
Ces options permmettent de sélectionner le medium utilisé pour enregistrer ou diffuser le flux. Cette option est
obligatoirement requise. Les choix possibles sont :
•
file : enregistre le flux dans un fichier.
Utilisez l’option append pour ajouter le flux à un fichier existant au lieu de le remplacer.
•
udp : diffuse vers une adresse UPD unicast ou multicast.
Les options sont : caching=<durée en ms> pour définir le temps pendant lequel VLC devrait garder les données
en tampon avant de les envoyer, ttl=<ttl> pour définir le ttl des paquets UDP envoyés, group=<nombre de
paquets> pour envoyer les paquets par rafales plutôt que un par un, late=<durée en ms> pour éliminer les paquets
qui arrivent trop en retard à cette étape de la chaîne, raw si vous ne voulez pas attendre que le MTU soit rempli
avant d’envoyer les paquets.
•
http : diffuse par HTTP.
Elément les options sont : user=<nom d’utilisateur> pour activer l’authentification basique par HTTP et définir
l’utilisateur, ^wd=<mot de passe> pour définir le mot de passe mime=<type mime> pour définir le type MIME
retourné par le serveru.
•
https : diffuse par HTTP, en utilisant une connexion sécurisée SSL
Les options sont les mÃa me que pour http, plus : cert=<chemin ver le certificat> pour définir le certificat à utiliser,
key=<chemin vers la clef> pour définir la clef à utiliser ca=<chemin vers le certificat> pour définir le certificat
CA à utiliser dans le SSL, crl=<chemin vers le certificat> pour définir le certificat de révocation à utiliser dans
la connection SSL.
•
mmsh : diffuse en utilisant le protocol Microsoft MMS. Ce protocole est utilisé comme méthode de transport par la
plupart des logiciels Microsoft. Notez que seule une petite partie du protocole MMS est supportée (MMS
encapsulé dans du HTTP).
Les options sont les mÃa me que pour le module HTTP.
•
rtp : diffuse par RTP. Notez que c’est un module assez vieux. Il ne permet pas le RTSP et peux uniquement Ãa tre
utilisé pour diffuser des flux TS. Veuillez regarder le module de sortie rtp pour un support complet du RTP.
Les options sont les mÃa mes que pour pour l’udp.
mux=
Cette option vous permet de choisir la méthode d’encapsulation utilisée dans le flux. Cette option est obligatoire.
Les options disponibles sont :
•
ts : le muxer MPEG2/TS. C’est le muxer standard utilisé pour diffuser du MPEG 2. Ce muxer peut Ãa tre utilisé
avec n’importe quelle méthode d’accès. Les codecs supportés sont MPEG 1/2/4, MJPEG, H263, H264, I263,
WMV 1/2 et theora pour la vidéo, l’audio MPEG, AAC et a52 pour le flux audio.
21
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
Les options sont : pid-video=<pid> pour choisir le PID de la piste vidéo, pid-audio=<pid> pour choisir le PID de la
piste audio, pid-spu=<pid> pour choisir le PID de la piste de sous-titres, pid-pmt=<pid> pour choisir le PID de la PMT
(Program Map Table), tsid=<id> pour choisir l’ID du flux TS, shaping=<delai de formation en ms > pour choisir
l’intervalle minimum durant lequel le ébit du flux doit rester constant, pour les flux à débit variable,
use-key-frames utiliser les images I comme limites de délai de formation, pcr=<intervalle PCR en ms> permet de
choisir à quel intervalle le PCR (Program Clock References) doit Ãa treenvoyé, dts-delay=<delai en ms> permet de
retarder le PTS (Presentation Time Stamps) du DTS (Decoding Time Stamp) du delai indiqué, crypt-audio permet
d’activer le chiffrement de la piste audio en utilisant l’algorithme CSA, csa-ck=<clef sous forme d’un mot de 16
caractères> permet de choisir la clef à utiliser pour le chiffrement CSA.
•
ps : le muxer MPEG2/PS. C’est le muxer standard pour fichiers MPEG 2 (.mpg). Il peut Ãa tre utilisé pour les
méthodes de sortie file et http. Les codecs supportés sont MPEG 1/2 et MJPEG pour la vidéo, l’audio MPEG et
a52 pour les flux audio.
La seule option disponible est dst-delay=<delai en ms> . Elle permet de contrôler le délai entre le PTS (Presentation
Time Stamps) et le DTS (Decoding Time Stamp).
•
mpeg1 : le muxer MPEG1. Ce muxer devrait Ãa tre utilisé à la place du ps pour les flux vidéos MPEG 1, pour les
méthodes de sortie file ou http. Les codecs supportés sont le MPEG 1 et l’audio MPEG.
Les options sont les mÃa me que pour le muxer PS.
•
ogg : le muxer ogg. C’est le muxer du projet Xiph. Il peut Ãa tre utilisé avec les méthodes de sortie file et http. Les
codecs supportés sont MEPG 1/2/4, MJPEG, WMV 1/2 et Theora pour la vidéo et vorbix, flac, speex, a52 et
l’audio MPEG pour l’audio.
Il n’y a pas d’option pour ce muxer.
•
asf : le muxer ASF de Microsoft. C’est le muxer standard utilisé pour la diffusion par les logiciels Microsoft. Il est
aussi utilisé comme conteneur pour les fichiers WMA audio. Ce muxer peut Ãa tre utilisé par les méthodes de
sortie file et http. Les codecs supportés sont MPEG 4, MJPEG, WMV 1/2 pour la vidéo, l’audio MPEG et a52 pour
les flux audio.
Le options disponibles sont : title=<titre>, autor=<auteur>, copyright=<message de copyright>,
comment=<commentaires>, rating=<rating> allow you to set what will be displayed in the according field of the
stream comments.
•
asfh : c’est une version spécial du muxer ASF, qui peut Ãa tre utilisée pour la diffusion MMSH. MMSH est la seule
méthode de sortie supportée. Les codecs supportés sont les mÃa me que pour ASF.
Les options sont les mÃa mes que pour ASF.
•
avi : le muxer AVI de Microsoft. C’est un format d’encapsulation très répendu pour les fichiers MPEG 4. La seule
méthode de sortie est file. Les codecs supportés sont MPEG 1/2/4, H263, H264 et I263 pour la vidéo, l’audio
MPEG et a52 pour les flux audio.
Il n’y a pas d’option pour ce muxer.
•
mpjpeg : le muxer MJPEG. Ce format d’encapsulation est largement utilisé dans les caméras de télésurveillance avec un serveur web. Ces flux sont généralement incrustés dans des pages web et visualisée par
les navigateurs Internet standrad, puisqu’ ils ne sont autre qu’un succession d’images JPEG. La seule méthode de
sortie supportée est http. Le seul codec est MJPEG. On ne peut pas y mettre de piste audio.
Aucune option n’est disponible pour ce muxer.
url=
Cette option permet de donner les informations sur l’emplacement oÃ1 le flux doit Ãa tre enregistré ou envoyé.
Le sens de l’option url dépend du paramètre utilisé à l’option access.
22
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
•
Si la méthode de sortie est file, url est le chemin complet oÃ1 le fichier doit Ãa tre enregistré.
•
Si la méthode de sortie est udp ou rtp , url est l’adresse unicast ou multicast de destination, et éventuellement le
port UDP, dans la forme adresse:port.
•
Si la méthode de sortie est http, https ou mmsh, url est l’adresse, le port, et le chemin réseau local sur lequel le
server doit attendre des requètes. Si aucune adresse est donnée, VLC écoutera sur toutes les interfaces réseau.
Cette information doit Ãa tre de la forme adresse:port/chemin .
sap
Utilisez cette option si vous souhaitez que VLC envoie des annonces SAP (Session Announcement Protocol). SAP est un
protocole de découverte de services, qui utilise une adresse multicast spécifique pour envoyer une liste des flux
disponibles sur un serveur.
Note: Cette option peut Ãa tre activé dans la méthode de sortie udp .
group=
Cette option permet de renseigner le nom d’un éventuel groupe de flux. Un client sous VLC pourra utiliser de cham
pour classer les flux.
Note: Cette option utilise une extension privée du protocole SAP. VLC sera le seul client capable de lire ce champ.
Cette option peut uniquement Ãa tre utilisée lorsque l’option sap est activée.
sap-ipv6
Utilisez cette option si vous voulez que les annonces SAP soient envoyées en utilisant le protocole IPv6 au lieu de IPv4.
Note: Cette option peut uniquement Ãa tre utilisée lorsque l’option sap est activée.
slp
SLP signifie Service Location Protocol. C’est une alternative au SAP pour annoncer des sessions. Utilisez cette option si
vous souhaitez utiliser le SLP.
name=
Utilisez cette option pour préciser le nom du flux à envoyer dans les annonces SAP et SLP.
Note: Cette option peut uniquement Ãa tre utilisée lorsque les options sap ou slp sont activées.
23
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
display
Ce module est utilisé pour afficher le flux. C’est particulièrement utile dans une chaine duplicate, pour surveiller le flux
en train d’Ãa tre enregistré ou diffusé.
les options disponibles sont :
novideo
Vous pouvez utiliser cette option pour désactiver la vidéo dans le flux à l’affichage.
noaudio
Vous pouvez utiliser cette option pour désactiver le son dans le flux à l’affichage.
delay=
Vous pouvez utiliser cette option pour introduire un delai dans l’affichage du flux. Le délai est en ms.
rtp
Ce module peut Ãa tre utilisé pour envoyer un flux en utilisant le protocole RTP (Real Time Protocol) (voir RFC 3550).
Note: MÃa me s’il est possible d’utiliser le RTSP dans ce module, vous ne pourrez pas faire de la Vidéo à la
Demande. Veuillez vous reporter à la description du module VLC pour cela.
Les différentes options disponibes sont :
dst=
Cette option vous permet de donner l’adresse UDP de destination. Cela peut Ãa tre l’adresse d’un hote ou d’un group
multicast. Cette option doit Ãa tre renseignée, à moins que l’option sdp=rtsp:// le soit (voir plus bas). Dans le dernier
cas, le flux sera envoyé à l’hôte faisant la requÃa te RTSP.
port=
Cette option permet de régler le port UDP utilisé pour envoyer le premier flux élémentaire. Ce port doit Ãa tre
fourni. Les autres flux seront en utilisant les ports impairs juste au dessus.
port-video=
Cette option vous permet de définir le port UDP utilisé pour envoyer le premier flux élémentaire vidéo. Ce port
doit Ãa tre impair.
24
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
port-audio=
Cette option vous permet de définir le port UDP utilisé pour envoyer le premier flux élémentaire audio. Ce port
doit Ãa tre impair.
sdp=
Cette option vous permet de choisir la manière dont le fichier SDP (Session Description Protocol) correspondant au flux
doit Ãa tre disponible.
Le options sont :
•
file://<chemin vers le fichier>, pour exporter le contenu SDP en tant que fichier local.
•
http://<interface locale IP:port/chemin>, pour rendre le fichier disponible en utilisant le serveur HTTP intégré au
VLC.
Note: L’argument interface locale IP est facultatif. S’il n’est pas fourni, VLC écoutera sur toutes les interfaces
disponibles.
•
rtsp://<interface locale IP:port/chemin>, pour rendre le fichier SDP disponible en utilisant le protocole RTSP (voir RFC
2326).
Note: L’argument interface locale IP est facultatif. S’il n’est pas fourni, VLC écoutera sur toutes les interfaces
disponibles.
•
sap, pour exporter le contenu SDP en utilisant le SAP (Session Announcement Protocol, voir RFC 2974).
ttl=
Cette option peut Ãa tre utilisée pour fixer le TTL (Time to Live) des paquets UDP envoyés.
mux=
Cette option vous permet de définir la méthode d’encapsulation pour envoyer le flux. Voir les options de mux= du
module standard pour une description des méthodes disponibles. Seuls ts et raw (pas d’encapsulation) sont des valeurs
possibles pour les flux RTP. La valeur par défaut est RAW.
name=
Cette option peut Ãa tre utilisée pour donner un nom qui sera affiché au client affichant le flux.
description=
Cette option peut Ãa tre utilisée pour donner une description supplémentaire du flux.
25
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
url=
Cette option permet de donner l’adresse d’un site web contenant des informations supplémentaires sur le flux.
email=
Cette option permet de donner une adresse e-mail de contact
es
Le module es peut Ãa tre utilisé pour séparer les différents flux élémentaires du flux principal, et enregistrer
chacun d’eux dans un fichier différent ou les envoyer vers d’autres destinations.
Les paramètres disponibles sont :
access-video=
Utilisez cette option pour donner le média utilisé pour enregistrer ou envoyer les flux élémentaires vidéo. Les
valeurs possibles sont les mÃa me que celles de l’option access du module standard (voir après).
access-audio=
Utiliser cette option pour régler le media choisi pour enregistrer ou envoyer le flux élémentaire audio. Les valeurs
possibles et les options sont les mÃa mes que celles de l’option access du module standard (voir précédemment).
access=
Cette option peut Ãa tre utilisée à  la place des 2 options access-video et access-audio, quand elles partagent le
mÃa me réglage.
mux-video=
Utiliser cette option pour régler la méthode d’encapsulation choisie pour le flux élémentaire video. Les valeurs
possibles et les options sont les mÃa mes que celles de l’option mux du module standard (voir précédemment).
mux-audio=
Utiliser cette option pour régler la méthode d’encapsulation choisie pour le flux élémentaire audio. Les valeurs
possibles et les options sont les mÃa mes que celles de l’option mux du module standard (voir précédemment).
mux=
Cette option peut Ãa tre utilisée à la place des 2 options mux-video et mux-audio, quand elles partagent le mÃa me
réglage.
26
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
dst-video=
Utiliser cette option pour régler le lieu dans lequel sera sauvé, envoyé ou rendu accessible le flux élémentaire
vidéo. La signification exacte de cette option dépend de la valeur de l’option access-video et est la mÃa me que
l’option url du module standard (voir précédemment).
Note: Si vous utilisez la chaine de caractère %d dans le champ d’adresse (url), VLC la remplacera par le numéro
de la piste audio ou vidéo en question. La chaine %c sera remplacée par le nom (FOURCC) du codec de la piste.
dst-audio=
Utiliser cette option pour régler le lieu dans lequel sera sauvé, envoyé ou rendu accessible le flux élémentaire
audio. La signification exacte de cette option dépend de la valeur de l’option access-audio et est la mÃa me que l’option
url du module standard (voir précédemment).
Note: Si vous utilisez la chaine de caractère %d dans le champ d’adresse (url), VLC la remplacera par le numéro
de la piste audio ou vidéo en question. La chaine %c sera remplacée par le nom (FOURCC) du codec de la piste.
dst=
Cette option peut Ãa tre utilisée à la place d’à la fois dst-video et dst-audio, quand elles partagent les mÃa mes
réglages.
transcoder
Vous pouvez utiliser ce module pour transcoder un flux, c’est-à -dire changer ses codecs ou ses débits d’encodage.
Quelques ajustements supplémentaires peuvent Ãa tre réalisés pendant cette phase, comme changer la taille,
désentrelacer, rééchantillonner, etc.
Note: Selon le débit original du flux et les options choisies, transcoder peut Ãa tre une tache très intensive pour le
processeur. En conséquence, la diffusion du flux transcodé en temps réel peut mener à des pertes de frame ou
une mauvaise image dans certains cas, quand il manque des ressources.
Les options disponibles sont :
vcodec=
Cette option permet de choisir le codec des pistes vidéos dans lequel le flux d’entrée doit Ãa tre transcodé.
Une liste de codecs disponibles peut Ãa tre trouvée sur la page des fonctionnalités de diffusion
(/streaming/features.html)
vb=
Cette option permet de régler le débit flux video transcodé en kbit/s
27
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
venc=
Ceci permet de régler l’encodeur à utiliser pour encoder les vidéos. Les options disponibles sont :
•
ffmpeg : c’est le module d’encodage libavcodec. Il contient un grand nombre de codecs différents (la liste peut Ãa tre
trouvée sur la page des fonctionnalités de diffusion (/streaming/features.html).
Les options sont : keyint=>nombre de frames< permet de régler le nombre maximal de frames entre 2 frames clé,
hurry-up permet à l’encodeur de diminuer la qualité du flux si le processeur ne peut soutenir le taux d’encodage,
interlace permet d’améliorer la qualité de l’encodage d’une vidéo entrelacée, noise-reduction=<facteur de
réduction du bruit> active un algorithme de réduction du bruit (réduira le débit demandé au coût des
détails dans l’image), vt=<tolérance du débit en kbit/s> permet de régler la tolérance du débit de la
vidéo de sortie, bframes=<nombre de frames> règle le nombre de B frames entre 2 frames clé,
qmin=<quantizer> permet de régler l’échelle minimale des quantizers, qmax=<quantizer> permet de régler
l’échelle maximale des quantizers,qscale=<quantizer> permet de régler une échelle fixe de quantizers pour des
encodages VBR, i-quant-factor=<facteur de quantization> permet de régler le facteur de quantization des I frames
par rapport aux P frames, hq=<quality> permet de régler le niveau de qualité pour l’encodage des vecteurs de
mouvement (les arguments sont simple, rd ou bits, par défaut simple), strict=<niveau de conformité> permet de
forcer un niveau strict de conformité (les valeurs possibles sont -1, 0, 1, par défaut 0), strict-rc active un algorithme
de contrôle à taux strict, rc-buffer-size=<taille du buffer en bits> permet de choisir la taille du buffer utilisé pour le
contrôle du taux (une valeur élevée correspond à un contrôle plus efficace), rc-buffer-aggressivity=<nombre
représentant l’aggressivité> permet de régler l’aggressivité du taux de contrôle du buffer, pre-me permet
d’activer l’estimation pre motion, mpeg4-matrix active l’utilisation de la matrice de quantification MPEG4 avec les flux
MPEG2, améliorant la qualité tout en gardant la compatibilité avec les décodeurs MPEG2, trellis active la
quantization trellis (meilleure qualité, mais traitement plus lent).
•
theora : l’encodeur theora Xiph.org. Ce module est utilisé pour produire des flux theora. Theora est un codec vidéo
sans brevet et sans royalties.
La seule option disponible est quality=<niveau de qualité>. Cette option permet de créer un flux VBR,
remplaçant le réglage vb, le nieau de qualité doit Ãa tre un entier entre 1 et 10. Le meilleur étant le plus
élevé.
•
x264. x264 est un encodeur h264 libre et open-source. h264 (ou MPEG4-AVC) est un codec viddéo relativement
récent de haute qualité.
Les options sont : keyint=<nombre deframes> permet de régler le nombre maximal de framesentre 2 frames clé,
idrint=<nombre de frames>permet de fixer le nombre maximal de frames entre 2 framesIDR, bframes=<nombre de
frames> permetde régler le nombre de B frames entre une frame I et uneframe P, qp=<paramètre des
quantizers>permet de fixer une valeur fixe des quantizers (entre 1 et 51),qp-max=<paramètre des quantizers> permet
dedonner la valeur maximale des quantizers, qp-min=<paramètredes quantizers> permet de régler la valeur
minimaledes quantizers, cabac active l’algorithmeCABAC (Context-Adaptative Binary Arithmetic Coding) (plus
lentmais améliore la qualité), loopfilteractive le filtre loop, analyse active le modeanalyze, frameref=<nombre de
frames> permetde régler le nombre de frames utilisées comme prédicateurs,scenecut=<sensibilité> permet de
contrôler avecquelle aggressivité l’encodeur doit insérer des I-frame externes auchanegement de scène.
fps=
Cette option permet de régler le framerate d’une vidéo transcodée, en images par seconde, réduire le framerate
d’une vidéo peut aider à diminuer son débit.
deinterlace
Cette option permet d’activer le désentrelacement de vidéos entrelacées avant d’encoder.
28
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
croptop=
Cette option permet de découper la partie supérieure de la vidéo pendant le transcodage. L’argument est le nombre
de dont la vidéo doit Ãa tre coupée.
cropbottom=
Cette option permet de couper la partie basse de la source vidéo. L’argument est la coordonnée Y de la première
ligne coupée.
cropleft=
Cette option permet de couper la partie gauche de la source vidéo. L’argument est le nombre de colonnes dont la
vidéo doit Ãa tre coupée.
cropright=
Cette option permet de couper la partie droite de la source vidéo. L’argument est la coordonnée X de la première
colonne coupée.
scale=
Cette option permet de donner le ratio dans lequel doit Ãa tre redimensionnée la vidéo pendant le transcodage. Cette
option peut Ãa tre particulièrement utile pour aider à réduire le débit d’un flux.
width=
Cette option permet de donner la largeur de la vidéo transcodée en pixels.
height
Cette option permet de donner la hauteur de la vidéo transcodée en pixels.
acodec=
Cette option permet de spécifier le codec dans lequel la piste audio doit Ãa tre transcodée.
La liste des codecs disponibles peut Ãa tre trouvée sur la page des options de diffusion (/streaming/features.html).
ab=
Cette option permet de fixer le débit du flux audio transcodé en kbit/s.
aenc=
Ceci permet de choisir l’encodeur à utiliser pour encoder le flux audio. Les options disponibles sont :
•
ffmpeg : c’est le module d’encodage libavcodec. Il contient un grand nombre de codecs différents (la liste peut Ãa tre
trouvée sur la page des fonctionnalités de diffusion (/streaming/features.html).
29
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
•
vorbis. Ce module utilise l’encodeur vorbis du projet Xiph.org. Vorbis est un codec audio libre, open, sans-licence.
Les options sont : qualité=<niveau de qualité> permet d’utiliser VBR (débit variable) pour encoder à la place
de CBR (débit constant) par défaut, et de fixer le niveau de qualité (entre 1 et 10, le plus haut est le meilleur),
max-bitrate=<débit en kbit/s> permet de fixer le débit maximum, pour un encodage vbr, min-bitrate=<débit en
kbit/s> permet de fixer le débit minimum, pour un encodage vbr, cbr permet de forcer un encodage cbr.
•
speex. Ce module utilise l’encodeur speex du projet Xiph.org. Speex est un codec audio, performant pour de très
faibles débits (autour de 10kbit/s) et particulièrement pour la vidéo conférence.
samplerate=
Cette option permet de fixer le taux d’échantillonnage du flux audio transcodé en Hz. Diminuer le taux
d’échantillonnage est une manière de réduire le débit du flux audio.
channels=
Cette option permet de fixer le nombre de canaux du flux audio résultant. Cette option est utile pour les codecs qui ne
supportent pas plus de 2 canaux, ou pour réduire le débit d’un flux audio.
scodec=
Cette option permet de définir le format dans lequel les pistes de sous-titres du flux d’entrée devraient Ãa tre
converties.
La liste des codecs disponibles peut Ãa tre trouvée sur la page des options de diffusion (/streaming/features.html).
senc=
Cela permet de choisir l’encodeur à utiliser pour encoder les sous-titres.
Le seul encodeur de sous-titres disponible à l’heure actuelle est dvbsub.
soverlay
Cette option permet d’incruster les sous-titres directement sur la vidéo pendant le transcodage. Ne pas confondre cette
option avec senc/scodec qui transcode les sous-titres et en fait un flux.
sfilter=
Cette option permet d’afficher des images générées par un subpicture filter (ie un logo, une phrase, ...) au dessus de
la vidéo.
La liste des subpicture filters disponibles peut Ãa tre trouvée sur la page des options de diffusion
(http://www.videolan.org/streaming/features.html). Les options de ces modules peuvent Ãa tre trouvées en utilisant la
ligne de commande suivante :
% vlc -p --advanced <nom_du_module>
30
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
threads=
Cette option permet de fixer le nombre de threads qui doivent Ãa tre utilisés pour encoder les flux. Augmenter ce nombre
jusqu’au nombre de processeurs sur l’ordinateur , (ou au double sur les processeurs Intel P4 HT) devrait améliorer les
performances de transcodage.
audio-sync
Quand cette option est activée, VLC abandonnera/dupliquera certaines frames vidéo pour synchroniser la piste
vidéo avec la piste audio.
duplicate
Ce module peut Ãa tre utilisé pour dupliquer le flux, et ainsi procéder à travers différentes chaines.
Les options disponibles sont :
dst=
Cette option permet de fixer la chaine à travers laquelle le flux dupliqué doit Ãa tre traité.
Note: Plusieurs options dst= doivent Ãa tre utilisées dans le bloc duplicate pour vraiment dupliquer le flux.
N’importe lequel des modules de sortie décrits précédemment peut Ãa tre utilisé comme paramètre de cette
option.
select=
Cette option peut Ãa tre utilisée pour dupliquer seulement unflux élémentaire d’un flux complet.
Plusieurs critères peuvent Ãa tre donnés en les séparant par une virgule.
Pour les critères qui nécessitent un paramètre, tel que es et program, vous pouvez aussi spécifier une bande, en
utilisant la syntaxe critère=num_début-num_fin.
Les paramètres disponibles sont :
•
program= : duplique seulement les flux élémentaires appartenant au programme sélectionné (ou SID). Cette
option fonctionne seulement avec les flux MPEG2/TS.
•
program= : ne duplique pas les flux élémentaires appartenant au programme sélectionné (ou SID). Cette
option fonctionne seulement avec les flux MPEG2/TS.
•
program= : duplique seulement les flux élémentaires avec l’id sélectionnée.
•
program= : ne duplique pas les flux élémentaires avec l’id sélectionnée.
•
program= : duplique seulement la vidéo des flux élémentaires.
•
program= : ne duplique pas la vidéo des flux élémentaires.
•
program= : duplique seulement l’audio des flux élémentaires.
•
noaudio : ne pas dupliquer les flux élémentaires audio.
•
spu : dupliquer uniquement les flux élémentaires de sous titres.
31
Chapter 3. Utilisation avancée du flux de sortie en ligne de commande
•
nospu : ne pas dupliquer les flux élémentaires de sous titres.
Exemple :
#duplicate{dst=std{...},select="program=100-200,novideo"}
Cette chaine de type duplicate ne renvera que les flux élémetaires non vidéo appartenant aux programmes dont le
PID est compris entre 100 et 200.
Divers
Voici quelques options globales supplémentaires :
--sout-all, --no-sout-all
Activer la diffusion de tous les ES (désactivé par défaut). Par défaut, VLC ne diffusera qu’un ES audio et un ES
vidéo (les premiers). Si vous activez sout-all, tous les ES (audio, vidéo et sous titres) seront diffusés.
--sout-keep, --no-sout-keep
Garder le sout ouver (désactivé par défaut) : utilise la mÃa me instance du sout à travers les divers éléments
de playlist (si possible).
--no-sout-audio
Cette option permet de désactiver l’audio dans les flux émis.
--no-sout-video
Cette option permet de désactiver la vidéo dans les flux émis.
Syntaxe simplifiée
Le module de flux de sortie permet aussi d’utiliser une syntaxe simplifiée qui ne peut utilisée que lorsque que l’on
utilise les options principales du module standard :
% vlc input_stream --sout access/mux:url
oÃ1 access, mux et url sont utilisés comme les options du module standard.
Exemples
Pour bien comprendre la syntaxe complex du flux de sortie de VLC vous devriez regarder les exemples de la section
suivante.
32
Chapter 4. Exemples d’utilisation avancée de
diffusion avec VLC (transcodage, diffusion multiple,
etc...)
Transcodage
Transcoder le flux d’entrée et l’envoier vers une adresse multicast avec l’annonce SAP associée:
% vlc -vvv input_stream --sout ’#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:
standard{access=udp,mux=ts,url=239.255.12.42,sap,name="TestStream"}’
Afficher le flux d’entrée, le transcoder et l’envoyer vers une adresse multicast avec l’annonce SAP associée:
% vlc -vvv input_stream --sout ’#duplicate{dst=display,dst=
"transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:
standard{access=udp,mux=ts,url=239.255.12.42,sap,name="TestStream"}"}’
Transcoder, afficher le flux transcodé et l’envoyer vers une adresse multicast avec l’annonce SAP associée:
% vlc -vvv input_stream --sout ’#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:
duplicate{dst=display,dst=standard{access=udp,mux=ts,url=239.255.12.42,sap,name="TestStream"}}’
Diffusion multiple
Envoyer le flux vers une adresses IP multicast et une adresse IP unicast:
% vlc -vvv input_stream --sout ’#duplicate{dst=
standard{access=udp,mux=ts,url=239.255.12.42,sap,name="TestStream"},
dst=standard{access=udp,mux=ts,url=192.168.1.2}}’
Afficher le flux et l’envoyer vers deux adresses IP unicast:
% vlc -vvv input_stream --sout ’#duplicate{dst=display,dst=
standard{access=udp,mux=ts,url=192.168.1.12},
dst=standard{access=udp,mux=ts,url=192.168.1.42}}’
Envoyer des parties d’un flux d’entrée multiple:
% vlc -vvv multiple_program_input_stream
--sout ’#duplicate{dst=standard{access=udp,mux=ts,url=239.255.12.42},select="program=12345",
dst=standard{access=udp,mux=ts,url=239.255.12.43}, select="video,program=1234-2345"}’
Cette commande envoie le programme du flux d’entrée dont le numéro est 12345 vers l’adresses 239.255.12.42 et
tous les programmes dont le numeros est compris entre 1234 et 2345 vers l’adresse 239.255.12.43.
Transcodage et diffusion multiple
Transcoder le flux d’entrée, afficher le flux transcodé et l’envoyer vers une adresse IP multicast avec l’annonce SAP
associée et une adresse IP unicast:
33
Chapter 4. Exemples d’utilisation avancée de diffusion avec VLC (transcodage, diffusion multiple, etc...)
% vlc -vvv input_stream --sout ’#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:
duplicate{dst=display,dst=standard{access=udp,mux=ts,url=239.255.12.42,sap,name="TestStream"},
dst=standard{access=udp,mux=ts,url=192.168.1.2}}’
Afficher le flux d’entrée, le transcoder et l’envoyer vers deux adresses IP unicast:
% vlc -vvv input_stream --sout ’#duplicate{dst=display,
dst="transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:
duplicate{dst=standard{access=udp,mux=ts,url=192.168.1.2},
dst=standard{access=udp,mux=ts,url=192.168.1.12}"}’
Envoyer le flux d’entrée vers une adresses IP multiicast, et le flux trancodée vers une autre adresse IP multicast avec
les annonces SAP associées:
% vlc -vvv input_stream --sout ’#duplicate{dst=
standard{access=udp,mux=ts,url=239.255.1.2,sap,name="OriginalStream"},
dst="transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:
standard{access=udp,mux=ts,url=239.255.1.3,sap,name="TranscodedStream"}"}’
Diffusion HTTP
Diffuser en HTTP:
•
Sur le serveur, lancer
% vlc -vvv input_stream --sout ’#standard{access=http,mux=ogg,url=server.example.org:8080}’
•
sur le(s) client(s), lancer:
% vlc http://server.example.org:8080
Transcoder et diffuser en HTTP:
% vlc -vvv input_stream --sout ’#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:
standard{access=http,mux=ogg,url=server.example.org:8080}’
Par exemple, si vous voulez diffuser un CD audio en Ogg/Vorbis par HTTP:
% vlc -vvv cdda:/dev/cdrom --sout ’#transcode{acodec=vorb,ab=128}:
standard{access=http,mux=ogg,url=server.example.org:8080}’
Diffusion RTP
Diffuser en RTP
•
Sur le serveur, lancer
% vlc -vvv input_stream --sout ’#rtp{dst=192.168.0.12,port=1234,sdp=rtsp://server.example.org:8080/test.sdp
•
sur le(s) client(s), lancer:
% vlc rtsp://server.example.org:8080/test.sdp
Note: You can remplace the rtsp URL by a http one, a file path (prefixed with file:// ) or sap:// to export the sdp file
using one of these methods instead of rtsp.
34
Chapter 4. Exemples d’utilisation avancée de diffusion avec VLC (transcodage, diffusion multiple, etc...)
RTSP
Voir VLM - Diffusions multiples et Vidéo à la demande
diffusion MMS / MMSH vers Windows Media Player
% vlc -vvv input_stream --sout ’#transcode{vcodec=DIV3,vb=256,scale=1,acodec=mp3,ab=32,channels=2}:std{access
VLC media player peut s’y connecter en utilisant l’URL suivante mmsh://server_ip_address:8080 .
Windows Media Player peut s’y connecter en utilisant l’URL suivante: mms://server_ip_address:8080 .
Utiliser le module es
Separer l’audio et la video en deux fichiers PS:
% vlc -vvv input_stream --sout
’#es{access=file,mux=ps,url_audio=audio-%c.%m,url_video=video-%c.%m}’
Extraire la piste audio du flux d’entrée en un fichier TS
% vlc -vvv input_stream --sout ’#es{access_audio=file,mux_audio=ts,url_audio=audio-%c.%m}’
Diffuser en unicast la piste audio sur un port et la piste video sur un autre port:
•
du coté serveur:
% vlc -vvv input_stream --sout
’#es{access=rtp,mux=ts,url_audio=192.168.1.2:1212,url_video=192.168.1.2:1213}’% vlc -vvv input_stream --sou
’#es{access=rtp,mux=ts,url_audio=192.168.1.2:1212,url_video=192.168.1.2:1213}’
•
côté client: pour recevoir le son:
% vlc udp:@:1212
pour recevoir la vidéo:
% vlc udp:@:1213
Emettre la vidéo en multicast et enregistrer le son dans un fichier:
% vlc -vvv input_stream --sout ’#es{access_video=udp,mux_video=ts,url_video=239.255.12.42,
access_audio=file,mux_audio=ps,url_audio=audio-%c.%m}’
Note: Vous pouvez également combiner le module es avec d’autres modules pour créer des solutions encore plus
complexes.
35
Chapter 5. VLM - Diffusions multiples et Vidéo à la
demande
VLM
VideoLAN Manager est un petit outil de gestion de médias conçu pour contrôler plusieurs flux avec une seule
instance de VLC. Cela permet de la diffusion multiple et la vidéo à la demande (VoD). Cet outil ayant été
récemment ajouté, il n’est possible de le contrôler que par les interfaces Telnet et HTTP.
Interfaces
Interface Telnet
Vous pouvez démarrer l’interface Telnet comme toute autre interface en utilisant la ligne de commande :
% vlc --intf telnet
% vlc --extraintf telnet
L’interface Telnet peut aussi Ãa tre démarrée depuis l’interface wxWindows:
Démarrage de l’interface Telnet - interface wxWindows
Le port par défaut est 4212. Le mot-de-passe par défaut est "admin". Ils peuvent Ãa tre modifiées en utilisant les
options de la ligne de commande --telnet-port <integer> et --telnet-password <string> respectivement. Ils peuvent aussi
Ãa tre changés depuis le panneau de configuration des Préférences de l’interface wxWindows, dans la section
Modules->interface-> telnet (cochez la case Options avancées).
Interface HTTP
Le démarrage de l’interface HTTP est détaillé dans le Play-with-VLC Howto. (http://www.videolan.org/doc/)
Pour accéder à la rubrique VLM de l’interface HTTP, utilisez l’URL qui suit: http://hôte:port/vlm/ .
36
Chapter 5. VLM - Diffusions multiples et Vidéo à la demande
Eléments de VLM
Médias
Un média (media) est constitué par une list d’entrée (les flux audio et vidéo que vous voulez diffuser), une sortie
(oÃ1 et comment vous voulez les diffusez) et quelques options.
Il y a deux types de médias:
•
vod: Un média VoD est normalement utilisé pour la Vidéo à la Demande. Il sera démarré uniquement si un
client VoD demande le média.
•
broadcast: Un média broadcast est très similaire à un programme ou une chaîne de TV. Il est démarré,
arrÃa té ou mis en pause par l’administrateur et peut Ãa tre répété plusieurs fois. Le client n’a aucun contrôle
sur un média de ce type.
Programmes
Un programme (schedule en anglais) est un script avec une date. Quand la date du programme est atteinte, le script est
démarré. Plusieurs options sont disponibles, telles que la période ou le nombre de répétitions.
Syntaxe de la ligne de commande
Lignes de commande
•
help : Affiche la liste exhaustive des commandes
•
new (nom) vod|broadcast|schedule [propriétés] : Crée un nouvel élément de type vod, broadcast ou
schedule. Les noms des éléments doivent Ãa tre uniques. Les noms "media" et "schedule" sont interdits. Vous
pouvez spécifier des propriétés dans cette ligne de commande, ou, plus tard, avec la commande setup.
•
setup (nom) (propriété) : Définit une propriété d’un élément (cf. Propriétés des médias).
•
show [(nom)|media|schedule] : Affiche le statut et la configuration de l’élément.
•
•
•
show (nom) - Affiche toutes les informations concernant l’élément spécifié.
•
show media affiche un résumé des statuts des médias.
•
show schedule affiche un résumé de l’état des programmes.
del (name)|all|media|schedule : Supprime un élément ou un groupe d’éléments. Si l’élément n’était
pas à l’arrÃa t, il est interrompu avant d’Ãa tre supprimé.
•
del (nom) - Supprime l’élément (nom)
•
del all - Supprime tous les éléments
•
del media - Supprime tous les éléments de type média.
•
del schedule - Supprime tous les éléments de type programme
control (nom) [nom_instance] (command) : Modifie l’état de l’instance (nom_instance) du média (nom). Si
(nom_instance) n’est pas précisé, la commande de contrôle affecte l’instance par défaut (cf Commandes de
contrôle pour les commandes de contrôle disponibles).
37
Chapter 5. VLM - Diffusions multiples et Vidéo à la demande
•
save (fichier_config) : Sauvegarde les configurations de tous les médias et programmes dans le fichier de
configuration spécifié. Le chemin d’accès du fichier est relatif au répertoire dans lequel VLC a été
démarré. Si le fichier existe, il sera écrasé. Notez que les états, tels que en lecture, en pause ou à l’arrÃa t,
ne sont pas sauvegardés. Voir Fichiers de configuration pour plus d’informations.
•
load (fichier_config) : Charge une fichier de configuration. Le chemin d’accès au fichier est relatif au répertoire
depuis lequel VLC a été démarré. Voir Fichiers de configuration pour plus d’informations.
Propriétés des médias
Note: A l’exception de la propriété "append", toutes les propriétés peuvent suivies par une autre.
•
input (nom_entrée) : Ajoute une entrée à la fin de la liste des entrée du média.
•
output (nom_sortie) : Définit la sortie du média. La syntaxe est la mÃa le que celle de l’option ":sout=..." de VLC,
toutefois, vous n’avez pas besoin d’indiquer ":sout=...". Voir Utilisation avancée du flux de sortie en ligne de
commande pour plus d’informations concernant les flux de sortie (sout).
Note: Vous n’avez pas besoin de préciser une sortie pour les éléments vod.
•
option (option_name)[=value] : Adds the (option_name) to the media option list. The syntax is equivalent to the
":(option)=..." option , but you do not have to put the ":" string. Options are global: they are applied to all inputs of the
media.
•
enabled|disabled : Active (enabled) or désactive (disabled) le média. Si un média est désactivé, il ne peut
pas Ãa tre diffusé, mis en pause, ni démarré par un programme (schedule), ni joué en tant que VoD.
•
loop|unloop (broadcast uniquement) : Si un média avec l’option "loop" option reçoit la commande "play"
(lecture), il sera automatiquement redémarré, et rejouera sa liste d’entrées depuis le début une fois que la fin
de la liste d’entrées est atteinte.
Note: loop|unloop est uniquement utilisée pour les médias de type broadcast.
•
mux (nom_mux) : Cette option ne devrait Ãa tre employée que si vous voulez envoyer les flux élémentaires avec
une encapsulation, au lieu de les envoyer sous forme brute. (nom_mux) devrait Ãa tre spécifié sous forme d’un
identifiant de 4 caractères tel que mp2t pour MPEG TS ou mp2p pour MPEG PS (cf Diffusions, muxeurs et codecs).
Note: La propriété mux est uniquement utilisée pour les médias de type vod.
Propriétés des programmes
•
enabled|disabled : Un programme désactivé ne sera jamais démarré.
•
append (command_until_rest_of_the_line) : Add a command to the command line lit. The command line can be every
command VLM can understand.
38
Chapter 5. VLM - Diffusions multiples et Vidéo à la demande
Note: The rest of the line will be considered as part of the command line. You cannot put another option after the
append one.
•
date (année)/(moi)/(jour)-(heure):(minute):(seconde)|now : Spécifie la première date à laquelle le programme
devrait Ãa tre démarré. Vous pouvez spécifier une date en utilisant le format
(année)/(moi)/(jour)-(heure):(minute):(seconde) (par exemple: 2004/11/16-00:43:12) ou en utilsant le mot-clef
now. Si now est indiqué, le programme sera démarré dès que possible (c-à -d. dès qu’il est activé avec
enabled) et la date courante sera utilisée comme première date du programme.
•
period (année_soit_12_mois)/(mois_soit_30_jours)/(jours)-(heures):(minutes):(sec ondes) : Définit la
période temporelle pendant laquelle un programme doit attendre avant d’Ãa tre démarré à nouveau (Les mois
sont égaux à 30 jours, les années à 12 mois). Si une période est indiquée sans la propriété repeat, le
programme sera redémarré indéfiniment.
•
repeat (nombre_de_répétitions) : Spécifie combien de fois une programme doit Ãa tre redémarré. Par
exemple, si le programme a la propriété repeat 11, il sera démarré 12 fois.
Commandes de contrôle
•
play : Stat a broadcast media. The media begins to launch the first item of the input list, then launches the next one and
so on. (like a play list)
•
pause : Met le média de type broadcast en pause.
•
stop : ArrÃa te le média de type broadcast.
•
seek (pourcentage) : Se déplace dans l’élément en cours de lecture dans la liste des entrées.
Fichiers de configuration
Un fichier de configuration VLM est une liste de lignes de commande : une ligne correspond à une ligne de commande.
Pour créer un fichier de configuration, il suffit d’éditer un fichier texte et de saisir la liste des commandes VLM.
Méfiez-vous des appels récursifs: si vous incluez une commande load (fichier) dans un fichier de configuration, vous
pouvez aboutir à une inclusion récursive du mÃa me fichier, ce qui devrait faire crasher VLC.
Depuis la version 0.8.2, toute ligne dont le premier caractère hors espace est un dièse # est considérée comme un
commentaire, et donc ignorée.
Exemples
Cette section inclut plusieurs petits fichiers de configuration VLM.
Diffusion multiple
Diffusion simple en broadcast
new canal1 broadcast enabled
setup canal1 input http://machine.mondomaine/film.mpeg
39
Chapter 5. VLM - Diffusions multiples et Vidéo à la demande
setup canal1 output #standard{mux=ts,access=udp,url=239.255.1.1,sap,name="Canall 1"}
new canal2 broadcast enabled
setup canal2 input udp://@239.255.12.42
setup canal2 output #standard{mux=ts,access=udp,url=239.255.1.2,sap,name="Canal 2"}
control canal1 play
control canal2 play
Diffusion planifiée en broadcast
new mon_media broadcast enabled
setup mon_media input ma_video.mpeg input mon_autre_film.mpeg
setup mon_media output #standard{mux=ts,access=udp,url=239.255.1.1,sap,name="Mon Média"}
new mon_prog schedule enabled
setup mon_prog date 2012/12/12-12:12:12
setup mon_prog append control mon_media play
Video à la demande
Exemple simple
D’abord, démarrer VLC
% vlc --ttl 12 -vvv --color -I telnet --telnet-password videolan --rtsp-host 0.0.0.0:5554
oÃ1 :
•
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
•
telnet démarre l’interface Telnet de VLC.
•
videolan est le mot-de-passe pour se connecter à l’interface Telnet.
•
0.0.0.0 est l’adresse de l’hôte.
•
5554 est le port sur lequel vous diffusez.
Ensuite, vous vous connecter à l’interface Telnet de VLC et créer l’objet vod
new Test vod enabled
setup Test input ma_video.mpg
Vous pouvez accéder au flux avec:
% vlc rtsp://serveur:5554/Test
oÃ1 :
•
serveur est l’adresse du serveur de diffusion (IP ou DNS)
40
Chapter 6. Recevoir et enregistrer un flux
Recevoir un flux avec VLC
Recevoir un flux unicast
% vlc -vvv udp:
Recevoir un flux multicast
% vlc -vvv udp:@239.255.12.42
oÃ1 239.255.12.42 est l’adresse multicast du flux.
Recevoir un flux HTTP/FTP/MMS
Utilisez l’une de ces lignes de commande :
• % vlc -vvv http://exemple/flux.xyz
oÃ1 http://exemple/flux.xyz est l’adresse HTTP du flux ;
• % vlc -vvv ftp://exemple/flux.xyz
oÃ1 ftp://exemple/flux.xyz est l’adresse FTP du flux ;
• % vlc -vvv mms://viptvr.yacast.fr/encoderfranceinfo
oÃ1 mms://viptvr.yacast.fr/encoderfranceinfo est l’adresse MMS du flux.
Recevoir un flux RTP disponible par RTSP
% vlc -vvv rtsp://www.hardradio.com/tonbeme.mov
oÃ1 rtsp://www.hardradio.com/tonbeme.mov est l’adresse du flux.
Recevoir un flux décrit par un fichier SDP
% vlc -vvv http://serveur.exemple.org/flux.sdp
Enregistrer un flux avec VLC
VLC peut enregistrer le flux sur le disque. Pour cela, utilisez le "Flux de sortie" de VLC : vous pouvez faire ceci via
l’interface graphique, ou en utilisant cet argument de la ligne de commande :
--sout file/muxer:flux.xyz
41
Chapter 6. Recevoir et enregistrer un flux
oÃ1 :
•
•
muxer est l’un des formats supportés par le module de flux de sortie de VLC, c’est à dire :
•
ogg pour le format OGG,
•
ps pour le format MPEG2-PS,
•
ts pour le format MPEG2-TS.
et flux.xyz est le nom du fichier sous lequel vous désirez enregistrer le flux, avec la bonne extension.
Recevoir un flux avec une set-top-box
Certaines set-top-boxes munies d’une carte Ethernet peuvent recevoir des flux MPEG2-TS sur UDP et supportent le
multicast.
Les set-top-boxes connues pour fonctionner avec VLC sont :
•
Pace (http://www.pace.co.uk) set top boxes. (Pace Micro DSL 4000)
•
Aminocom (http://www.aminocom.com) set top boxes. (tous les modèles avec mpeg2)
•
tuxia / gct-allwell (mpeg4 et mpeg2) sigma designs8174 chipset
•
i3micro mood200 (mpeg4 et mpeg2)
42
Chapter 7. Diffuser un fichier
Diffuser un fichier avec VLC
% vlc -vvv video1.xyz --sout udp:192.168.0.42 --ttl 12
oÃ1 :
• video1.xyz
•
•
est le fichier que vous voulez diffuser,
192.168.0.42 est soit :
•
l’adresse IP de la machine vers laquelle vous voulez émettre en unicast;
•
ou le nom DNS de la machine vers laquelle vous vous voulez émettre en unicast;
•
ou une adresse IP multicast.
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
Si vous voulez diffuser un fichier en continu, ajoutez l’option --loop.
43
Chapter 8. Diffuser un DVD
Note: Sous Unix/linux, vous devez avoir les droits en écriture au périphérique correspondant à votre lecteur
DVD. Pour cela, vous devriez Ãa tre dans le groupe disk ou cdrom (vérifiez les permissions dans /dev). Si vous n’y
Ãa tes dedans, ajoutez-vous au groupe :
# adduser votre_login disk_ou_cdrom
et redémarrez votre session.
Diffuser un DVD avec VLC
% vlc -vvv --color dvdsimple:/dev/dvd --sout udp:192.168.0.12 --ttl 12 --sout-all
oÃ1 :
est le nom de votre lecteur DVD (mettez D: sous Windows si D est la lettre de votre lecteur DVD) ou le
répertoire oÃ1 vous avez copié votre DVD , ,
• /dev/dvd
•
192.168.0.42 est soit :
•
l’adresse IP de la machine vers laquelle vous voulez émettre en unicast;
•
ou le nom DNS de la machine vers laquelle vous vous voulez émettre en unicast;
•
ou une adresse IP multicast.
•
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
•
sout-all vous permet de diffuser tous les doublages et les sous-titres
Si vous voulez diffuser un DVD en continu, ajoutez l’option --loop.
44
Chapter 9. Diffuser une chaine DVB (Satellite ou TNT)
Note: Cela est uniquement possible sous GNU/Linux.
Installer les drivers DVB
Si vous voulez pouvoir diffuser depuis une carte DVB (carte satellite ou TNT), vous devez installer les drivers DVB.
•
Si vous utilisez un noyau linux 2.6.x, vous avez juste besoin de compiler les bons modules.
•
Si vous utilisez un noyau linux 2.4.x, vous devez telecharger la dernière version des drivers DVB depuis la page DVB
drivers download (http://www.linuxtv.org/download/dvb/) du projet LinuxTV (http://www.linuxtv.org/).
Decompressez le tarball et suivez les instructions ecrites dans le fichier INSTALL pour compiler et installer les drivers.
Diffuser avec VLC
Mettez un fichier .dvbrc contenant les chaines DVB (Staellite ou TNT) que vous désirez diffuser dans votre repertoire
personnel (certains sont fournis dans le tarball libdvb pour chaines satellite.
Lancez VLS avec la ligne de commande suivante :
% vls -vv -d udp:192.168.0.42 dvb:"EUROSPORT" --ttl 12
oÃ1 :
•
"EUROSPORT" est la chaine que vous voulez diffuser comme ecrit dans votre fichier ~/.dvbrc ,
•
192.168.0.42 est l’un ou l’autre :
•
•
l’adresse IP de la machine vers laquelle vous voulez émettre en unicast;
•
ou le nom DNS de la machine vers laquelle vous vous voulez émettre en unicast;
•
ou une adresse IP multicast.
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
Diffuser avec VLC
Note: Pour cela, vous pouvez utiliser la version SVN de VLC et la compiler avec ./configure --enable-dvb. Cette
fonctionnalité est encore considérée comme expérimentale. Vous pourrez la trouver dans la release officielle
depuis la version 0.7.2.
% vlc -vvv --color --ttl 12
--ts-es-id-pid --programs 8508,8505 dvb: --dvb-adapter=0 --dvb-frequency=1173900
oÃ1 :
45
Chapter 9. Diffuser une chaine DVB (Satellite ou TNT)
• ts-es-id-pid
• 8508
• 0
est necessaire pour dupliquer
est le SID de la chaine DVB que vous voulez diffuser, exprimé en décimal
est le numéro de la carte DVD (0 pour dvb0)
• 11739000
est la frequence en Hz du transpondeur que vous voulez diffuser
• 27500000
est le symbolrate du transpondeur en Hz
• 13
• 3
est la polarisation (13 pour verticale et 18 pour horizontale)
est le FEC (3 pour 3/4), si vous ne mettez pas l’option, la valeur sera detectée automatiquement
• dvb-budget-mode
•
•
si cette carte supporte ce mode
address est l’une:
•
des adresses IP des machines vers lequelles vous voulez difuser en unicast
•
ou des adresses DNS des machines vers lequelles vous voulez difuser en unicast
•
ou une adresses IP multicast.
12 est la valeur TTL (Time To Live) des paquets IP (ce qui sigifie que le paquet pourra traverser 11 routeurs.
46
Chapter 10. Diffuser depuis une carte d’encodage ou
d’autres périphériques d’acquisition
Cartes d’encodage matériel
Note: Cela est uniquement possible sous GNU/Linux.
VideoLAN supporte deux type d’encodeur MPEG-2 matériel :
•
Hauppauge WinTV-PVR-250 and WinTV-PVR-350,
•
Visiontech Kfir.
Les Hauppauge WinTV-PVR-250/350 fournissent des résultats bien meilleurs que les Visiontech Kfir (en plus d’Ãa tre
moins chères).
Diffuser à l’aide d’une carte Hauppauge WinTV-PVR-250/350
Installer les pilotes
Vous allez tout d’abord devoir patcher votre noyau (version 2.4) pour supporter l’API v4l2 (Video 4 Linux version 2). Le
patch est disponible sur le site de Video4Linux HQ (http://bytesex.org/v4l/). Si vous utilisez un noyau 2.6, vous n’aurez
qu’Ã inclure le support I2C et le module Video For Linux BT848.
Une fois que votre noyau est pret, installez la version CK (actuellement en développement) des drivers Linux pour les
Hauppauge WinTV-PVR-250/350. Ils sont hébergés sur ivtv ck (http://67.18.1.101/~ckennedy/ivtv). Vous aurrez
besoin de patcher votre noyau pour l’utiliser avec un 2.4. Vous pouvez aussi utiliser la version CVS disponible ici :
ivtv.sourceforge.net (http://ivtv.sourceforge.net/) (cette version n’est plus développée). Vous devez céer le
péripérique et charger les modules. Ceci est détailé dans la documentation fournie avec les drivers.
Diffuser avec VLC
Note: Vous devez ajouter --enable-pvr à votre ./configure pour utiliser cette fonctionnalité.
% vlc -vvv --color pvr:/dev/video0:norm=secam:size=720x576:frequency=576250:
bitrate=3000000:maxbitrate=4000000 --cr-average 1000 --sout udp:192.168.0.42 --ttl 12
oÃ1 :
•
/dev/video0 est le périphérique correspondant a la carte d’encodage,
•
norm=secam est le nom du standard utilisé par le signal analogique (les valeurs possibles sont pal, secam et ntsc),
•
size=720x576 est la taille de la vidéo que vous voulez diffuser,
•
frequency=567250 est la fréquence en kHz de la chaine que vous voulez diffuser,
•
bitrate=3000000 est le débit moyen du flux,
47
Chapter 10. Diffuser depuis une carte d’encodage ou d’autres périphériques d’acquisition
•
maxbitrate=4000000 est le débit maximum du flux,
•
1000 est une valeur secrète pour contourner un bug de la carte.
•
192.168.0.42 est soit :
•
•
l’adresse IP de la machine vers laquelle vous souhaitez diffuser en unicast;
•
soit le nom DNS de la machine vers laquelle vous souhaitez diffuser en unicast;
•
ou une adresse IP multicast.
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
Diffuser avec la carte Visiontech Kfir
Installer les pilotes
Si vous voulez Ãa tre capable de diffuser depuis une carte Visiontech Kfir, vous devez installer ses pilotes Linux.
Téléchargez la dernière version de ces pilotes sur la page drivers download page
(http://www.linuxtv.org/download/mpeg2/) du site web LinuxTV (http://www.linuxtv.org/).
Decompressez le tarball et suivez les instructions ecrites dans le fichier INSTALL pour compiler et installer les drivers.
Note: Si vous avez un chipset VIA, vous devez désactiver l’USB dans votre BIOS.
Diffuser
% vlc -vvv --color kfir:/dev/video --sout udp:192.168.0.42 --ttl 12
oÃ1 :
• /dev/video
•
•
est le nom du péripérique correspondanta la carte Kfir
192.168.0.42 est soit :
•
l’adresse IP de la machine vers laquelle vous souhaitez diffuser en unicast;
•
soit le nom DNS de la machine vers laquelle vous souhaitez diffuser en unicast;
•
ou une adresse IP multicast.
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
48
Chapter 10. Diffuser depuis une carte d’encodage ou d’autres périphériques d’acquisition
Cartes et encodage logiciel
Sous GNU/Linux
Installer les drivers Vidéo pour Linux
Si vous voulez diffuser depuis une carte d’acquisition ou une webcam, un driver video4linux est nécessaire. Vous
pouvez trouver plus d’explication sur video4linux et les périphériques supportés ici (http://www.exploits.org/v4l).
Compilez le bon module pour votre péripérique et chargez le dans votre kernel. Certains modules video4linux sont
disponibles dans les kernels 2.4.x et 2.6.x, le patch est disponible sur le site web du Video4Linux HQ
(http://bytesex.org/v4l).
Vous pouvez tester votre péripérique en utilisant un des programmes listé à la section Video: TV and PVR/DVR de
cette page web (http://www.exploits.org/v4l/).
Les modules v4l2 fonctionneront aussi avec VLC.
Diffuser avec VLC
Note: Vous devez ajouter --enable-v4l a votre ./configure pour utiliser cette fonctionnalité.
% vlc -vvv --color v4l:/dev/video:norm=secam:frequency=543250:size=640x480:channel=0:adev=/dev/dsp:audio=0
--sout ’#transcode{vcodec=mp4v,acodec=mpga,vb=3000,ab=256,venc=ffmpeg{keyint=80,hurry-up,vt=800000},deinterla
Note: You can find all transcode options on this page : Utilisation avancée du flux de sortie en ligne de commande .
oÃ1 :
• /dev/video
est le péripérique correspondant à votre carte d’acquisition ou a votre webcam,
•
norm=secam est le nom du standard utilisé par le signal analogique (les valeurs possibles sont pal, secam et ntsc),
•
frequency=543250 est la fréquence de la chaine en kHz (Attention ! pour vlc < 0.6.1, Frequency est la fréquence de
la chaine en MHz multipliée par 16),
•
size=640x480 est la taille de la vidéo que vous souhaitez (vous pouvez aussi mettre une taille standard : subqcif
(128x96), qsif (160x120), qcif (176x144), sif (320x240), cif (352x288) ou vga (640x480)),
•
channel=0 est le numéro du cannal (généralement 0 est pour le tunner, 1 pour l’entrée composite et 2 pour
l’entée svideo),
•
adev=/dev/dsp est le péripérique audio,
•
audio=1 est le nombre de cannaux audio (généralement 0 est pour mono et 1 pour stéréo),
•
vcodec=mp4v correspond au format video que vous souhaitez utiliser (mp4v correspond à MPEG-4, mpgv correspond
à MPEG-1, et il y a aussi h263, DIV1, DIV2, DIV3, I420, I422, I444, RV24, YUY2),
•
acodec=mpga correspond au format audio que vous souhaitez utiliser (mpga correspond au MPEG audio layer 2, a52
corresponf à A52 i.e. son AC3),
•
vb=3000 est le débit de la vidéo en Kbit/s
•
ab=256 est la débit de l’audio en Kbit/s
49
Chapter 10. Diffuser depuis une carte d’encodage ou d’autres périphériques d’acquisition
•
venc=ffmpeg vous permet de choisir l’encodeur a utiliser avec :
•
keyint=80 correspond au nombre maximum d’images entre 2 images clefs
•
hurry-up permet a l’encodeur de réduire la qualité du flux si le processeur ne parvient pas a tenir le rythme lors
de l’encodage
•
vt=800000 est la tolérance en Kbit/s pour le débit de la vidéo en sortie
•
deinterlace dit a VLC de désentrelacer à la volée,
•
192.168.0.42 est soit :
•
•
l’adresse IP de la machine vers laquelle vous voulez émettre en unicast;
•
ou le nom DNS de la machine vers laquelle vous vous voulez émettre en unicast;
•
ou une adresse IP multicast.
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
Diffuser avec Directshow
Note: C’est possible uniquement avec Windows
Installez les pilotes de votre périphérique
Vous devez installer votre périphérique sous Windows avec les pilotes appropriés. Rien d’autre n’est nécessaire.
Diffuser avec VLC an ligne de commande
% C:\Program Files\VideoLAN\VLC\vlc.exe -vvv -I rc --ttl 12 dshow:// vdev="VGA USB Camera" adev="USB Camera"
Note: Vous devez préciser le chemin complet vers VLC ou éxecuter la commande depuis le bon répertoire.
•
vvv permet d’activer l’affichage de tous les messages
•
rc permet d’activer l’interface de controle à distance (console MS/DOS)
•
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui veut dire que le flux pourra traverser 11 routeurs),
•
vdev="VGA USB Camera" est le nom du périphérique que DirectShow utilisera (ceci n’est qu’un exemple),
•
adev="USB Camera" est le nom du périphérique audio,
50
Chapter 10. Diffuser depuis une carte d’encodage ou d’autres périphériques d’acquisition
•
size=640x480 est la taille de la vidéo que vous souhaitez (vous pouvez aussi mettre une taille standard : subqcif
(128x96), qsif (160x120), qcif (176x144), sif (320x240), cif (352x288) ou vga (640x480)),
•
239.255.42.12 est soit :
•
des adresses IP des machines vers lequelles vous voulez difuser en unicast
•
ou des adresses DNS des machines vers lequelles vous voulez difuser en unicast
•
ou une adresse IP multicast.
51
Chapter 11. Diffusion sur IPv6
Diffusion sur IPv6
Ce chapitre couvre les spécificités de la diffusion sur IPv6. Vous devriez quand mÃa me lire les chapitres
précédents si vous n’Ãa tes pas à l’aise avec la diffusion en général.
Prérequis
Votre système d’exploitation doit évidemment savoir gérer l’IPv6. C’est le cas, entre autres, de Windows XP/2003,
Linux 2.6, Mac OS X (à partir de la version 10.2). Windows 2000 et Linux 2.4 sont aussi supportés, mais leur pile IPv6
n’est pas aussi bonne : aussi nous conseillons de les mettre à jour si vous le pouvez. L’IPv6 doit Ãa tre correctement
configuré et fonctionner sur votre ordinateur ainsi que sur le réseau.
Sous Linux, le module du noyau ipv6 doit Ãa tre chargé (ou compilé en dur). Sous Windows, le support de l’IPv6 peut
Ãa tre installé en exécutant "ipv6 install" à partir de la ligne de commandes, ou par l’intermédiaire du paneau de
configuration du réseau.
Note: Sous Windows 2000, vous devez ajouter à la main une route de multicast IPv6 par défaut, grâce à la
commande suivante :
# ipv6 rtu ff::/8 4
oÃ1 le dernier nombre (4 dans cet exemple) est le numéro de votre vraie interface IPv6. Pour avoir la liste de vos
interfaces IPv6, exécutez la commande ipv6 if.
Warning
Sous Windows XP SP1, vous pouvez rencontrer des problèmes avec un firewall IPv6 caché. Pour
résoudre le problème, allez dans la liste des services Windows et arrÃa tez le service de pare-feu
IPv6. Vous devriez envisager d’installer le Service Pack 2 qui fournit un pare-feu intégré
IPv4/IPv6, configurable à l’aide de l’interface graphique.
Warning
Si vous utilisez VMWare sous Linux, vous devrez l’arrÃa ter et décharger les modules noyau de
VMWare, car nous avons constaté qu’ils empÃa chaient la diffusion IPv6 !
Limitations
Quelques fonctionnalités de VLC media player ne supportent toujours pas l’IPv6. En particulier, il n’est pas possible
d’utiliser le RTSP sur IPv6 à cause de la bibliothèque utilisée, Live.com, quine supporte pas l’IPv6 au moment de la
rédaction de ce document.
De plus, veuillez noter que, pour le moment, VLC utilise l’IPv4 par défaut dans la plupart des cas, étant utilisé par
la majorité. Ceci pourrait Ãa tre modifié afin d’Ãa tre plus transparent dans les prochaines versions.
52
Chapter 11. Diffusion sur IPv6
Diffuser avec VLC
Avec l’assistant de diffusion (interface graphique)
L’assistant de diffusion accepte les adresses IPv6 entre crochets, par exemple :
[2002:8ac3:802d:1242:211:11ff:fe25:e6b4]. Si vous spécifiez une adresse locale de lien, vous devrez
sûrement spécifier l’interface réseau à utiliser. Sous Unix, ceci peut Ãa tre fait de cette façon :
[fe80::211:11ff:fe25:e6b4%eth0] pour utiliser eth0. De mÃa me, sous Windows, vous pouvez spécifier
[fe80::211:11ff:fe25:e6b4%1] oÃ1 1 est le numéro de l’interface réseau, donné par le système
d’exploitation.
Si vous diffusez sur HTTP, notez que l’IPv6 est automatiquement utilisé par défaut (afin que les clients en IPv6 ou
IPv4 puissent se connecter).
Si vous voulez spécifier un nom d’hôte DNS, souvenez-vous que VLC résouds les DNS en IPv4 par défaut. Vous
devez soit préciser un nom d’hôte qui ne se résolve qu’en IPv6, soit activer l’option advanced "Forcer l’utilisation
d’IPv6" dans Préférences / Paramètres généraux / Entrée.
En ligne de commande
L’option de ligne de commande --ipv6 force l’utilisation de l’IPv6 par défaut (ie. l’IPv6 sera toujours tentée avant
l’IPv4).
% vlc -vvv video1.xyz --ipv6 --sout udp:[ff08::1] --ttl 12
oÃ1 :
est le fichier que vous désirez diffuser (vous pouvez par exemple utiliser dvdsimple:/dev/dvd pour
diffuser un DVD, ou n’importe quelle autre configuration d’entrée),
• video1.xyz
•
•
ff08::1 est soit :
•
l’adresse IPv6 de la machine vers laquelle vous désirez diffuser en unicast;
•
ou l’adresse IPv6 multicast.
12 est la valeur du TTL (Time To Live) de vos paquets IP (ce qui signifie que le flux peut traverser 11 routeurs
maximum).
Note: Sous Unix/Linux, il est possible que vous deviez "protéger" les crochets autour de l’adresse IPv6 :
% vlc -vvv video1.xyz --ipv6 --sout udp:\[ff08::1\] --ttl 12
Note: Il est possible que vous deviez spécifier l’interface réseau de sortie :
% vlc -vvv video1.xyz --ipv6 --sout udp:[ff08::1%eth0] --ttl 12
oÃ1 eth0 est le nom de l’interface réseau (sous Linux, elles sont nommées ethX , sous Mac OS X, c’est enX , et X
sous Windows, avec X le numéro approprié).
53
Chapter 11. Diffusion sur IPv6
Recevoir un flux en IPv6
Avec l’interface graphique
Cliquez sur Fichier / Ouvrir un flux réseau. Pour recevoir un flux UDP/RTP unicast envoyé à votre ordinateur, vous
devez sélectionner l’option "Forcer l’utilisation d’IPv6" (et probablement ajuster le port UDP de destination). Pour
recevoir un flux UDP multicast, sélectionnez l’option Multidiff. UDP/RTP, et précisez l’adresse multicast à laquelle
s’inscrire, entre crochets. La syntaxe des adresses IPv6 est expliquée dans la partie Diffusion sur IPv6 de ce chapitre.
En ligne de commande
Comme pour la diffusion, l’option de ligne de commande --ipv6 force l’utilisation de l’IPv6 par défaut (ie. l’IPv6 sera
toujours tentée avant l’IPv4).
% vlc -vvv --ipv6 udp:@[ff08::1]
Note: Sous Unix/Linux, il est possible que vous deviez "protéger" les crochets autour de l’adresse IPv6 :
% vlc -vvv --ipv6 udp:@\[ff08::1\]
Note: Il est possible que vous deviez spécifier l’interface réseau de sortie :
% vlc -vvv video1.xyz --ipv6 --sout udp:[ff08::1%eth0] --ttl 12
oÃ1 eth0 est le nom de l’interface réseau (sous Linux, elles sont nommées ethX , sous Mac OS X, c’est enX , et X
sous Windows, avec X le numéro approprié).
54
Appendix A. GNU General Public License
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU
General Public License is intended to guarantee your freedom to share and change free software - to make sure the
software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software
and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make
sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you
receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs;
and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender
the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you
modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the
rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these
terms so they know their rights.
We protect your rights with two steps:
1. copyright the software, and
2. offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for
this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they
have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a
free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have
made it clear that any patent must be licensed for everyone’s free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION
Section 0
This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be
distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and
a “work based on the Program ” means either the Program or any derivative work under copyright law: that is to say, a work
containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.
(Hereinafter, translation is included without limitation in the term “modification ”.) Each licensee is addressed as “you”.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The
act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a
55
Appendix A. GNU General Public License
work based on the Program (independent of having been made by running the Program). Whether that is true depends on
what the Program does.
Section 1
You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty;
keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the
Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in
exchange for a fee.
Section 2
You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and
copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of
these conditions:
1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any
change.
2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the
Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
3. If the modified program normally reads commands interactively when run, you must cause it, when started running for
such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright
notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may
redistribute the program under these conditions, and telling the user how to view a copy of this License.
Exception:: If the Program itself is interactive but does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the
Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms,
do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as
part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License,
whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the
intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the
Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
56
Appendix A. GNU General Public License
Section 3
You may copy and distribute the Program (or a work based on it, under Section 2 in object code or executable form under
the terms of Sections 1 and 2 above provided that you also do one of the following:
1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the
terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code,
to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This
alternative is allowed only for noncommercial distribution and only if you received the program in object code or
executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work,
complete source code means all the source code for all modules it contains, plus any associated interface definition files,
plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source
code distributed need not include anything that is normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering
equivalent access to copy the source code from the same place counts as distribution of the source code, even though third
parties are not compelled to copy the source along with the object code.
Section 4
You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your
rights under this License. However, parties who have received copies, or rights, from you under this License will not have
their licenses terminated so long as such parties remain in full compliance.
Section 5
You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to
modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this
License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your
acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or
works based on it.
Section 6
Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license
from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not
impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for
enforcing compliance by third parties to this License.
57
Appendix A. GNU General Public License
Section 7
If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent
issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of
this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy
simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not
distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License
would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section
is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity
of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system,
which is implemented by public license practices. Many people have made generous contributions to the wide range of
software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to
decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
Section 8
If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces,
the original copyright holder who places the Program under this License may add an explicit geographical distribution
limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such
case, this License incorporates the limitation as if written in the body of this License.
Section 9
The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time.
Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or
concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which
applies to it and "any later version", you have the option of following the terms and conditions either of that version or of
any later version published by the Free Software Foundation. If the Program does not specify a version number of this
License, you may choose any version ever published by the Free Software Foundation.
Section 10
If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write
to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving
the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY Section 11
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM,
TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
58
Appendix A. GNU General Public License
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
Section 12
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO
OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this
is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most
effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where
the full notice is found.
<one line to give the program’s name and a brief idea of what it does.> Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY;
for details type ‘show w’. This is free software, and you are welcome to redistribute it under certain conditions; type ‘show
c’ for details.
The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the General Public License. Of
course, the commands you use may be called something other than ‘show w’ and ‘show c’; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer"
for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program ‘Gnomovision’ (which makes passes at compilers)
written by James Hacker.
<signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice
59
Appendix A. GNU General Public License
This General Public License does not permit incorporating your program into proprietary programs. If your program is a
subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is
what you want to do, use the GNU Library General Public License instead of this License.
60