Architectures et protocoles multimédia pour le streaming et la

Transcription

Architectures et protocoles multimédia pour le streaming et la
Architectures et protocoles multimédia pour le streaming et la
visioconférence
13 octobre 2008
The world is sufficiently complex as it is without adding further confusion by blindly worshipping flexibility, particularly when one sees the mythical world of «many applications»
turning out to be a world of a single application whose access and evolution is controlled by a
single company. (Leonardo Chiariglione, MPEG-4 Group)
1
Objectif
Se familiariser avec les architectures et les standards multimédia. Comprendre l’importance
des standards pour le déploiement et l’interopérabilité des applications multimédia.
2
Technologies
Standards H261, H263,..., RTP/RTCP, RTSP, ...
Architectures JMF, Windows Media, ...
3
Déroulement
Vous allez effectuer une suite d’expérimentations seuls sur votre machine ou en coopération
avec votre voisin. Tous les fichiers nécessaires à ce TP se trouvent dans M:\be\in\2004-2005\maai.
Les fichiers médias se trouvent dans le sous-répertoire contenu. Afin d’avoir de meilleures performances, choisissez comme répertoire de travail un répertoire local (c:\temp, par exemple).
1
3.1
3.1.1
Fichiers multiplex simples
Prise en main de JMStudio
Pour le lancer, dans une fenêtre DOS faire java JMStudio [3].
– Chargez un clip fourni(life.avi, par exemple). Observez les controles du player : la
barre du temps média, les propriétés du clip etc ; CONSEIL : à l’issue de chaque lecture,
libérez proprement les ressources du player en effectuant un Close du menu File !
– Observer la chaı̂ne de traitement pour un clip qui comporte plusieurs pistes : dans le
menu, sélectionnez PlugInviewer. Pourquoi y a-t-il besoin d’un convertisseur YUV->
RGB ? Regardez l’entrée et la sortie du convertisseur. Quelle est l’utilité d’YUV par
rapport à RGB ?
– Pour avoir plus de détails, consultez le fichier log de JMF. Si celui-ci n’est pas créé,
activez sa création depuis le menu Preferences. Activez l’option de log avant d’ouvrir
le fichier (Cocher la case, choisir G:\ comme répertoire et faire Commit. Ignorer le
message d’erreur !). Quel est le délai de lancement du player (du moment où le clip est
sélectionné jusqu’à ce que la première image est affichée) ? Quel est le délai de lancement
après le prefetch ?
– JMF dispose de plusieurs renderers. Certains sont écrits entièrement en Java (LightWeightRenderer, par exemple) et d’autres ne sont que des capsules (wrappers) Java
pour des renderers natifs (comme DDRenderer, composant de DirectX). Pour comparer les renderers vidéos mentionnés, affichez un clip en plein écran. Observez la
fluidité. Ensuite, dans les préférences JMStudio faites monter en première position
LightWeightRenderer. Qu’observez-vous ?
– Utilisez le logiciel GraphEdit(fourni) pour visualiser la chaı̂ne de traitement mise en
place par DirectX Media (et donc celle utilisée par Windows Media Player). Choisissez
Open... et le clip topgun.mpg. Des composants de traitements (filters) peuvent être
ensuite ajoutés en utilisant le menu Graph/InsertFilters. Choisissez ensuite life.
avi. Quel problème rencontrez-vous ?
– Réaliser l’édition d’un fichier qui contient la piste son de life.avi et une piste vidéo obtenue par capture avec la caméra. D’abord, faire File/Render Media File pour life.
avi. Ensuite, choisir les composants : Périphérique de capture de flux/Logitech,
Video Compressors/Intel Indeo Video 4.5, DirectShow Filters/AviMux.
3.2
Visioconférence
Utilisez JMStudio pour réaliser une visioconférence avec un ou plusieurs de vos voisins.
Faites attention au choix des adresses IP, des ports et du TTL. Dans le menu File, choisissez
Transmit. Vous pouvez opter entre transmettre un fichier (diffusion de contenu, JMStudio se
comporte comme un «broadcaster») et transmettre la capture audio/vidéo (visioconférence).
Mettez en place l’émission d’un fichier (life.avi, par exemple) en multicast (adresses
224.0.0.XX) Lancez un récepteur toujours avec JMStudio.
Contraignez la diffusion à s’opérer en MJPEG. Observez le débit et la qualité associée du
flux choisi (mettez le player en plein écran pour mieux apprécier). Ensuite, faites varier la
qualité d’encodage (grâce au Plugin Viewer et observez le débit et la qualité en réception.
– Modifiez les paramètres de capture afin d’avoir un flux plus léger (résolution et/ou
nombre d’images/s plus petites) à l’aide du menu Capture Control. La transmission
(capture) doit être arrêtée (en mode pause) pour pouvoir faire ces modifications.
2
– Visualisez les statistiques RTCP à l’aide du menu RTPSessionControl. Analysez le
packet SR. Quelle est son utilité ?
– Vous venez d’utiliser RTPManager, l’implémentation JMF d’une pile RTP audio/vidéo
[16]. Quels sont les formats supportés par RTPManager ?
– Comment les buffers audio/vidéo sont-ils gérés ? Quels sont les paramètres pas défaut ?
(voir RTP Implementation Notes de [16]). Modifiez-les et observez le résultat ! Observez la chaı̂ne de traitement (coté émission et reception) avec PlugIn Viewer et dans le
fichier jmf.log.
.
Demandez au(x) voisin(s) d’y participer.
– Afin d’eviter un éventuel conflit d’adresses avec les autres étudiants, choisissez une
adresse multicast qui a, en dernière position, le dernier nombre de l’adresse unicast de
votre machine.
– Quel est l’intérêt du TTL ? Pourquoi conseille-t-on de le mettre à 1 pendant ce TP ?
– Nous cherchons volontairement à utiliser tous la même adresse multicast pour nos
émissions/réceptions : 224.2.2.2 si vous êtes en salle A-204 et 224.3.3.3 si vous êtes
en A-205. Que se passe-t-il ? Pourquoi ?
– Comment peut-on rendre publique une session de diffusion ou de visioconférence ? Quels
sont les protocoles IETF consacrés ?
– Comment RTPManager ([16]) gère la multiplicité des flux ? Comment peut-on distinguer
entre les différents flux (provenant d’une ou plusieurs machines) si on n’écoute qu’un seul
couple adresse/port multicast ? Pour répondre à ces questions, consultez la deuxième
partie du guide [17].
– JMF réalise la synchronisation de lèvres. Quels sont les mécanismes RTP/RTCP utilisés ?
4
Questions pratiques
– Les références bibliographiques vous seront très utiles. N’hésitez pas à les consulter !
– Evitez de travailler en permanence avec des fichiers qui se trouvent sur votre compte et
donc sur le serveur de fichiers du département. Nous y accédons tous en parallèle, et,
de plus, la charge induite au réseau peut être trop importante.
Références
[1] The MPEG-4 book, edited by Fernando Pereira and Touradj Ebrahimi, Prentice Hall,
2002
[2] Java Media Framework, Documentation, http://java.sun.com/products/java-media/
jmf/2.1.1/documentation.html
[3] JMStudio User’s Guide,
jmstudio/jmstudio.html
http://java.sun.com/products/java-media/jmf/2.1.1/
[4] RealOne, Real Networks, http://www.real.com
[5] Initiation au streaming media, Adobe,
pdfs/smprimer_fr.pdf
http://www.adobe.fr/products/premiere/
3
[6] RTSP, RFC 2326 http://www.ietf.org/rfc/rfc2326.txt
[7] RTP/RTCP, RFC 1889 http://www.ietf.org/rfc/rfc1889.txt
[8] MPEG4IP Project, http://mpeg4ip.sourceforge.net
[9] IETF A/V Transport Group,
html
http://www.ietf.org/html.charters/avt-charter.
[10] MPEG4IP Guide, http://www.everwicked.com/content/MPEG4IP_Guide
[11] W3C SMIL, http://www.w3.org/AudioVideo
[12] Tutoriel SMIL, http://www.cwi.nl/~media/publications/SMILTutorial.pdf
[13] Apple Darwin Streaming Server, http://developer.apple.com/darwin/projects/
streaming
[14] Setting up a relay, http://www.apple.com/quicktime/authoring/qtss/pgs/qt08a.
htm
[15] RTPManager,
support-rtp.html
http://java.sun.com/products/java-media/jmf/2.1.1/
[16] Java Media Framework API Guide,
jmf/2.1.1/guide
http://java.sun.com/products/java-media/
[17] Java Media Framework API Docs, http://java.sun.com/products/java-media/jmf/
2.1.1/apidocs
4