<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Le blog de NicoLargo &#187; Gstreamer</title> <atom:link href="http://blog.nicolargo.com/category/open-source/gstreamer-open-source-2/feed" rel="self" type="application/rss+xml" /><link>http://blog.nicolargo.com</link> <description>&#34;La connaissance est la seule chose qui s&#039;accroit lorsqu&#039;on la partage.&#34;</description> <lastBuildDate>Thu, 02 Sep 2010 08:38:02 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Scripts de transcodage de vidéos</title><link>http://blog.nicolargo.com/2010/07/scripts-de-transcodage-de-de-videos.html</link> <comments>http://blog.nicolargo.com/2010/07/scripts-de-transcodage-de-de-videos.html#comments</comments> <pubDate>Thu, 08 Jul 2010 08:21:33 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[mp4]]></category> <category><![CDATA[ogg]]></category> <category><![CDATA[transcodage]]></category> <category><![CDATA[ubuntu]]></category> <category><![CDATA[webm]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=3293</guid> <description><![CDATA[Il existe de nombreux logiciels pour transcoder (WIKI) une vidéo d&#8217;un format vers un autre. On peut notamment citer Transmageddon, Handbrake, VLC&#8230; Néanmoins, votre distribution GNU/Linux intègre le framework GStreamer permettant d&#8217;effectuer ces taches de transcodage directement en ligne de commande et sans installer de logiciel supplémentaire. En dehors du fait que c&#8217;est un bon [...]]]></description> <content:encoded><![CDATA[<p><img
style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-medium wp-image-3294" title="trailers - Navigateur de fichiers_006" src="http://blog.nicolargo.com/wp-content/uploads/2010/07/trailers - Navigateur-de-fichiers_006-300x217.png" alt="" width="300" height="217" />Il existe de nombreux logiciels pour transcoder (<a
href="http://fr.wikipedia.org/wiki/Transcodage"><em>WIKI</em></a>) une vidéo d&#8217;un format vers un autre. On peut notamment citer Transmageddon, Handbrake, VLC&#8230; Néanmoins, votre distribution GNU/Linux intègre le <a
href="http://blog.nicolargo.com/tag/gstreamer">framework GStreamer</a> permettant d&#8217;effectuer ces taches de transcodage directement en ligne de commande et sans installer de logiciel supplémentaire. En dehors du fait que c&#8217;est un bon exercice pour comprendre le fonctionnement de ce fabuleux framework, c&#8217;est également un moyen simple d&#8217;intégrer ce transcodage dans des scripts automatisés (par exemple, transcoder toutes les vidéos déposées dans un répertoire dans un format unique).</p><p>Nous allons dans ce billet voir comment effectuer ce transcodage dans trois formats &#8220;standard&#8221; (industriellement parlant&#8230;):</p><ul><li>MP4 avec codec vidéo <a
href="http://fr.wikipedia.org/wiki/H.264">H.264</a> et codec audio <a
href="http://fr.wikipedia.org/wiki/Advanced_Audio_Coding">AAC</a></li><li>OGG avec codec vidéo <a
href="http://fr.wikipedia.org/wiki/Theora">Theora</a> et codec audio <a
href="http://fr.wikipedia.org/wiki/Vorbis">Vorbis</a></li><li>WEBM avec codec vidéo <a
href="http://fr.wikipedia.org/wiki/VP8">VP8</a> et codec audio <a
href="http://fr.wikipedia.org/wiki/Vorbis">Vorbis</a></li></ul><h1>Installation des plugins GStreamer</h1><p>L&#8217;installation standard de GStreamer n&#8217;inclue pas la prise en charge de tout les codecs vidéos et audios. Afin de remédier à ça, je vous conseille d&#8217;installer &#8220;la totale&#8221; avec les commandes suivantes:</p><pre class="brush: bash;">

wget http://svn.nicolargo.com/ubuntupostinstall/trunk/gstreamerinstall.sh

chmod a+x ./gstreamerinstall.sh

sudo ./gstreamerinstall.sh

rm ./gstreamerinstall
</pre><p>Ces commandes vont récupérer un script maison qui va installer le <a
href="https://launchpad.net/~gstreamer-developers/+archive/ppa">PPA de l&#8217;équipe de développement de GStreamer</a>, puis installer les paquets GStreamer.</p><h1>Un peu de pipeline</h1><p>Je donnerai en fin d&#8217;article un lien vers trois scripts shell qui vont automatiser les phases de transcodage. Cependant, nous allons dans ce paragraphe voir comment faire un transcodage à la main en utilisant la commande gst-launch.</p><p>Pour illustrer notre exemple, prenons une vidéo au format .MOV (H.264 + AAC) que l&#8217;on soughaite convertir dans un format plus &#8220;libre&#8221;, c&#8217;est à dire WEBM (VP8 + VORBIS). La pipeline (ligne de commande) correspondante est la suivante:</p><pre class="brush: bash;">gst-launch -t filesrc location=source.mov ! progressreport ! decodebin name=decoder \

decoder. ! queue ! audioconvert ! vorbisenc ! queue ! \

webmmux name=muxer \

decoder. ! queue ! ffmpegcolorspace ! vp8enc ! queue ! \

muxer. muxer. ! queue ! filesink location=destination.webm
</pre><p>La première ligne (<em>filesrc location=source.mov ! progressreport ! decodebin name=decoder \</em>) permet de charger le fichier source au format .MOV et de décoder les pistes audio et vidéo.</p><p>La seconde ligne (<em>decoder. ! queue ! audioconvert ! vorbisenc ! queue ! \</em>) prend la piste audio du fichier source et la transcode au format VORBIS.</p><p>La troisième ligne (<em>webmmux name=muxer \</em>) précise que l&#8217;on utilisera un conteneur multimédia de destination de type Webm.</p><p>La quatrième ligne (<em>decoder. ! queue ! ffmpegcolorspace ! vp8enc ! queue ! \</em>) prend la piste vidéo du fichier source et la transcode au format VP8.</p><p>Enfin la dernière ligne (<em>muxer. muxer. ! queue ! filesink location=destination.webm</em>) prend les pistes audio et vidéo transcodées puis génère le fichier destination au format .WEBM.</p><h1>Des scripts ! Des scripts !</h1><p>&#8220;C&#8217;est bien beau la théorie mais moi je veux juste faire rapidement un transcodage&#8230;&#8221;&#8230;</p><p>Ok Michel, voici trois script shell permettant de faire un transcodage de n&#8217;importe quel type de vidéo vers un des formats suivants:</p><ul><li>Script <a
href="http://svn.nicolargo.com/gstpipelinearena/trunk/mp4encoder.sh"><strong>mp4encoder.sh</strong></a> pour transcoder en MP4 avec codec vidéo <a
href="http://fr.wikipedia.org/wiki/H.264">H.264</a> et codec audio <a
href="http://fr.wikipedia.org/wiki/Advanced_Audio_Coding">AAC</a></li><li>Script <a
href="http://svn.nicolargo.com/gstpipelinearena/trunk/oggencoder.sh"><strong>oggencoder.sh</strong></a> pour transcoder en OGG avec codec vidéo <a
href="http://fr.wikipedia.org/wiki/Theora">Theora</a> et codec audio <a
href="http://fr.wikipedia.org/wiki/Vorbis">Vorbis</a></li><li>Script <a
href="http://svn.nicolargo.com/gstpipelinearena/trunk/webmencoder.sh"><strong>webmencoder.sh</strong></a> pour transcoder en WEBM avec codec vidéo <a
href="http://fr.wikipedia.org/wiki/VP8">VP8</a> et codec audio <a
href="http://fr.wikipedia.org/wiki/Vorbis">Vorbis</a></li></ul><p>Pour les utiliser, il faut dans un premier temps les rendre executable avec la commande:</p><pre class="brush: bash;">

chmod a+x *encoder.sh
</pre><p>L&#8217;utilisation est des plus simple. Exemple de transcodage en MP4:</p><pre class="brush: bash;">

./mp4encoder.sh Inception-1080p.mov
</pre><p>Exemple de transcodage en OGG:</p><pre class="brush: bash;">

./oggencoder.sh Inception-1080p.mov
</pre><p>Exemple de transcodage en WEBM:</p><pre class="brush: bash;">

