Easy-Micro

TECHNIQUE Technique Vidéo
Langage SMIL

Streaming et langage SMIL

Le langage SMIL (Synchronized Multimedia Integration Language) permet de réaliser un streaming avec plusieurs applications.

Pour réaliser un streaming avec plusieurs applications (comme une vidéo avec un diaporama ou des sous titres), il faut utiliser le langage SMIL (Synchronized Multimedia Integration Language).

Ce langage, basé sur le langage XML, est issu d'une recommandation du W3C (www.w3.org/AudioVideo) de juin 1998.

Il existe en effet autant de technique de streaming que de type de format vidéo. Suivant le format de votre vidéo, il vous faudra utiliser des techniques différentes.

Le langage SMIL permet l'intégration et la syncronisation des différents média. L'ensemble des médias sont référencés dans un seul document qui porte l'extension smi ou smil (comme monfichier.smil). Mais le langage SMIL n'est pas lu par tous les lecteurs vidéo. Seul les lecteurs RealPlayer de Real Networks et QuickTime de Apple supportent le langage SMIL.

Les exemples SMIL ci-dessous sont inspirés du site Real and Smil.

Exemple de document SMIL (version 1) pour le lecteur RealPlayer (smil_texte.smi) :
<smil>
<head>
<meta name="title" content="Exemple Easy-Micro de fichier SMIL" />
<meta name="author" content="Easy-micro.com" />
<meta name="copyright" content="(c)2005 Easy-Micro.org" />
<layout>
   <root-layout width="250" height="275" background-color="#c0c0c0" />
   <region id="image" left="4" top="210" height="60" width="120" z-index="1" />
   <region id="image1" left="126" top="210" height="60" width="120" z-index="2" />
   <region id="region_text" left="5" top="5" height="200" width="240" z-index="3" />
</layout>
</head>
<body>
<par>
   <textstream src="montexte.rt" region="region_text" fill="freeze" />
   <a href="http://www.easy-micro.com" show="new">
   <img src="images/monimage.gif" region="image" fill="freeze" /></a>
   <a href="http://www.easy-micro.com" show="new">
   <img src="images/monimage.gif" region="image1" fill="freeze" /></a>
</par>
</body>
</smil>

Le head du document ci-dessus permet de définir les emplacements des différents médias (avec les balises REGION). La scène est decrite avec la balise ROOT-LAYOUT (une scène de 250X275). Le body permet de définir les sources et la syncronisation des éléments qui composent ce document SMIL. La balise PAR (pour parallèle) permet de spécifier que les différents média seront joués simultanément (sinon balise SEQ). La balise FILL et son paramètre FREEZE indique que le média reste affiché après l'animation. La syncronisation du texte est défini dans un fichier RealText externe (montexte.rt) appelé via la balise TEXTSTREAM.

Voici le contenu de ce fichier RealText (montexte.rt):
<window type="generic" height="200" width="240" duration="8" bgcolor="with">
<center>
<font size="5" face="arial" color="#993300"><b>Le langage SMIL</b></font><br />
<time begin="2"/>
<b><a href="http://www.easy-micro.com">www.easy-micro.com</a></b><br/>
<time begin="3"/>vous explique comment réaliser<br/>
<time begin="4"/>un diaporama avec le langage SMIL<br/>
<time begin="6"/><a href="command:play()" target="_player"><b>Play again?</b></a>
</center>
</window>

La taille de la fenêtre (balise WINDOW) est la même que celle définie dans le document SMIL (200X240). La durée d'apparition du texte (balise DURATION) exprimé en seconde, est sensiblement supèrieure à la dernière balise TIME. La premiere ligne de texte apparaitra immédiatement tandis que les autres lignes apparaissent au bout de quelques secondes exprimée via la balise TIME et son paramètre BEGIN.
Si vous voulez que le texte disparaisse (comme avec des sous-titres), il faut rajouter une balise <CLEAR/> entre la balise TIME et le texte de chaque ligne. Exemple:

<time begin="3"/><clear/>un sous-titre
<time begin="4"/><clear/>un autre sous-titre

Attention: Dans le cas ou vous voulez faire dans votre fichier SMIL des liens absolus vers des fichiers vidéos ou RealText qui se trouvent sur un serveur de streaming Real (Helix Universal Server, donc), il faut utiliser, à la place du protocole habituel HTTP, le protocole RTSP (Real Time Streaming Protocol). Exemple:

<textstream src="rtsp://helixserver.exemple.com/montexte.rt" region="region_text" fill="freeze" />

> Voir un exemple de SMIL
avec défilement de texte et effet de transition d'images (nécessite RealPlayer)

Le défilement du texte est obtenu via le paramètre TYPE="SCROLLINGNEWS" attribué à la balise WINDOW d'un fichier RealMediaText externe (montexte2.rt). Les effets de transition d'images sont réalisés dans un fichier RealPix externe (image.rp) via la balise CROSSFADE et appelé depuis le fichier SMIL avec la balise REF à la place de la balise TEXTSTREAM. Pour plus d'infos sur le SMIL, découvrez l'excellent site Real and Smil dont une partie des exemples de cette page sont inspirés.


Sites utiles
Windows Media
Exemples de SMIL
Streaming (PDF)
Doc Real/SMIL
Streaming Solution
Real and Smil
Doc VideoLAN
Video en ligne


< Page précédente TECHNIQUE VIDéO Page suivante >