Catégories
Gstreamer Open-source Video Web

MyScreenCast, comment faire du screencast avec GStreamer

Je ne sais pas vous mais je n’arrive pas à trouver LE logiciel de screencast libre ultime pour mon PC Linux. J’ai essayé Istanbul (le résultat est très mauvais sur ma distribution Ubuntu 10.04), XVidCap (pas d’enregistrement du son) et même VLC (un peu usine à gaz pour ce besoin)… Seul RecordMyDesktop sort du lot bien que son interface graphique d’administration (gtk-recordmydesktop) ne soit pas des plus ergonomique.

Ce billet est donc un appel à la communauté pour développer CE logiciel en question !

Nous allons dans un premier temps donner les bases techniques permettant de faire un screencast à partir du framework GStreamer (fourni en standard sous Linux). Puis donner dans les grandes largeurs les spécifications DU logiciel.

On commence par la fin: le résultat

Voici le screencast obtenu (format libre OGV – Theora/Vorbis – hébergé sur blip.tv): si votre navigateur est compatible…

Sinon vous pouvez toujours consulter la vidéo en ligne sur Blip.tv ou sur Vimeo (codec H.264/AAC)

Les fichiers générés sont au format HD 720p et ont une taille d’environ 11 Mo pour le format M4V et 13 Mo pour le format OGV.

Screencast avec GStreamer en ligne de commande

On commence par vérifier que l’on dispose bien du plugin gstreamer istximagesrc:

[cc]

gst-inspect istximagesrc

version 0.2.2

[/cc]

Si ce n’est pas le cas, il suffit d’installer le package Istanbul qui inclue ce plugin:

[cc]

sudo aptitude install istanbul

[/cc]

Aller, une fois ces menus préparatifs passés,  on commence par lancer un capture vidéo de l’écran et sonore en utilisant la ligne de commande GStreamer (pipeline) suivante:

[cc]

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.

[/cc]

Cette commande va capturer l’écran à 10 images par secondes (istximagesrc), le son (alsasink) et mixer le tout (sans compression mais avec une redimensionnement de la vidéo au format 720p) dans un fichier temporaire au format AVI. Ce fichier aura une taille très importante mais c’est juste une étape temporaire avant la compression.

Pour cette compression j’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, tous les navigateurs sont heureux:

[cc]

gst-launch filesrc location=screencast.avi ! decodebin name= »decode » \
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= »decode » \
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.

[/cc]

Un script qui fait tout…

Comme je suis un bon loulou, voici un script shell qui automatise

  1. le lancement de votre Webcam pour avoir une incrustation de votre image dans le screencast
  2. le lancement de la capture video de l’écran + capture audio (après un délais de 3 secondes histoire de refaire son nœud de cravate)
  3. (on arrête la capture en faisant un CTRL-C dans la fenêtre)
  4. la compression du screencast dans un fichier screencast-dateetheure.ogv (codec Theora/Vorbis)
  5. la compression du screencast dans un fichier screencast-dateetheure.m4v (codec H.264/AAC)
  6. la suppression du fichier temporaire

A télécharger ici: https://raw.github.com/nicolargo/myscreencast/master/myscreencast.sh

Vous pouvez éditer le fichier et notamment la configuration suivante:

[cc]

### Variables à ajuster selon votre configuration
AUDIODEVICE= »alsasrc »
WEBCAMDEVICE= »/dev/video0″
WEBCAMHEIGHT= »240″
OUTPUTHEIGHT= »720″
OUTPUTFPS= »10″
### Fin des variables à ajuster

[/cc]

… en attendant LE programme ultime

qui devra reprendre en gros les étapes de mon script mais en ajoutant:

  • une interface graphique
  • le choix d’une portion de l’écran à capturer
  • le choix d’une application (fenêtre) à capturer
  • le choix de la source audio (mixage possible avec la librairie Jack)
  • paramétrage fin des codecs audio et video
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).

Catégories
Gstreamer Open-source

Theora 1.1 sans attendre sous Ubuntu

theora-1.0 theora-1.1

Le codec vidéo libre est sorti la semaine dernière en version 1.1. Beaucoup de nouveautés sur le pont:

  • rate-Distortion Optimization ( RDO ) pour une meilleure quantification des décisions
  • quantification adaptative implique une meilleure utilisation du bitrate
  • un mode d’encodage deux passes pour des fichiers à la taille souhaitée
  • une utilisation plus fine du CPU pendant l’encodage
  • un meilleur contrôle du débit pour la diffusion en streaming (à valider bientôt avec GStreamer :))
  • une amélioration des performances du décodeur (de l’ordre de 1,5 à 2 fois plus rapide par rapport à Theora 1.0)
  • une retro compatibilité des fichiers Theora 1.0

Pour profiter sans attendre des ces nouveautés sur votre distribution Ubuntu, il faut suivre la procédure suivante:

cd ~/src

wget http://downloads.xiph.org/releases/theora/libtheora-1.1.0.tar.bz2

