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>
<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>
> Voir cet exemple de document SMIL (nécessite RealPlayer)
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):
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:
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:
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>
<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
<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)