./webmencoder.sh Inception-1080p.mov
</pre><h1>Et si je veux modifier les paramètres de transcodage ?</h1><p>Ben c&#8217;est possible Miche, Nicolargo a pensé à toi. Il suffit d&#8217;éditer le script puis de mettre les paramètres dans la variable AUDIO_ENCODER_PARAMETERS pour le codec audio et VIDEO_ENCODER_PARAMETERS pour le codec vidéo.</p><p>Par exemple pour modifier le script <strong><a
href="http://svn.nicolargo.com/gstpipelinearena/trunk/webmencoder.sh">webmencoder.sh</a><span
style="font-weight: normal;"> afin d&#8217;encoder avec une qualité vidéo supérieure, il faut éditer le fichier et modifier la ligne suivante:</span></strong></p><p><strong> </strong></p><pre class="brush: bash;">VIDEO_ENCODER_PARAMETERS=&quot;quality=7 speed=2&quot;</pre><p><strong><span
style="font-weight: normal;">Pour avoir la liste des paramètres pour un codec (par exemple pour l&#8217;encodeur VP8 ; vp8enc), il faut saisir la commande suivante:</span></strong></p><p><strong> </strong></p><pre class="brush: bash;">gst-inspect vp8enc</pre><h1>Conclusion</h1><p>C&#8217;est à vous de jouer pour intégrer ces scripts dans vos processus d&#8217;automatisation de transcodage de vidéo/audio !</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=3293"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/07/scripts-de-transcodage-de-de-videos.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Mise à jour du script de screencast</title><link>http://blog.nicolargo.com/2010/07/mise-a-jour-du-script-de-screencast.html</link> <comments>http://blog.nicolargo.com/2010/07/mise-a-jour-du-script-de-screencast.html#comments</comments> <pubDate>Thu, 01 Jul 2010 12:37:34 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Video]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=3275</guid> <description><![CDATA[Il y quelques mois, j&#8217;avais écrit un script shell (MyScreenCast) permettant d&#8217;automatiser la création d&#8217;un screencast avec des outils libres disponibles sur les distributions GNU/Linux (notamment GStreamer). Affichage des touches / clicks souris Suite à un message de Sylvain, je viens d&#8217;ajouter une nouvelle option permettant d&#8217;afficher sur l&#8217;écran les touches cliqués (clavier et souris) [...]]]></description> <content:encoded><![CDATA[<p>Il y quelques mois, j&#8217;avais écrit un script shell (<a
href="http://blog.nicolargo.com/2010/04/myscreencast-comment-faire-du-screencast-avec-gstreamer.html">MyScreenCast</a>) permettant d&#8217;automatiser la création d&#8217;un screencast avec des outils libres disponibles sur les distributions GNU/Linux (notamment GStreamer).</p><h1>Affichage des touches / clicks souris</h1><p>Suite à un message de <a
href="http://sylvain.naud.in/">Sylvain</a>, je viens d&#8217;ajouter une nouvelle option permettant d&#8217;afficher sur l&#8217;écran les touches cliqués (clavier et souris) lors du screencast. J&#8217;utilise pour cela le logiciel libre <a
href="http://code.google.com/p/key-mon/">key-mon</a> (licence Apache v2).</p><p><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3276" title="key-mon-larger" src="http://blog.nicolargo.com/wp-content/uploads/2010/07/key-mon-larger.png" alt="" width="350" height="60" /></p><p>Comme il n&#8217;est pas encore disponible via un PPA, il faut installer le logiciel (version 1.2.2 au moment de l&#8217;écriture de ce billet) à la mimine:</p><pre class="brush: bash;">

wget -q http://key-mon.googlecode.com/files/keymon_1.2.2_all.deb

sudo dpkg -i keymon_1.2.2_all.deb

rm keymon_1.2.2_all.deb
</pre><h1><strong>Support de WebM</strong></h1><p>J&#8217;ai modifier le script pour qu&#8217;il demande à la fin de la capture le format dans lequel le screencast doit être compressé, les formats disponibles sont les suivants:</p><ul><li>H.264 (codec vidéo X.264 et audio AAC)</li><li>OGV (codec vidéo Théora et audio Vorbis)</li><li><a
href="http://blog.nicolargo.com/2010/05/encodage-de-video-webm-en-ligne-de-commande.html">WebM</a> (codec vidéo VP8 et audio Vorbis)</li></ul><h1>Comment tester ces nouvelles fonctions ?</h1><p>Il faut récupérer la dernière version du script:</p><p><a
href="http://svn.nicolargo.com/myscreencast/trunk/myscreencast.sh"><img
style=' float: left; padding: 4px; margin: 0 7px 2px 0;'  class="alignleft" title="download" src="http://blog.nicolargo.com/wp-content/uploads/2010/07/download.png" alt="" width="64" height="64" /></a><a
href="http://svn.nicolargo.com/myscreencast/trunk/myscreencast.sh">MyScreencast</a></p><p><em>version 0.9</em></p><p>Puis de lancer la ligne de commande suivante:</p><pre class="brush: bash;">

chmod a+x ./myscreencast.sh
./myscreencast.sh -k -w
</pre><p>PS1: le flag -k permet de lancer le logiciel key-mon</p><p>PS2: le flag -w permet, si vous avez une webcam d&#8217;afficher votre tête dans une fenêtre&#8230;</p><p>Je suis toujours preneur de pistes d&#8217;amèliorations sur ce script !</p><p>Bon screencast à vous !</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=3275"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/07/mise-a-jour-du-script-de-screencast.html/feed</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Installation de tous les composants GStreamer sous Ubuntu</title><link>http://blog.nicolargo.com/2010/05/installation-de-tout-les-composants-gstreamer-sous-ubuntu.html</link> <comments>http://blog.nicolargo.com/2010/05/installation-de-tout-les-composants-gstreamer-sous-ubuntu.html#comments</comments> <pubDate>Mon, 31 May 2010 15:39:03 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Systeme]]></category> <category><![CDATA[full]]></category> <category><![CDATA[gstreamer]]></category> <category><![CDATA[install]]></category> <category><![CDATA[ubuntu]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=3187</guid> <description><![CDATA[Voici un petit script maison permettant d&#8217;installer la totalité des plugins GStreamer sur votre distribution Ubuntu. On télécharge, le script, puis on le lance: wget http://svn.nicolargo.com/ubuntupostinstall/trunk/gstreamerinstall.sh chmod a+x ./gstreamerinstall.sh sudo ./gstreamerinstall.sh rm ./gstreamerinstall Vous devriez vous retrouver avec environ 230 plugins dont les fameux webmmux et vp8enc pour encoder vos vidéo au format WebM]]></description> <content:encoded><![CDATA[<p><a
href="http://blog.nicolargo.com/wp-content/uploads/2009/06/gstreamer-logo.png" rel="lightbox[3187]"><img
style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full  wp-image-1986" title="gstreamer-logo.png" src="http://blog.nicolargo.com/wp-content/uploads/2009/06/gstreamer-logo.png" alt="" width="290" height="73" /></a>Voici <a
href="http://svn.nicolargo.com/ubuntupostinstall/trunk/gstreamerinstall.sh">un petit script maison</a> permettant d&#8217;installer la totalité des plugins GStreamer sur votre distribution Ubuntu.</p><p>On télécharge, le script, puis on le lance:</p><pre class="brush: bash;">

wget http://svn.nicolargo.com/ubuntupostinstall/trunk/gstreamerinstall.sh

chmod a+x ./gstreamerinstall.sh

sudo ./gstreamerinstall.sh

rm ./gstreamerinstall
</pre><p>Vous devriez vous retrouver avec environ <em>230 plugins</em> dont les fameux <strong>webmmux</strong> et <strong>vp8enc</strong> pour <a
href="http://blog.nicolargo.com/2010/05/encodage-de-video-webm-en-ligne-de-commande.html">encoder vos vidéo au format WebM</a> <img
src='http://blog.nicolargo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=3187"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/05/installation-de-tout-les-composants-gstreamer-sous-ubuntu.html/feed</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Encodage de vidéo WebM en ligne de commande</title><link>http://blog.nicolargo.com/2010/05/encodage-de-video-webm-en-ligne-de-commande.html</link> <comments>http://blog.nicolargo.com/2010/05/encodage-de-video-webm-en-ligne-de-commande.html#comments</comments> <pubDate>Fri, 28 May 2010 05:45:56 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[encodage]]></category> <category><![CDATA[gstreamer]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[vorbis]]></category> <category><![CDATA[vp8]]></category> <category><![CDATA[webm]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=3155</guid> <description><![CDATA[Le format multimédia WebM fait beaucoup parler de lui ces derniers temps. Sous l&#8217;impulsion de Google, il a pour objectif de devenir le standard libre pour la diffusion de fichier vidéo sur Internet. Sans entrer dans les polémiques de qualité et des problèmes de licence, nous allons dans ce billet voir comment encoder un vidéo [...]]]></description> <content:encoded><![CDATA[<p>Le format multimédia <a
href="http://fr.wikipedia.org/wiki/WebM">WebM</a> fait beaucoup parler de lui ces derniers temps. Sous l&#8217;impulsion de Google, il a pour objectif de devenir le standard libre pour la diffusion de fichier vidéo sur Internet. Sans entrer dans les polémiques de qualité et des problèmes de licence, nous allons dans ce billet voir comment encoder un vidéo dans un format WebM en ligne de commande en utilisant le framework GStreamer, fourni en standard sous GNU/Linux.</p><h1>WebM, c&#8217;est quoi donc ?</h1><p>En fait WebM est un conteneur multimédia, une enveloppe au même titre que OGG, MP4  ou AVI. Quand on parle de fichiers au &#8220;format WebM&#8221;, cela sous entant l&#8217;utilisation des codecs audio <a
href="http://fr.wikipedia.org/wiki/Vorbis">Vorbis</a> et vidéo <a
href="http://fr.wikipedia.org/wiki/VP8">VP8</a> (racheté il y a quelques mois par Google à la societé On2).</p><p>Avant de tester l&#8217;encodage d&#8217;un fichier WebM sur votre distribution GNU/Linux. Sous Ubuntu, il faut d&#8217;abord vérifier que vous disposez de la dernière version PPA de GStreamer:</p><pre class="brush: bash;">