bzip2 -d libtheora-1.1.0.tar.bz2

tar xvf libtheora-1.1.0.tar

./configure

make

sudo make install

make check

Et voili !

Catégories
Image Open-source

Installation des OggVideoTools sous Ubuntu

Pour ceux qui ne connaissent pas, OggVideoTools est composé des logiciels suivants (en ligne de commande):

  • oggSplit: permet de séparer l’audio et la vidéo d’un fichier en deux fichiers distincts (un fichier par flux).
  • oggJoin: Prend en entré une liste de fichiers OGG (audio au format vorbis et/ou vidéo au format Theroa) et donne en sortie un seul fichier.
  • oggCut: permet de couper un fichier OGG.
  • oggCat: permet de coller les uns à la suite des autres des fichiers OGG.
  • oggDump: Affiche un fichier OGG sous la forme de paquets.
  • oggLength: Affiche la taille d’un fichier OGG (en ms).

Si vous voulez en plus disposer des deux autres utilitaires suivants, Il faut passer par une phase de compilation supplémentaire de la librairie Theora depuis les sources car le paquet Ubuntu (et aussi Debian) comporte un bug.:

  • oggResize: permet de changer les caractéristiques des flux audio/video d’un fichier OGG.
  • oggSilence: Permet de créer un fichier audio vide (silence) au format Vorbis d’une taille donnée.

En attendant que ces petits utilitaires pour manipuler les fichiers audio/video libre basés sur le format libre OGG soit disponibles dans les dépôts Ubuntu (ce qui ne devrait pas tarder…). Voici une petite procédure pour effectuer la compilation depuis les sources.

Compilation des OggVideoTools

Les sources sont hébergées sur le site Sourceforge.

On commence par récupérer les sources de la dernière version disponible (0.7b au moment de l’écriture de ce billet):

wget http://downloads.sourceforge.net/project/oggvideotools/oggvideotools/oggvideotools-0.7b/oggvideotools-0.7b.tar.gz

Puis on lance la compilation (il faut que votre machine dispose des outils de compilation standard: build-essential sous Ubuntu):

./configure
make
sudo make install

Et voili:

# oggLength bigbuckbunny.ogv
596467

# oggSplit bigbuckbunny.ogv
# ls -alF
total 326172
-rw-r–r– 1 labo labo 166825767 2009-08-21 11:26 bigbuckbunny.ogv
-rw-r–r– 1 labo labo 153622630 2009-08-21 16:26 theora_f0678e1.ogg
-rw-r–r– 1 labo labo  13203137 2009-08-21 16:26 vorbis_1fa82364.ogg

Catégories
Open-source Web

VOD avec Flumotion

Il y a quelques temps, je vous avez parlé de Flumotion, une solution libre de streaming audio/vidéo. Nous allons nous re-pencher sur cette solution en nous focalisant sur l’utilisation de Flumotion pour un serveur de vidéo à la demande (VOD).

d05.jpg

Le but étant de diffuser vers des clients des vidéos stockés sur un serveur. Le client accédera au serveur via un navigateur Web (pour avoir la liste des vidéos disponibles) et plugin VLC (pour lire les vidéos). Sur ce dernier point, il existe également une applet Java (Cortado) que vous pouvez ajouter à votre serveur pour vous passer du plugin VLC.

Catégories
Open-source

Encodage vidéo Theora facile sous Mac OS X

Theora.org __ main - Theora, video for everyone.jpgVous connaissez sans doute le codec vidéo MPEG-4 issue de la norme ISO du même nom. Et bien il existe une alternative libre à ce codec: Theroa (wiki). Très efficace niveau compression (avec des ratios se rapprochant de MPEG-4), il est bien pris en charge par les lecteurs multimédia libre comme VLC, Mplayer et plus généralement par tout lecteur basé sur FFMpeg.

Simple Theora Encoder est un logiciel open-source sous Mac OS X permettant de compresser simplement une source AVI, MOV ou MP4 dans un format OGG/Theora (OGG étant le conteneur et Theroa le codec Video). Il s’adresse à toutes les personnes allergique à la ligne de commande. En effet, Simple Theora Encoder est juste un interface graphique à l’application ffmpeg2theroa.

L’utilisation est très simple (c’est quand même le but…):

  • on sélectionne la/les vidéo source (bouton « Add… »)
  • on clique sur le bouton « Encode… »
  • on attend (environ 6 minutes pour une vidéo HD de 10 minutes sur mon MacBook Pro)
  • le logiciel générera le ficher .ogg équivalent compressé avec le code Theroa dans le même répertoire que le fichier source

Simple Theora Encoder.jpg

Il est possible d’ajouter des options qui seront envoyées à ffmpeg2theora lors de la compression en cliquant sur le bouton « Edit… », par exemples:

Pour désentrelacer la vidéo source: — deinterlace

Changer la résolution: -x 640 -y 480

Le package Simple Theroa Encoder (téléchargeable ici), inclue l’interface graphique, ainsi que tous les logiciels nécessaires à l’encodage.