Catégories
Gstreamer Open-source Planet-libre Video

Transcoder facilement ses vidéos avec Arista

Arista est un projet développé en parallèle de Transmageddon qui a pour objectif d’avoir une solution logicielle libre et simple pour transformer une vidéo en un beau fichier compressé et compatible avec vos périphériques de lectures. Le logiciel se base sur le merveilleux framework GStreamer.

Nous allons donc voir dans ce billet comment installer puis utiliser ce logiciel sur une distribution Ubuntu 10.10 (vous pouvez bien-sur utiliser ce logiciel sur d’autre distribution, seule la procédure d’installation sera à changer).

Installation de Arista

C’est très simple sous Ubuntu:

sudo aptitude install arista nautilus-arista

Lancement de Arista

On passe par le menu principal > Son et vidéo > Arista Transcoder:

Transcodage pas à pas

1) Sélection de la source

On commence par sélectionner la source vidéo parmi:

  • un disque DVD (à insérer dans votre lecteur)
  • un fichier vidéo quelconque
  • une caméra / une webcam

2) Sélection du périphérique cible

On doit choisir le périphérique sur lequel on voudra lire la vidéo transcodé. On a le choix entre (cette liste évolue automatiquement selon les changement de version et des mises à jour spécifiques):

  • Android
  • Apple iPad
  • Apple iPod/iPhone
  • Ordinateur (Linux)
  • Lecteur DVD
  • Nokia N
  • Sony PSP
  • Sony PS3
  • Web (navigateur)

3) Sélection du format de pré réglage

Ce dernier choix dépend du périphérique cible. Par exemple pour une lecture sur un ordinateur, on a le choix entre H.264, WebM (VP8) ou Theora.

4) Sélection du fichier de la vidéo transcodé

On sélectionne enfin le nom du fichier de destination en cliquant sur le bouton « + Ajouter à la file« :

Puis on entre le nom du fichier.

Attention, le transcodage commence tout de suite, avec un aperçu en « live ».

Et voilà le résultat:

  • Fichier source (RAW): football_cif.y4m de 38 Mo
  • Fichier transcodé (VP8): football_cif.webm de 1.5 Mo

Conclusion

Arista est un transcoder simple à utiliser dans la pure tradition des logiciels Unix, une tache, un logiciel. Le fait que la liste des périphériques se mette automatiquement à jour est vraiment un plus non négligeable. Et hop un logiciel de plus dans mon script de post installation d’Ubuntu !

Catégories
Gstreamer Open-source Planet-libre Video Web

Encodage de vidéo WebM en ligne de commande

Le format multimédia WebM fait beaucoup parler de lui ces derniers temps. Sous l’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.

WebM, c’est quoi donc ?

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 « format WebM », cela sous entant l’utilisation des codecs audio Vorbis et vidéo VP8 (racheté il y a quelques mois par Google à la societé On2).

Avant de tester l’encodage d’un fichier WebM sur votre distribution GNU/Linux. Sous Ubuntu, il faut d’abord vérifier que vous disposez de la dernière version PPA de GStreamer:

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

Enfin on vérifie que l’on a les bons plugins:

# 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

Passons maintenant aux choses sérieurses…

Encodage au format WebM

Pour mes test j’ai utilisé une bande annonce du film « Prince of persia » en qualité HD 1080p récupérée sur le site HDTrailers.

J’utilise ensuite la pipeline (ligne de commande) suivante pour effectuer l’encodage:

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

La qualité vidéo par défaut (option quality=5) n’est pas terrible, on obtient de meilleurs résultats en l’augmentent. Voici un tableau comparatif:

Format Codecs Taille Aperçu (clique pour agrandir)
Source HQ .mov Audio: AAC 48 Khz
Video: H.264
126 Mo
WebM Audio: Vorbis 

Video: VP8 « Quality 5 »

24 Mo
WebM Audio: Vorbis 

Video: VP8 « Quality 6 »

30 Mo
WebM Audio: Vorbis 

Video: VP8 « Quality 7 »

40 Mo
WebM Audio: Vorbis 

Video: VP8 « Quality 8 »

61 Mo
WebM Audio: Vorbis 

Video: VP8 « Quality 9 »

73 Mo
WebM Audio: Vorbis 

Video: VP8 « Quality 10 »

92 Mo

Je trouve que la paramètre quality=7 est un bon compromis taille/qualité. Il faut noter que la source est d’un  qualité nettement supérieure (je ne connais pas les paramètre H.264 utilisés).

Comparaison avec les codecs Theora et H.264

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).

Voici les lignes de commandes utilisées, pour l’encodage en WebM (VP8/Vorbis):

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

puis en OGG (Theora/Vorbis):

ffmpeg2theora -v 7 –optimize pp_rltA_1080.mov -o pp_rltA-1080-Q7.ogg

et enfin en MP4 (X.264/FAAC):

x264 –tune animation –crf 23 -o pp_rltA-1080-Q7.mp4 pp_rltA_1080.mov

On obtient les résultats suivants:

Format Codecs Taille Aperçu (clique pour agrandir)
WebM Audio: Vorbis 

Video: VP8 « Quality 7 »

40 Mo
OGG Audio: Vorbis 

Video: Theora « -v 7 »

57 Mo
MP4 Audio: AAC 

Video: X.264 « CRF 23 »

56 Mo

Que peut on en déduire ? Niveau qualité, le format H.264 garde une longueur d’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’on peut comparer les paramètres utilisés…

A vous de vous faire une idée !

Conclusion

Bien que « jeune » ce format de fichier semble avoir un bel avenir. Surtout si Google arrive à l’imposer comme un « standard industriel » (sic). Avec des leviers comme YouTube et Google Chrome, j’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.

Catégories
Gstreamer Open-source Video

Encodage de vidéo avec GStreamer

Si vous suivez régulièrement ce blog, vous savez que je m’intéresse au Framework multimédia GStreamer présent de base dans les systèmes d’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).