sudo add-apt-repository ppa:gstreamer-developers

sudo aptitude update

sudo aptitude upgrade

sudo aptitude install gstreamer0.10-x gstreamer-tools gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gstreamer0.10-ffmpeg gstreamer0.10-alsa gstreamer0.10-sdl
</pre><p>Enfin on vérifie que l&#8217;on a les bons plugins:</p><pre class="brush: bash;">

# gst-inspect | grep webmmux
matroska:  webmmux: WebM muxer

# gst-inspect | grep vp8enc
vp8:  vp8enc: On2 VP8 Encoder

gst-inspect | grep vorbisenc
vorbis:  vorbisenc: Vorbis audio encoder
</pre><p>Passons maintenant aux choses sérieurses&#8230;</p><h1>Encodage au format WebM</h1><p>Pour mes test j&#8217;ai utilisé une bande annonce du film &#8220;Prince of persia&#8221; en qualité HD 1080p <a
href="http://www.hd-trailers.net/movie/prince-of-persia-the-sands-of-time/">récupérée sur le site HDTrailers</a>.</p><p>J&#8217;utilise ensuite la pipeline (ligne de commande) suivante pour effectuer l&#8217;encodage:</p><pre class="brush: bash;">

gst-launch -t filesrc location=pp_rltA_1080.mov ! progressreport \
! decodebin name=decoder  decoder. \
! queue ! audioconvert ! vorbisenc quality=0.5 \
! queue !  webmmux name=muxer  decoder. \
! queue ! ffmpegcolorspace ! vp8enc quality=5 speed=2 \
! queue !  muxer. muxer. ! queue ! filesink location=pp_rltA_1080-Q5.webm
</pre><p>La qualité vidéo par défaut (option <em>quality=5</em>) n&#8217;est pas terrible, on obtient de meilleurs résultats en l&#8217;augmentent. Voici un tableau comparatif:</p><table><tbody><tr><td><strong>Format</strong></td><td><strong>Codecs</strong></td><td><strong>Taille</strong></td><td><strong>Aperçu (clique pour agrandir)</strong></td></tr><tr><td>Source HQ .mov</td><td>Audio: AAC 48 Khz<br
/> Video: H.264</td><td>126 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080.mov-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3157" title="Capture-pp_rltA_1080.mov-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080.mov-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>WebM</td><td>Audio: Vorbis</p><p>Video: VP8 &#8220;Quality 5&#8243;</td><td>24 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-5.webm-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3157" title="Capture-pp_rltA_1080-5.webm-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-5.webm-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>WebM</td><td>Audio: Vorbis</p><p>Video: VP8 &#8220;Quality 6&#8243;</td><td>30 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-6.webm-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3157" title="Capture-pp_rltA_1080-6.webm-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-6.webm-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>WebM</td><td>Audio: Vorbis</p><p>Video: VP8 &#8220;Quality 7&#8243;</td><td>40 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-7.webm-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3157" title="Capture-pp_rltA_1080-7.webm-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-7.webm-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>WebM</td><td>Audio: Vorbis</p><p>Video: VP8 &#8220;Quality 8&#8243;</td><td>61 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-8.webm-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3157" title="Capture-pp_rltA_1080-8.webm-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-8.webm-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>WebM</td><td>Audio: Vorbis</p><p>Video: VP8 &#8220;Quality 9&#8243;</td><td>73 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-9.webm-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3157" title="Capture-pp_rltA_1080-9.webm-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-9.webm-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>WebM</td><td>Audio: Vorbis</p><p>Video: VP8 &#8220;Quality 10&#8243;</td><td>92 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-10.webm-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3157" title="Capture-pp_rltA_1080-10.webm-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-10.webm-1-small.png" alt="" width="300" height="125" /></a></td></tr></tbody></table><p>Je trouve que la paramètre <em>quality=7</em> est un bon compromis taille/qualité. Il faut noter que la source est d&#8217;un  qualité nettement supérieure (je ne connais pas les paramètre H.264 utilisés).</p><h1>Comparaison avec les codecs Theora et H.264</h1><p>Pour compléter ce petit test de WebM, nous allons comparer maintenant le résultat obtenu avec le paramètre quality=7 et les codecs Theora (avec une qualité égale à 7) et X.264 (avec une qualité de 23 équivalente).</p><p>Voici les lignes de commandes utilisées, pour l&#8217;encodage en WebM (VP8/Vorbis):</p><pre class="brush: bash;">

gst-launch -t filesrc location=pp_rltA_1080.mov ! progressreport \
! decodebin name=decoder  decoder. \
! queue ! audioconvert ! vorbisenc quality=0.5 \
! queue !  webmmux name=muxer  decoder. \
! queue ! ffmpegcolorspace ! vp8enc quality=7 speed=2 \
! queue !  muxer. muxer. ! queue ! filesink location=pp_rltA_1080-Q7.webm
</pre><p>puis en OGG (Theora/Vorbis):</p><pre class="brush: bash;">

ffmpeg2theora  -v 7 --optimize pp_rltA_1080.mov -o pp_rltA-1080-Q7.ogg
</pre><p>et enfin en MP4 (X.264/FAAC):</p><pre class="brush: bash;">

