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

Scripts de transcodage de vidéos

Il existe de nombreux logiciels pour transcoder (WIKI) une vidéo d’un format vers un autre. On peut notamment citer Transmageddon, Handbrake, VLC… Néanmoins, votre distribution GNU/Linux intègre le framework GStreamer permettant d’effectuer ces taches de transcodage directement en ligne de commande et sans installer de logiciel supplémentaire. En dehors du fait que c’est un bon exercice pour comprendre le fonctionnement de ce fabuleux framework, c’est également un moyen simple d’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).

Nous allons dans ce billet voir comment effectuer ce transcodage dans trois formats « standard » (industriellement parlant…):

  • MP4 avec codec vidéo H.264 et codec audio AAC
  • OGG avec codec vidéo Theora et codec audio Vorbis
  • WEBM avec codec vidéo VP8 et codec audio Vorbis

Installation des plugins GStreamer

L’installation standard de GStreamer n’inclue pas la prise en charge de tout les codecs vidéos et audios. Afin de remédier à ça, je vous conseille d’installer « la totale » avec les commandes suivantes:

wget https://raw.github.com/nicolargo/ubuntupostinstall/master/gstreamerinstall.sh

chmod a+x ./gstreamerinstall.sh

sudo ./gstreamerinstall.sh

rm ./gstreamerinstall

Ces commandes vont récupérer un script maison qui va installer le PPA de l’équipe de développement de GStreamer, puis installer les paquets GStreamer.

Un peu de pipeline

Je donnerai en fin d’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.

Pour illustrer notre exemple, prenons une vidéo au format .MOV (H.264 + AAC) que l’on soughaite convertir dans un format plus « libre », c’est à dire WEBM (VP8 + VORBIS). La pipeline (ligne de commande) correspondante est la suivante:

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

La première ligne (filesrc location=source.mov ! progressreport ! decodebin name=decoder \) permet de charger le fichier source au format .MOV et de décoder les pistes audio et vidéo.

La seconde ligne (decoder. ! queue ! audioconvert ! vorbisenc ! queue ! \) prend la piste audio du fichier source et la transcode au format VORBIS.

La troisième ligne (webmmux name=muxer \) précise que l’on utilisera un conteneur multimédia de destination de type Webm.

La quatrième ligne (decoder. ! queue ! ffmpegcolorspace ! vp8enc ! queue ! \) prend la piste vidéo du fichier source et la transcode au format VP8.

Enfin la dernière ligne (muxer. muxer. ! queue ! filesink location=destination.webm) prend les pistes audio et vidéo transcodées puis génère le fichier destination au format .WEBM.

Des scripts ! Des scripts !

« C’est bien beau la théorie mais moi je veux juste faire rapidement un transcodage… »…

Ok Michel, voici trois script shell permettant de faire un transcodage de n’importe quel type de vidéo vers un des formats suivants:

Pour les utiliser, il faut dans un premier temps les rendre executable avec la commande:

chmod a+x *encoder.sh

L’utilisation est des plus simple. Exemple de transcodage en MP4:

./mp4encoder.sh Inception-1080p.mov

Exemple de transcodage en OGG:

./oggencoder.sh Inception-1080p.mov

Exemple de transcodage en WEBM:

./webmencoder.sh Inception-1080p.mov

Et si je veux modifier les paramètres de transcodage ?

Ben c’est possible Miche, Nicolargo a pensé à toi. Il suffit d’é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.

Par exemple pour modifier le script webmencoder.sh afin d’encoder avec une qualité vidéo supérieure, il faut éditer le fichier et modifier la ligne suivante:

VIDEO_ENCODER_PARAMETERS= »quality=7 speed=2″

Pour avoir la liste des paramètres pour un codec (par exemple pour l’encodeur VP8 ; vp8enc), il faut saisir la commande suivante:

gst-inspect vp8enc

Conclusion

C’est à vous de jouer pour intégrer ces scripts dans vos processus d’automatisation de transcodage de vidéo/audio !