x264 --tune animation --crf 23 -o pp_rltA-1080-Q7.mp4 pp_rltA_1080.mov
</pre><p>On obtient les résultats suivants:</p><table><tbody><tr><td><strong>Format</strong></td><td><strong>Codecs</strong></td><td><strong>Taille</strong></td><td><strong>Aperçu (clique pour agrandir)</strong></td></tr><tr><td>WebM</td><td>Audio: Vorbis</p><p>Video: VP8 &#8220;Quality 7&#8243;</td><td>40 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-Q7-vp8enc.webm-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3173" title="Capture-pp_rltA_1080-Q7-vp8enc.webm-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-Q7-vp8enc.webm-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>OGG</td><td>Audio: Vorbis</p><p>Video: Theora &#8220;-v 7&#8243;</td><td>57 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-Q7-ffmpeg2theora.ogg-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3171" title="Capture-pp_rltA_1080-Q7-ffmpeg2theora.ogg-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-Q7-ffmpeg2theora.ogg-1-small.png" alt="" width="300" height="125" /></a></td></tr><tr><td>MP4</td><td>Audio: AAC</p><p>Video: X.264 &#8220;CRF 23&#8243;</td><td>56 Mo</td><td><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-Q7-x264enc.mp4-1.png" rel="lightbox[3155]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-full wp-image-3175" title="Capture-pp_rltA_1080-Q7-x264enc.mp4-1-small" src="http://blog.nicolargo.com/wp-content/uploads/2010/05/Capture-pp_rltA_1080-Q7-x264enc.mp4-1-small.png" alt="" width="300" height="125" /></a></td></tr></tbody></table><p>Que peut on en déduire ? Niveau qualité, le format H.264 garde une longueur d&#8217;avance (mais pour combien de temps). Theora est en dessous. Par contre le taux de compression est bien meilleur avec le codec VP8 mais encore faut il être sur que l&#8217;on peut comparer les paramètres utilisés&#8230;</p><p>A vous de vous faire une idée !</p><h1>Conclusion</h1><p>Bien que &#8220;jeune&#8221; ce format de fichier semble avoir un bel avenir. Surtout si Google arrive à l&#8217;imposer comme un &#8220;standard industriel&#8221; (sic). Avec des leviers comme YouTube et Google Chrome, j&#8217;ai peu de doute sur le résultat des courses qui ne se fera pas sur un plan technique mais sur la capacité de chacun de défendre son format.</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=3155"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/05/encodage-de-video-webm-en-ligne-de-commande.html/feed</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>MyScreenCast, comment faire du screencast avec GStreamer</title><link>http://blog.nicolargo.com/2010/04/myscreencast-comment-faire-du-screencast-avec-gstreamer.html</link> <comments>http://blog.nicolargo.com/2010/04/myscreencast-comment-faire-du-screencast-avec-gstreamer.html#comments</comments> <pubDate>Thu, 29 Apr 2010 12:12:13 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[aac]]></category> <category><![CDATA[gstreamer]]></category> <category><![CDATA[H.264]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[mp4]]></category> <category><![CDATA[ogg]]></category> <category><![CDATA[screencast]]></category> <category><![CDATA[theora]]></category> <category><![CDATA[vorbis]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=3047</guid> <description><![CDATA[Je ne sais pas vous mais je n&#8217;arrive pas à trouver LE logiciel de screencast libre ultime pour mon PC Linux. J&#8217;ai essayé Istanbul (le résultat est très mauvais sur ma distribution Ubuntu 10.04), XVidCap (pas d&#8217;enregistrement du son) et même VLC (un peu usine à gaz pour ce besoin)&#8230; Seul RecordMyDesktop sort du lot bien [...]]]></description> <content:encoded><![CDATA[<p>Je ne sais pas vous mais je n&#8217;arrive pas à trouver <strong>LE</strong> logiciel de screencast libre ultime pour mon PC Linux. J&#8217;ai essayé <a
href="http://live.gnome.org/Istanbul">Istanbul</a> (le résultat est très mauvais sur ma distribution Ubuntu 10.04), <a
href="http://xvidcap.sourceforge.net/">XVidCap</a> (pas d&#8217;enregistrement du son) et même <a
href="http://blog.nicolargo.com/2008/09/screencast-facile-avec-vlc-media-player.html">VLC</a> (un peu usine à gaz pour ce besoin)&#8230; Seul <a
href="http://recordmydesktop.sourceforge.net/about.php">RecordMyDesktop</a> sort du lot bien que son interface graphique d&#8217;administration (gtk-recordmydesktop) ne soit pas des plus ergonomique.</p><p>Ce billet est donc un appel à la communauté pour développer <strong>CE</strong> logiciel en question !</p><p>Nous allons dans un premier temps donner les bases techniques permettant de faire un screencast à partir du framework <a
href="http://blog.nicolargo.com/category/open-source/gstreamer-open-source-2">GStreamer</a> (fourni en standard sous Linux). Puis donner dans les grandes largeurs les spécifications <strong>DU</strong> logiciel.</p><h1>On commence par la fin: le résultat</h1><p>Voici le screencast obtenu (format libre OGV  &#8211; Theora/Vorbis &#8211; hébergé sur blip.tv): si votre navigateur est compatible&#8230;</p><p
style="text-align: center;"><video
src="http://blip.tv/file/get/Nicolargo-ExempleDeScreencastAvecGStreamer323.ogv" width="580" height="362" controls></video></p><p>Sinon vous pouvez toujours consulter la vidéo en ligne sur <a
href="http://blip.tv/file/3553672">Blip.tv</a> ou sur <a
href="http://vimeo.com/11322222">Vimeo</a> (codec H.264/AAC)</p><p><em>Les fichiers générés sont au format HD 720p et ont une taille d&#8217;environ 11 Mo pour le format M4V et 13 Mo pour le format OGV.</em></p><h1>Screencast avec GStreamer en ligne de commande</h1><p>On commence par vérifier que l&#8217;on dispose bien du plugin gstreamer istximagesrc:</p><pre class="brush: bash;">

gst-inspect istximagesrc
...
version 0.2.2
...
</pre><p>Si ce n&#8217;est pas le cas, il suffit d&#8217;installer le package Istanbul qui inclue ce plugin:</p><pre class="brush: bash;">

sudo aptitude install istanbul
</pre><p>Aller, une fois ces menus préparatifs passés,  on commence par lancer un capture vidéo de l&#8217;écran et sonore en utilisant la ligne de commande GStreamer (pipeline) suivante:</p><pre class="brush: bash;">

gst-launch avimux name=mux ! filesink location=screencast.avi \
 alsasink ! audioconvert ! queue ! mux. \
 istximagesrc name=videosource use-damage=false ! video/x-raw-rgb,framerate=10/1 \
 ! ffmpegcolorspace ! queue ! videorate ! ffmpegcolorspace ! videoscale method=1 \
 ! video/x-raw-yuv,width=1152,height=720,framerate=10/1 ! mux.
</pre><p>Cette commande va capturer l&#8217;écran à <strong>10 images par secondes</strong> (istximagesrc), le son (alsasink) et mixer le tout (sans compression mais avec une redimensionnement de la vidéo au<strong> format 720p</strong>) dans un fichier temporaire au format AVI. Ce fichier aura une taille très importante mais c&#8217;est juste une étape temporaire avant la compression.</p><p>Pour cette compression j&#8217;utilise deux pipelines permettant de générer des screencasts au format libre OGV (Theora/Vorbis) et propriétaire M4V (H.264/AAC), comme cela, <a
href="http://blog.nicolargo.com/2009/10/utiliser-le-tag-video-html-5-dans-wordpress.html">tous les navigateurs sont heureux</a>:</p><pre class="brush: bash;">

gst-launch filesrc location=screencast.avi ! decodebin name=&quot;decode&quot; \
 decode. ! videoparse format=1 width=1152 height=720 framerate=10/1 \
 ! queue ! ffmpegcolorspace ! theoraenc ! queue ! \
 oggmux name=mux ! filesink location=screencast.ogv \
 decode. ! queue ! audioconvert ! vorbisenc ! queue ! mux.

 gst-launch filesrc location=screencast.avi ! decodebin name=&quot;decode&quot; \
 decode. ! videoparse format=1 width=1152 height=720 framerate=10/1 \
 ! queue ! ffmpegcolorspace ! x264enc pass=4 quantizer=23 threads=0 ! queue ! \
 ffmux_mp4 name=mux ! filesink location=screencast.m4v \
 decode. ! queue ! audioconvert ! faac tns=true ! queue ! mux.
</pre><h1>Un script qui fait tout&#8230;</h1><p>Comme je suis un bon loulou, <a
href="http://svn.nicolargo.com/myscreencast/trunk/myscreencast.sh">voici un script shell</a> qui automatise</p><ol><li>le lancement de votre Webcam pour avoir une incrustation de votre image dans le screencast</li><li>le lancement de la capture video de l&#8217;écran + capture audio (après un délais de 3 secondes histoire de refaire son nœud de cravate)</li><li>(on arrête la capture en faisant un CTRL-C dans la fenêtre)</li><li>la compression du screencast dans un fichier screencast-dateetheure.ogv (codec Theora/Vorbis)</li><li>la compression du screencast dans un fichier screencast-dateetheure.m4v  (codec H.264/AAC)</li><li>la suppression du fichier temporaire</li></ol><p>A télécharger ici: <a
href="http://svn.nicolargo.com/myscreencast/trunk/myscreencast.sh">http://svn.nicolargo.com/myscreencast/trunk/myscreencast.sh</a></p><p>Vous pouvez éditer le fichier et notamment la configuration suivante:</p><pre class="brush: bash;">

### Variables à ajuster selon votre configuration
AUDIODEVICE=&quot;alsasrc&quot;
WEBCAMDEVICE=&quot;/dev/video0&quot;
WEBCAMHEIGHT=&quot;240&quot;
OUTPUTHEIGHT=&quot;720&quot;
OUTPUTFPS=&quot;10&quot;
### Fin des variables à ajuster
</pre><h1>&#8230; en attendant LE programme ultime</h1><p>qui devra reprendre en gros les étapes de mon script mais en ajoutant:</p><ul><li>une interface graphique</li><li>le choix d&#8217;une portion de l&#8217;écran à capturer</li><li>le choix d&#8217;une application (fenêtre) à capturer</li><li>le choix de la source audio (mixage possible avec <a
href="http://jackaudio.org/">la librairie Jack</a>)</li><li>paramétrage fin des codecs audio et video</li></ul><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=3047"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/04/myscreencast-comment-faire-du-screencast-avec-gstreamer.html/feed</wfw:commentRss> <slash:comments>26</slash:comments> <enclosure
url="http://blip.tv/file/get/Nicolargo-ExempleDeScreencastAvecGStreamer323.ogv" length="13595352" type="video/ogg" /> </item> <item><title>Maintenir à jour FFMpeg et X.264 sous Ubuntu</title><link>http://blog.nicolargo.com/2010/04/maintenir-a-jour-ffmpeg-et-x-264-sous-ubuntu.html</link> <comments>http://blog.nicolargo.com/2010/04/maintenir-a-jour-ffmpeg-et-x-264-sous-ubuntu.html#comments</comments> <pubDate>Tue, 27 Apr 2010 05:52:50 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Systeme]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[ffmpeg]]></category> <category><![CDATA[install]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[ubuntu]]></category> <category><![CDATA[update]]></category> <category><![CDATA[X.264]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=3048</guid> <description><![CDATA[Dans la série petits scripts permettant de gagner du temps, je vous présente ffmpeginstall.sh et ffmpegupdate.sh. Ils se basent sur un post du forum Ubuntu qui est régulièrement mis à jour à chaque version d&#8217;Ubuntu. ffmpeginstall.sh permet d&#8217;installer les dernières versions de FFMpeg (svn) et du codec X.264 (git) à partir des sources. ffmpegupdate.sh permet [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/X264.png" rel="lightbox[3048]"><img
style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-3050" title="X264" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/X264-e1272295222901.png" alt="" width="150" height="44" /></a><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/ffmpeg-logo.png" rel="lightbox[3048]"><img
style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-3049" title="ffmpeg-logo" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/ffmpeg-logo-e1272295171658.png" alt="" width="150" height="37" /></a>Dans la série petits scripts permettant de gagner du temps, je vous présente <a
href="http://svn.nicolargo.com/ubuntupostinstall/trunk/ffmpeginstall.sh">ffmpeginstall.sh</a> et <a
href="http://svn.nicolargo.com/ubuntupostinstall/trunk/ffmpegupdate.sh">ffmpegupdate.sh</a>. Ils se basent sur <a
href="http://ubuntuforums.org/showthread.php?t=786095">un post du forum Ubuntu</a> qui est régulièrement mis à jour à chaque version d&#8217;Ubuntu.</p><ol><li><a
href="http://svn.nicolargo.com/ubuntupostinstall/trunk/ffmpeginstall.sh">ffmpeginstall.sh</a> permet d&#8217;installer les dernières versions de FFMpeg (svn) et du codec X.264 (git) à partir des sources.</li><li><a
href="http://svn.nicolargo.com/ubuntupostinstall/trunk/ffmpegupdate.sh">ffmpegupdate.sh</a> permet de mettre à jour ces deux logiciels à partir des sources.</li></ol><p>Suivi des modifications:</p><ul><li>26/04/2010: Scripts version 0.1 (validé sous Ubuntu 9.10 et 10.04)</li></ul><h1>Récupération des scripts</h1><p>On commence par récupérer les scripts:</p><pre class="brush: bash;">

mkdir ~/src

cd ~/src

wget http://svn.nicolargo.com/ubuntupostinstall/trunk/ffmpeginstall.sh

wget http://svn.nicolargo.com/ubuntupostinstall/trunk/ffmpegupdate.sh

chmod a+ ffmpeg*.sh
</pre><h1>Lancement des scripts</h1><p>Pour une installation initiale:</p><pre class="brush: bash;">

cd ~src

./ffmpeginstall.sh
</pre><p>Pour une mise à jour:</p><pre class="brush: bash;">

cd ~src

./ffmpegupdate.sh
</pre><h1>Le résultat</h1><pre class="brush: bash;">

ffmpeg -version
FFmpeg version SVN-r22965, Copyright (c) 2000-2010 the FFmpeg developers
 built on Apr 26 2010 16:57:27 with gcc 4.4.3
 configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab

x264 --version
x264 0.94.1564 a927654
built on Apr 26 2010, gcc: 4.4.3
</pre><h1>Et si je veux revenir avec les versions systèmes ?</h1><p>Rien de plus simple, il suffit de saisir la commande suivante:</p><pre class="brush: bash;">

sudo apt-get remove x264 ffmpeg build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
</pre><p>Je suis preneur de tout retour/amélioration sur ces scripts&#8230;</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=3048"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/04/maintenir-a-jour-ffmpeg-et-x-264-sous-ubuntu.html/feed</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Configuration pas à pas d&#8217;un serveur de streaming Flumotion</title><link>http://blog.nicolargo.com/2010/04/configuration-pas-a-pas-dun-serveur-de-streaming-flumotion.html</link> <comments>http://blog.nicolargo.com/2010/04/configuration-pas-a-pas-dun-serveur-de-streaming-flumotion.html#comments</comments> <pubDate>Thu, 22 Apr 2010 05:58:27 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[flumotion]]></category> <category><![CDATA[gstreamer]]></category> <category><![CDATA[server]]></category> <category><![CDATA[serveur]]></category> <category><![CDATA[streaming]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=3027</guid> <description><![CDATA[Flumotion est un projet de serveur de streaming vidéo open-source distribué sous licence GPL. Développé en Python et basé sur les frameworks Twisted et GStreamer, il permet de diffuser sur un réseau des vidéos venant de sources lives (caméra, tv&#8230;) ou stockées dans des fichiers (on parle alors de VoD pour Video à la demande) [...]]]></description> <content:encoded><![CDATA[<p>Flumotion est un projet de serveur de streaming vidéo open-source distribué sous licence GPL. Développé en Python et basé sur les frameworks <a
href="http://twistedmatrix.com/trac/">Twisted </a>et <a
href="http://gstreamer.freedesktop.org/">GStreamer</a>, il permet de diffuser sur un réseau des vidéos venant de sources lives (caméra, tv&#8230;) ou stockées dans des fichiers (on parle alors de VoD pour Video à la demande) en proposant un interface utilisateur de type Web (vous pouvez <a
href="http://www.flumotion.com/demosite/">voir une démo ici</a>).</p><p
style="text-align: left;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Flumotion-Demosite.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-large wp-image-3028 aligncenter" title="Flumotion - Demosite" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Flumotion-Demosite-580x439.png" alt="" width="580" height="439" /></a></p><h1 style="text-align: left;"><span
id="more-3027"></span>Installation de Flumotion sous Ubuntu</h1><p
style="text-align: left;">A partir des dépôts (sous Ubuntu 9.04, 9.10 ou 10.04):</p><pre class="brush: bash;">

sudo aptitude install flumotion
</pre><p
style="text-align: left;">Ou alors en compilant <a
href="http://www.flumotion.net/download/">depuis les sources</a>.</p><p
style="text-align: left;">Le serveur Flumotion qui se compose de deux daemon (flumotion-manager et flumotion-worker) devrait se lancer automatiquement à la fin de l&#8217;installation:</p><p
style="text-align: left;"><em><strong>* Restarting Flumotion Streaming Server flumotion                       [ <span
style="color: #008000;">OK</span> ]</strong></em></p><pre class="brush: bash;">

ps auxw | grep flumotion

118      17263  0.0  0.6  18784 13252 ?        S    16:46   0:00 /usr/bin/python /usr/bin/flumotion-manager -D --daemonize-to /var/cache/flumotion --service-name default /etc/flumotion/managers/default/planet.xml
118      17291  0.0  0.5  26604 11412 ?        Sl   16:46   0:00 /usr/bin/python /usr/bin/flumotion-worker -D --daemonize-to /var/cache/flumotion --service-name default /etc/flumotion/workers/default.xml
</pre><h1 style="text-align: left;">Configuration de Flumotion</h1><p>Nous allons configurer Flumotion pour faire de la vidéo à la demande (comme Youtube ou Daily Motion) . Pour celà il faut d&#8217;abord créer un répertoire sur le serveur dans lequel les vidéos seront mises à disposition (<strong>/home/flumotion/Videos</strong> dans mon cas).</p><pre class="brush: bash;">

sudo mkdir /home/flumotion
sudo chown -R flumotion:flumotion flumotion
</pre><p>Puis y copier quelques vidéos pour vos tests Par exemple j&#8217;ai récupéré sur le site <a
href="http://www.hd-trailers.net/">HD-Trailer</a> des bandes  annonces  HD 720p au format MOV/H.264/AAC que j&#8217;ai converti en utilisant les codecs libres Theora/Vorbis (le seul, l&#8217;unique / fin de troll).</p><pre class="brush: bash;">

ffmpeg2theora -v 6 -y 240 shutterisland-720p.mov -o shutterisland-240p.ogv
ffmpeg2theora -v 6 -y 480 shutterisland-720p.mov -o shutterisland-480p.ogv
ffmpeg2theora -v 8 -y 720 shutterisland-720p.mov -o  shutterisland-720p.ogv
</pre><p>L&#8217;interface graphique d&#8217;administration de Flumotion peut être lancé en lugne de commande (flumotion-admin) ou via le menu &#8220;<strong>Application &gt; Son et vidéo &gt; Flumotion Streamin server administration</strong>&#8220;.</p><p>On commence par configurer l&#8217;administrateur pour se connecter sur le serveur actuellement lancé:</p><p
style="text-align: left;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Connexions-de-Flumotion_008.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-3034 aligncenter" title="Connexions de Flumotion_008" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Connexions-de-Flumotion_008.png" alt="" width="433" height="482" /></a></p><p
style="text-align: left;">Puis rentre les informations sur le serveur (nom d&#8217;hôte et port, par défaut 7531):</p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Connexions-de-Flumotion_009.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-3035 aligncenter" title="Connexions de Flumotion_009" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Connexions-de-Flumotion_009.png" alt="" width="433" height="482" /></a></p><p>Enfin on entre le login/password d&#8217;administration (par défaut user/test). Pour changer le login/password, il faut éditer les fichiers  /etc/flumotion/managers/default/planet.xml et /etc/flumotion/workers/default.xml puis relancer flumotion (# sudo /etc/init.d/flumotion restart).</p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Connexions-de-Flumotion_010.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-3036 aligncenter" title="Connexions de Flumotion_010" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Connexions-de-Flumotion_010.png" alt="" width="433" height="482" /></a></p><p>La fenêtre suivante devrait apparaitre (sinon il faut aller cliquer dans  le menu <strong>Controler &gt; Lancer l&#8217;assistant</strong>):</p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_011.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-large wp-image-3030 aligncenter" title="Assistant de Configuration de Flumotion_011" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_011-580x382.png" alt="" width="580" height="382" /></a></p><p>On demande la création d&#8217;un serveur de vidéo à la demande (VoD):</p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_012.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-large wp-image-3031 aligncenter" title="Assistant de Configuration de Flumotion_012" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_012-580x382.png" alt="" width="580" height="382" /></a></p><p>On entre ensuite le répertoire ou se trouve les vidéos (/home/flumotion/Videos par exemple), le port sur lequel le serveur va répondre, un éventuel point de montage (si vous voulez que le serveur réponde à l&#8217;URL http://serveur:8800/pointdemontage) ainsi que l&#8217;emplacement du fichier de log.</p><p
style="text-align: left;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_013.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-large wp-image-3032 aligncenter" title="Assistant de Configuration de Flumotion_013" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_013-580x382.png" alt="" width="580" height="382" /></a></p><p
style="text-align: left;">Et enfin:</p><p
style="text-align: left;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_014.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-large wp-image-3033 aligncenter" title="Assistant de Configuration de Flumotion_014" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Assistant-de-Configuration-de-Flumotion_014-580x382.png" alt="" width="580" height="382" /></a></p><h1>Test de Flumotion</h1><p>Il ne reste plus qu&#8217;a pointer un navigateur Web sur l&#8217;adresse http://<strong>addresseserveur</strong>:<strong>8800</strong>/<strong>fichiervideo.ogg</strong></p><p>Par exemple, si j&#8217;ouvre l&#8217;URL http://localhost:8800/shutterisland-240p.ogv avec un Firefox (compatible HTML5 et Theora) la video va s&#8217;afficher et il est possible d&#8217;utiliser les boutons de contrôle du playeur HTML5 (play / stop / pause / dépacement dans la vidéo).</p><p><a
href="http://blog.nicolargo.com/wp-content/uploads/2010/04/Sélection_018.png" rel="lightbox[3027]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-large wp-image-3038 aligncenter" title="Sélection_018" src="http://blog.nicolargo.com/wp-content/uploads/2010/04/Sélection_018-580x395.png" alt="" width="580" height="395" /></a></p><p>J&#8217;ai testé sur un LAN jusqu&#8217;a des résolutions HD de 720p et même 1080p et la vidéo s&#8217;affiche rapidement (moins de 3 secondes entre l&#8217;affichage de la page HTML et le début du streaming) et de manière fluide (pas de coupure ou d&#8217;arrêt).</p><p>Si vous souhaitez heberger votre serveur Flumotion sur Internet, il faudra bien évidemment vérifier que le FAI autorise se genre de traffic de streaming dans le contrat et qu&#8217;il n&#8217;y a pas de  limite en terme de volume ni de goulet d&#8217;étranglement en terme de débit.</p><h1>Conclusion</h1><p>Il ne vous reste plus qu&#8217;a &#8220;web coder&#8221; la présentation autour des vidéos (avec du HTML/CSS /JS par exemple) et vous êtes fin prés pour concurrence Vimeo and co !</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=3027"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/04/configuration-pas-a-pas-dun-serveur-de-streaming-flumotion.html/feed</wfw:commentRss> <slash:comments>13</slash:comments> </item> <item><title>Streaming vidéo SD avec Gstreamer</title><link>http://blog.nicolargo.com/2010/02/streaming-video-hd-avec-gstreamer.html</link> <comments>http://blog.nicolargo.com/2010/02/streaming-video-hd-avec-gstreamer.html#comments</comments> <pubDate>Tue, 16 Feb 2010 10:03:11 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Reseau]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[gstreamer]]></category> <category><![CDATA[hd]]></category> <category><![CDATA[streaming]]></category> <category><![CDATA[X.264]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=2471</guid> <description><![CDATA[Nous allons dans ce billet essayer d&#8217;optimiser le streaming d&#8217;un flux SD sur un réseau local (LAN de 100 Mbps) en utilisant le framework GStreamer. Environnement des tests Deux PC Ubuntu connectés sur un même switch (100 Mbps full-duplex). PC serveur: ﻿Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz / 2 Go RAM PC client: ﻿Intel(R) Core(TM)2 Duo [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://blog.nicolargo.com/wp-content/uploads/2008/06/poster-bunny-small1.jpg" rel="lightbox[2471]"><img
style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-1010" title="poster-bunny-small.jpg" src="http://blog.nicolargo.com/wp-content/uploads/2008/06/poster-bunny-small1.jpg" alt="" width="132" height="200" /></a></p><p>Nous allons dans ce billet essayer d&#8217;optimiser le streaming d&#8217;un flux SD sur un réseau local (LAN de 100 Mbps) en utilisant le framework GStreamer.</p><h1>Environnement des tests</h1><p>Deux PC Ubuntu connectés sur un même switch (100 Mbps full-duplex).</p><ul><li>PC serveur: ﻿Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz / 2 Go RAM</li><li>PC client: ﻿Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz / 1 Go RAM</li></ul><p>GStreamer version 0.10.25.</p><p>Vidéo source: <a
href="http://mirror.bigbuckbunny.de/peach/bigbuckbunny_movies/big_buck_bunny_480p_stereo.ogg">Big Buck Bunny 480p</a></p><h1>Tests avec le codec X.264</h1><pre>Ligne de commande sur la machine générant le streaming (serveur):
<pre class="brush: bash;">
serveur&gt; gst-launch -v \
        filesrc location=&quot;../Vidéos/big_buck_bunny_480p_stereo.ogg&quot; \
        ! queue ! decodebin \
        ! queue ! videoscale method=1 ! video/x-raw-yuv,width=854,height=480 \
        ! queue ! videorate ! video/x-raw-yuv,framerate=\(fraction\)24/1 \
        ! queue ! x264enc byte-stream=true bitrate=2000 bframes=4 ref=4 me=hex subme=4 weightb=true threads=0 \
        ! queue ! rtph264pay \
        ! queue ! udpsink port=5000 host=192.168.29.150 sync=false async=false
</pre></pre><pre>Ligne de commande sur la machine recevant le streaming (client):</pre><pre class="brush: bash;">
client&gt; gst-launch -v udpsrc caps=&quot;application/x-rtp, media=\(string\)video, clock-rate=\(int\)90000, encoding-name=\(string\)H264, payload=\(int\)96&quot; port=5000 \
 ! queue ! rtph264depay \
 ! queue ! ffdec_h264 ! xvimagesink
</pre><p><strong><span
style="text-decoration: underline;">Résultat:</span></strong><br
/> <strong> Visuel</strong>: <span
style="color: #ff0000;">vidéo saccadé (environ 2 img/sec)</span><br
/> <strong> Bande passante mesurée</strong>: entre 2 et 3 Mbps<br
/> <strong> Resource serveur</strong>: %CPU=135 / %MEM=5<br
/> <strong> Resource client</strong>: %CPU=10 / %MEM=2</p><p>On ajoute un buffer juste avant le depay et le décodage (au niveau du client):</p><pre class="brush: bash;">
client&gt; gst-launch -v udpsrc caps=&quot;application/x-rtp, media=\(string\)video, clock-rate=\(int\)90000, encoding-name=\(string\)H264, payload=\(int\)96&quot; port=5000 \
        ! queue ! gstrtpjitterbuffer latency=3000 \
        ! queue ! rtph264depay \
        ! queue ! ffdec_h264 ! xvimagesink
</pre><p><strong><span
style="text-decoration: underline;">Résultat:</span></strong><br
/> <strong> Visuel</strong>: <span
style="color: #ff6600;">vidéo beaucoup plus fluide mais variation de la gigue (accéleration de la video par moment). On a par contre un décalage de 3 secondes, donc inutilisable pour des flux lives.</span><br
/> <strong> Bande passante mesurée</strong>: entre 2 et 3 Mbps<br
/> <strong> Resource serveur</strong>: %CPU=140 / %MEM=6<br
/> <strong> Resource client</strong>: %CPU=14 / %MEM=2</p><p>On modifie ensuite les paramètres d&#8217;encodage X.264 (au niveau du serveur):</p><pre class="brush: bash;">
serveur&gt; gst-launch -v --gst-debug-level=2 \
        filesrc location=&quot;../Vidéos/big_buck_bunny_480p_stereo.ogg&quot; \
        ! queue ! decodebin \
        ! queue ! videoscale method=1 ! video/x-raw-yuv,width=720,height=480 \
        ! queue ! videorate ! video/x-raw-yuv,framerate=\(fraction\)24/1 \
        ! queue ! x264enc vbv-buf-capacity=3000 byte-stream=true bitrate=900 subme=4 ref=2 bframes=1 b-pyramid=true weightb=true \
        ! queue ! rtph264pay \
        ! queue ! udpsink port=5000 host=192.168.29.150 sync=false async=false
</pre><p><strong><span
style="text-decoration: underline;">Résultat:</span></strong><br
/> <strong> Visuel</strong>: <span
style="color: #008000;">Presque plus de sacade ni de variation de gigue. On a par contre un décalage de 3 secondes, donc inutilisable pour des flux lives.</span><br
/> <strong> Bande passante mesurée</strong>: entre 2 et 3 Mbps<br
/> <strong> Resource serveur</strong>: %CPU=120 / %MEM=4<br
/> <strong> Resource client</strong>: %CPU=10 / %MEM=2</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2471"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2010/02/streaming-video-hd-avec-gstreamer.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <enclosure
url="http://mirror.bigbuckbunny.de/peach/bigbuckbunny_movies/big_buck_bunny_480p_stereo.ogg" length="166825767" type="audio/ogg" /> </item> <item><title>Encodage de vidéo avec GStreamer</title><link>http://blog.nicolargo.com/2009/11/encodage-de-video-avec-gstreamer.html</link> <comments>http://blog.nicolargo.com/2009/11/encodage-de-video-avec-gstreamer.html#comments</comments> <pubDate>Tue, 17 Nov 2009 10:59:12 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Video]]></category> <category><![CDATA[aac]]></category> <category><![CDATA[encodage]]></category> <category><![CDATA[H.264]]></category> <category><![CDATA[theora]]></category> <category><![CDATA[vorbis]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=2442</guid> <description><![CDATA[Si vous suivez régulièrement ce blog, vous savez que je m&#8217;intéresse au Framework multimédia GStreamer présent de base dans les systèmes d&#8217;exploitations GNU/Linux.  Nous allons dans ce billet voir comment encoder en ligne de commande une source vidéo vers des fichiers aux formats OGG (Theora/Vorbis) et/ou MP4 (H264/AAC). Pourquoi ces formats ? Je me limite à [...]]]></description> <content:encoded><![CDATA[<p>Si vous suivez régulièrement ce blog, vous savez que je m&#8217;intéresse <a
href="http://blog.nicolargo.com/category/open-source/gstreamer-open-source-2">au Framework multimédia GStreamer</a> présent de base dans les systèmes d&#8217;exploitations GNU/Linux.  Nous allons dans ce billet voir comment encoder en ligne de commande une source vidéo vers des fichiers aux formats OGG (Theora/Vorbis) et/ou MP4 (H264/AAC).<span
id="more-2442"></span></p><h1>Pourquoi ces formats ?</h1><p>Je me limite à ces deux formats pour la simple et bonne raison qu&#8217;il se complète dans mon utilisation quotidienne. En effet, le format OGG (Theora/Vorbis), outre le fait qu&#8217;il soit basée sur des codecs libres, permet une intégration simplifié des vidéos dans les navigateurs supportant le HTML5 (<a
href="http://blog.nicolargo.com/2009/10/utiliser-le-tag-video-html-5-dans-wordpress.html">lire ce billet</a>), de son coté le format MP4 (H264/AAC) est un standard qui permet de lire ce type de fichiers sur une PlayStation 3.</p><h1>Avant d&#8217;encoder&#8230;</h1><p>Avant de commencer, il faut choisir une source de bonne qualité. Les codecs ne font pas des miracles et si la source est mauvaise, les fichiers encodés le seront aussi. Pour mes tests, j&#8217;ai récupéré un trailer haute définition sur le site <a
href="http://www.hd-trailers.net/">HD-Trailers.net</a>.  Les caractéristiques du fichier sont les suivantes:</p><pre class="brush: bash;">
ffmpeg -i shutterisland-tlr1r2r_h720p.mov
Duration: 00:02:22.27, start: 0.000000, bitrate: 6178 kb/s
Stream #0.0(eng): Video: h264, yuv420p, 1280x544, 23.98 tbr, 23.98 tbn, 47.95 tbc
Stream #0.1(eng): Audio: aac, 48000 Hz, 5.1, s16
</pre><p>Pour jouer cette vidéo sur votre machine, il faut saisir la pipeline suivante:</p><pre class="brush: bash;">
gst-launch filesrc location=~/Vidéos/shutterisland-tlr1r2r_h720p.mov ! decodebin name=decoder \
 decoder. ! queue ! audioconvert ! audioresample ! autoaudiosink \
 decoder. ! queue ! ffmpegcolorspace ! autovideosink
</pre><p>Voici le résultat:</p><p
style="text-align: center;">Le fichier source a une talle de <strong>11 Mo</strong></p><p
style="text-align: center; "><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2443 aligncenter" title="shutterisland-tlr1r2r_h720p.mov" src="http://blog.nicolargo.com/wp-content/uploads/2009/11/shutterisland-tlr1r2r_h720p.mov.jpg" alt="shutterisland-tlr1r2r_h720p.mov" width="640" height="272" /><em><span
style="color: #808080;">Fichier source</span></em></p><h1>Comment encoder ?</h1><h2>En basse qualité</h2><p>Nous obtiendrons ici des fichiers dont la taille sera réduite mais avec une qualité plus basse, notamment lors des phases ou la caméra bouge beaucoup (par exemple sur les travelings).</p><h3>Encodage OGG (Theora/Vorbis)</h3><p>La pipeline:</p><pre class="brush: bash;">
gst-launch filesrc location=~/Vidéos/shutterisland-tlr1r2r_h720p.mov ! decodebin name=decoder \
 decoder. ! queue ! audioconvert ! vorbisenc ! queue ! \
 oggmux name=muxer \
 decoder. ! queue ! ffmpegcolorspace ! theoraenc ! queue ! \
 muxer. muxer. ! queue ! filesink location=~/Vidéos/shutterisland-tlr1r2r_h720p_lq.ogv
</pre><p
style="text-align: center;">Le fichier a une taille <strong>1.7 Mo</strong> de donne le résultat suivant:<br
/> <img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2444 aligncenter" title="shutterisland-tlr1r2r_h720p_lq.ogv" src="http://blog.nicolargo.com/wp-content/uploads/2009/11/shutterisland-tlr1r2r_h720p_lq.ogv_.jpg" alt="shutterisland-tlr1r2r_h720p_lq.ogv" width="640" height="272" /><em><span
style="color: #808080;">Fichier basse qualité OGG</span></em></p><h3>Encodage MP4 (H264/AAC)</h3><p>La pipeline:</p><pre class="brush: bash;">
gst-launch filesrc location=~/Vidéos/shutterisland-tlr1r2r_h720p.mov ! decodebin name=decoder \
 decoder. ! queue ! audioconvert ! faac profile=2 ! queue ! \
 ffmux_mp4 name=muxer \
 decoder. ! queue ! ffmpegcolorspace ! x264enc pass=4 quantizer=30 subme=4 threads=0 ! queue ! \
 muxer. muxer. ! queue ! filesink location=~/Vidéos/shutterisland-tlr1r2r_h720p_lq.mp4
</pre><p
style="text-align: center;">Le fichier a une taille <strong>2 Mo</strong> de donne le résultat suivant:<br
/> <img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2445 aligncenter" title="shutterisland-tlr1r2r_h720p_lq.mp4" src="http://blog.nicolargo.com/wp-content/uploads/2009/11/shutterisland-tlr1r2r_h720p_lq.mp4.jpg" alt="shutterisland-tlr1r2r_h720p_lq.mp4" width="640" height="272" /><em><span
style="color: #808080;">Fichier basse qualité MP4</span></em></p><h2>En moyenne qualité</h2><p>Nous obtiendrons ici un bon compromis entre la taille des fichiers et la qualité de l&#8217;image.</p><h3>Encodage OGG (Theora/Vorbis)</h3><p>La pipeline:</p><pre class="brush: bash;">
gst-launch filesrc location=~/Vidéos/shutterisland-tlr1r2r_h720p.mov ! decodebin name=decoder \
 decoder. ! queue ! audioconvert ! vorbisenc ! queue ! \
 oggmux name=muxer \
 decoder. ! queue ! ffmpegcolorspace ! theoraenc quality=32 ! queue ! \
 muxer. muxer. ! queue ! filesink location=~/Vidéos/shutterisland-tlr1r2r_h720p_mq.ogv
</pre><p
style="text-align: center;">Le fichier a une taille <strong>2.8 Mo</strong> de donne le résultat suivant:<br
/> <img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2447 aligncenter" title="shutterisland-tlr1r2r_h720p_mq.ogv" src="http://blog.nicolargo.com/wp-content/uploads/2009/11/shutterisland-tlr1r2r_h720p_mq.ogv_.jpg" alt="shutterisland-tlr1r2r_h720p_mq.ogv" width="640" height="272" /><em><span
style="color: #808080;">Fichier moyenne qualité OGG</span></em></p><h3>Encodage MP4 (H264/AAC)</h3><p>La pipeline:</p><pre class="brush: bash;">
gst-launch filesrc location=~/Vidéos/shutterisland-tlr1r2r_h720p.mov ! decodebin name=decoder \
 decoder. ! queue ! audioconvert ! faac profile=2 ! queue ! \
 ffmux_mp4 name=muxer \
 decoder. ! queue ! ffmpegcolorspace ! x264enc pass=4 quantizer=25 subme=5 me=2 ref=3 threads=0 ! queue ! \
 muxer. muxer. ! queue ! filesink location=~/Vidéos/shutterisland-tlr1r2r_h720p_mq.mp4
</pre><p
style="text-align: center;">Le fichier a une taille <strong>3.6 Mo</strong> de donne le résultat suivant:<br
/> <img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2448 aligncenter" title="shutterisland-tlr1r2r_h720p_mq.mp4" src="http://blog.nicolargo.com/wp-content/uploads/2009/11/shutterisland-tlr1r2r_h720p_mq.mp4.jpg" alt="shutterisland-tlr1r2r_h720p_mq.mp4" width="640" height="272" /><em><span
style="color: #808080;">Fichier moyenne qualité MP4</span></em></p><h2>En haute qualité</h2><p>Nous obtiendrons ici une très bonne qualité d&#8217;image mais une taille importante des fichiers.</p><h3>Encodage OGG (Theora/Vorbis)</h3><p>La pipeline:</p><pre class="brush: bash;">
gst-launch filesrc location=~/Vidéos/shutterisland-tlr1r2r_h720p.mov ! decodebin name=decoder \
 decoder. ! queue ! audioconvert ! vorbisenc ! queue ! \
 oggmux name=muxer \
 decoder. ! queue ! ffmpegcolorspace ! theoraenc quality=48 ! queue ! \
 muxer. muxer. ! queue ! filesink location=~/Vidéos/shutterisland-tlr1r2r_h720p_hq.ogv
</pre><p
style="text-align: center;">Le fichier a une taille <strong>5 Mo</strong> de donne le résultat suivant:<br
/> <img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2449 aligncenter" title="shutterisland-tlr1r2r_h720p_hq.ogv" src="http://blog.nicolargo.com/wp-content/uploads/2009/11/shutterisland-tlr1r2r_h720p_hq.ogv_.jpg" alt="shutterisland-tlr1r2r_h720p_hq.ogv" width="640" height="272" /><em><span
style="color: #808080;">Fichier haute qualité OGG</span></em></p><h3>Encodage MP4 (H264/AAC)</h3><p>La pipeline:</p><pre class="brush: bash;">
gst-launch filesrc location=~/Vidéos/shutterisland-tlr1r2r_h720p.mov ! decodebin name=decoder \
 decoder. ! queue ! audioconvert ! faac profile=2 ! queue ! \
 ffmux_mp4 name=muxer \
 decoder. ! queue ! ffmpegcolorspace ! x264enc pass=4 quantizer=20 subme=6 me=2 ref=3 threads=0 ! queue ! \
 muxer. muxer. ! queue ! filesink location=~/Vidéos/shutterisland-tlr1r2r_h720p_hq.mp4
</pre><p
style="text-align: center;">Le fichier a une taille <strong>7.3 Mo</strong> de donne le résultat suivant:<br
/> <img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2450 aligncenter" title="shutterisland-tlr1r2r_h720p_hq.mp4" src="http://blog.nicolargo.com/wp-content/uploads/2009/11/shutterisland-tlr1r2r_h720p_hq.mp4.jpg" alt="shutterisland-tlr1r2r_h720p_hq.mp4" width="640" height="272" /><em><span
style="color: #808080;">Fichier haute qualité MP4</span></em></p><h1>Pour conclure</h1><p>Nous avons vu dans ce billet les bases de l&#8217;encodage de fichiers vidéos avec GStreamer. Il est imporant de signaler que par la magie des pipeline, on pourrait très bien appliquer ces méthodes avec une source live comme une Webcam ou un flux venant d&#8217;un serveur de streaming vidéo.</p><p>Si vous avez des pipelines d&#8217;encodages que vous voulez partager avec les lecteurs de ce blog, les commentaires sont là pour ça !</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2442"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2009/11/encodage-de-video-avec-gstreamer.html/feed</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Installation et configuration de Hanbrake sur Fedora 11</title><link>http://blog.nicolargo.com/2009/10/installation-et-configuration-de-hanbrake-sur-fedora-11.html</link> <comments>http://blog.nicolargo.com/2009/10/installation-et-configuration-de-hanbrake-sur-fedora-11.html#comments</comments> <pubDate>Tue, 27 Oct 2009 10:23:32 +0000</pubDate> <dc:creator>NicoLargo</dc:creator> <category><![CDATA[Gstreamer]]></category> <category><![CDATA[Open-source]]></category> <category><![CDATA[Systeme]]></category> <category><![CDATA[fedora]]></category> <category><![CDATA[handbrake]]></category><guid
isPermaLink="false">http://blog.nicolargo.com/?p=2342</guid> <description><![CDATA[Un rapide billet pour installer Handbrake (le logice libre pour ripper vos DVDs) sur une distribution Fedora 11. En effet, Handbrake n&#8217;est pas disponible dans les dépôts, il faut donc passer par une installation à la mimine (il faut juste avoir quelques connaissances pour suivre ce tuto, comme le fait de savoir saisir des commandes [...]]]></description> <content:encoded><![CDATA[<p>Un rapide billet pour installer <a
href="http://handbrake.fr/">Handbrake</a> (le logice libre pour ripper vos DVDs) sur une distribution Fedora 11. En effet, Handbrake n&#8217;est pas disponible dans les dépôts, il faut donc passer par une installation à la mimine (il faut juste avoir quelques connaissances pour suivre ce tuto, comme le fait de savoir saisir des commandes dans un terminal&#8230;) . J&#8217;en profiterai également pour vos donner ma configuration qui me permet d&#8217;encoder les DVDs pour les relire sur ma PlayStation 3.</p><h1>Avant de commencer</h1><p>On ouvre un terminal et on lance les commandes suivantes afin d&#8217;installer les librairies nécessaires à la compilation de Handbrake:</p><pre class="brush: bash;">sudo yum groupinstall &quot;Development Tools&quot; &quot;Development Libraries&quot; &quot;X Software Development&quot; &quot;GNOME Software Development&quot;
sudo yum install yasm zlib-devel bzip2-devel dbus-glib-devel hal-devel webkitgtk-devel libnotify-devel gstreamer-devel gstreamer-plugins-base-devel
</pre><h1>Installation de Handbrake</h1><p>On récupère la dernière version de Handbrake à parit du dépôt SVN:</p><pre class="brush: bash;">cd ~
mkdir src
cd src
svn checkout svn://svn.handbrake.fr/HandBrake/trunk handbrake
</pre><p>On lance la préparation de la compilation:</p><pre class="brush: bash;">cd handbrake
./configure --launch
</pre><p>On compile et on installe:</p><pre class="brush: bash;">cd build
sudo make install
</pre><p>Pour lancer le logiciel Handbrake, il faut aller dans le menu Applications / Son et vidéo / Handbrake (si vous êtes sous Gnome&#8230;). Et voilà le travail:</p><p
style="text-align: left;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2009/10/handBrake.png" rel="lightbox[2342]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-large wp-image-2343 aligncenter" title="HandBrake" src="http://blog.nicolargo.com/wp-content/uploads/2009/10/handBrake-1024x658.png" alt="HandBrake" width="614" height="395" /></a></p><h1 style="text-align: left;">Configuration d&#8217;un profil PlayStation 3</h1><p
style="text-align: left;">On commence par cliquer sur le profil &#8220;High Profile&#8221; puis sur le bouton &#8220;Save current settings to new preset&#8221;. On entre un nom et une description pour le profil:</p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2009/10/profilps3.png" rel="lightbox[2342]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2344 aligncenter" title="profilps3" src="http://blog.nicolargo.com/wp-content/uploads/2009/10/profilps3.png" alt="profilps3" width="395" height="204" /></a></p><p
style="text-align: left;">J&#8217;utilise les paramètres suivants:</p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2009/10/screenshot_001.jpeg" rel="lightbox[2342]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2345 aligncenter" title="Handbrake-PS3-Video" src="http://blog.nicolargo.com/wp-content/uploads/2009/10/screenshot_001.jpeg" alt="Handbrake-PS3-Video" width="487" height="235" /></a></p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2009/10/screenshot_002.jpeg" rel="lightbox[2342]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2346 aligncenter" title="Handbrake-PS3-Audio" src="http://blog.nicolargo.com/wp-content/uploads/2009/10/screenshot_002.jpeg" alt="Handbrake-PS3-Audio" width="567" height="274" /></a></p><p
style="text-align: center;"><a
href="http://blog.nicolargo.com/wp-content/uploads/2009/10/screenshot_003.jpeg" rel="lightbox[2342]"><img
style=' display: block; margin-right: auto; margin-left: auto;'  class="size-full wp-image-2347 aligncenter" title="Handbrake-PS3-H264" src="http://blog.nicolargo.com/wp-content/uploads/2009/10/screenshot_003.jpeg" alt="Handbrake-PS3-H264" width="564" height="272" /></a></p><p
style="text-align: left;">Il ne reste plus qu&#8217;a insérer un DVD dans votre lecteur, choisir le profil &#8220;PlayStation 3&#8243; et lancer l&#8217;encodage !</p><div
id="aspdf"> <a
href="http://blog.nicolargo.com/wp-content/plugins/as-pdf/generate.php?post=2342"> <span> </span> </a></div> ]]></content:encoded> <wfw:commentRss>http://blog.nicolargo.com/2009/10/installation-et-configuration-de-hanbrake-sur-fedora-11.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached
Database Caching 1/41 queries in 0.008 seconds using memcached
Object Caching 1044/1130 objects using memcached

Served from: blog.nicolargo.com @ 2010-09-02 19:44:21 -->