Catégories
Blog Open-source Systeme

TweetDeck sous Ubuntu avec Twitter et Identi.ca

Depuis que Twitter a basculer son système d’authentification sur OAuth, le client de micro-blogging Pino que j’utilisais sur mon PC Ubuntu ne fonctionne plus (à ce sujet je viens de lire ce billet de Web8 qui propose une bidouille pour refaire marcher Pino 0.2 avec Twitter)…

A la recherche d’un nouveau client de micro-blogging, je me suis dans un premier temps retourné vers Gwibber (le client standard sous Ubuntu 10.04). Mais j’ai beau faire des efforts, je n’arrive pas à trouver ce logiciel plaisant à utiliser. Le le trouve lourd, peu lisible… bref je n’accroche pas.

Lors d’une discussion avec un lecteur, je suis tombé sur TweetDeck: un client de micro-blogging complet mais non-libre et utilisant Adobe Air (il partait pas super bien dans mon échelle de valeurs…).

Après quelques jours d’utilisations, je pense cependant l’adopter en attendant de trouver (enfin) une solution libre alternative (peut être Pino 0.3…).

Installation de TweetDeck sous Ubuntu

On doit commencer par installer Adobe Air avec la commande suivante:

sudo aptitude install adobeair

Après un redémarrage de votre navigateur Web, il suffit de ce rendre sur la page suivante et de cliquer sur le bouton « Download now, it’s free ».

Puis de suivre l’installation graphique…

Configuration de TweetDeck pour votre compte Twitter

TweetDeck permet de configurer des comptes Twitter, Facebook, LinkedIn, Foursquare, Buzz et Myspace.

La configuration de votre compte Twitter est des plus simple, il faut aller dans le menu Setting > Accounts, puis cliquer sur le bouton Add new account > Twitter et enfin renseigner les informations sur votre compte:

Configuration de TweetDeck pour votre compte Identi.ca

TweetDeck ne supporte pas Identi.ca par défaut. Heureusement, Identi.ca utilise une interface standard de communication. Il est donc possible d’ajouter un compte Identi.ca.

il faut aller dans le menu Setting > Accounts, puis cliquer sur le bouton Add new account > Twitter (oui oui il faut bien cliquer sur le bouton Twitter) et enfin renseigner les informations sur votre compte. Avant de cliquer sur le bouton Verify details, il faut cliquer sur le lien Advanced Options (Alpha) puis saisir l’URL: http://identi.ca/index.php/api/

Et voilà, une solution non-libre en attendant Pino 0.3 !

Vous utilisez quoi comme client de micro-blogging ?

Catégories
Blog Open-source

Le bug de rafraîchissement de Gwibber résolu

J’avais laissé tombé il y a quelque temps le client de micro blogging Gwibber pour passer à Pino car je rencontrais de manière récurrente un bug de mise à jour de la time-line Twitter.

Ce bug (#533017), clairement identifié par les développeurs, vient d’être corrigé dans la dernière version de dev (2.31.91).

Pour tester sur votre configuration Ubuntu:

On quitte Gwibber.

Puis on installe les dépôts de la dernière version:

sudo add-apt-repository ppa:gwibber-daily/ppa

sudo apt-get update

sudo apt-get upgrade

Puis on tue les processus *couch*:

killall -r couch

On relance ensuite Gwibber (Applications > Internet > Client de microblogage Gwibber).

Attention: dans mon cas, le compte Twitter n’existait plus quand j’ai relancé Gwibber (alors que le compte Identica oui…). J’ai donc du le reconfigurer. Update: ceci est du à une nouvelle méthode d’authentification pour accéder à Twitter.

Je pense donc donner une chance a ce logiciel vu que Pino n’a toujours pas intégré une fonction de mixage des time-line (par exemple Twitter + Identica).

Et vous quel est votre client de micro blogging favori sous GNU/Linux ?

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 !

Catégories
Hardware Open-source

Configurer la résolution de son écran/vidéo projecteur sous Linux

La configuration de la résolution de l’écran ou d’un vidéo projecteur a toujours été un problème pour les « nons initiés », recherches des paramètres sur le Web, configuration de Xorg… Heureusement, l’arrivée des ports « numériques » (DVI / HDMI)  permettent de ne plus se soucier de cette configuration car les paramètres optimaux sont négociés automatiquement entre l’écran et le système. Il existe néanmoins des cas ou un une configuration manuelle est encore nécessaire: utilisation d’un PC  avec une interface RGB, écran non reconnu par le système (vidéo projecteur ou écran de télévision)… Nous allons donc dans ce billet voir comment utiliser des outils simples pour optimiser l’affichage de son système GNU/Linux sur n’importe quel écran.

xrandr est ton ami

xrandr est un projet de la fondation X.org. C’est à la fois un protocole et un logiciel permettant de paramétrer l’affichage de vos écrans: résolution, fréquence, rotation, multi-écran…

Détection des écrans

On commence par détecter les écran disponible avec la commande suivante:

[shell]
xrandr
Screen 0: minimum 320 x 200, current 1360 x 768, maximum 8192 x 8192
VGA1 connected 1360×768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1360×768       59.8*
1024×768       60.0
800×600        60.3     56.2
848×480        60.0
640×480        59.9     59.9
xrandrScreen 0: minimum 320 x 200, current 1360 x 768, maximum 8192 x 8192VGA1 connected 1360×768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm   1360×768       59.8*    1024×768       60.0     800×600        60.3     56.2     848×480        60.0     640×480        59.9     59.9

[/shell]

On peut voir que le PC dispose d’une sortie VGA (nommée VGA1) avec un écran branché dessus (connected) à une résolution de 1360×768 (à 59.8 Hz). L’écran en question est en fait un HP LP2465 supportant une résolution full-hd de 1920×1200… il y a donc une coquille à résoudre…

Création d’une nouvelle configuration

On utilise pour cela un deuxième logiciel nommé gtf qui va permettre de générer pour vous une nouvelle configuration d’écran. gtf  demande en paramètre la résolution et la fréquence souhaités (par exemple 1920×1200 à une résolution de 60 Hz):

[shell]

gtf 1920 1200 60

# 1920×1200 @ 60.00 Hz (GTF) hsync: 74.52 kHz; pclk: 193.16 MHz

Modeline "1920x1200_60.00"  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync

[/shell]

Il faut mettre la ligne suivante de coté:

[shell]

"1920x1200_60.00"  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync

[/shell]

Application de la nouvelle configuration

On utilise pour cela le logiciel xrandr, d’abord en créant la nouvelle configuration dans le système:

[shell]

xrandr –newmode "1920x1200_60.00"  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync

[/shell]

On ajoute cette nouvelle configuration à l’interface VGA1:

[shell]

xrandr –addmode VGA1 1920x1200_60.00

[/shell]

Puis on force l’interface VGA1 à utiliser cette nouvelle configuration:

[shell]

xrandr –output VGA1 –mode 1920x1200_60.00

[/shell]

Si tout ce passe comme prévu, l’écran devrait passer dans la nouvelle résolution. On peut vérifier celà par la ligne de commande:

[shell]

xrandr

Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192

VGA1 connected 1920×1200+0+0 (normal left inverted right x axis y axis) 0mm x 0mm

1360×768       59.8

1024×768       60.0

800×600        60.3     56.2

848×480        60.0

640×480        59.9     59.9

1920x1200_60.00   60.0*

[/shell]

Sources

Catégories
Hardware Musique Open-source Systeme Video

Test du micro/casque Logitech ClearChat Pro USB sous Ubuntu

Je viens de recevoir un casque/micro Logitech ClearChat Pro USB. Spécialisé dans les applications chat (conversation, jeux vidéo…), il n´est pas fait pour les conversations téléphoniques (ce n´est pas un casque téléphonique sans fil, non plus), il peut cependant être utilisé pour écouter de la musique (bien qu’il existe de meilleur casque Hifi pour cette utilisation).

Sur la boîte, Logitech donne comme pré-requis l’utilisation d’un système d’exploitation de type Windaube ou MacOS X… Nous allons voir que ce casque fonctionne très bien sur une Ubuntu 10.04 et sans avoir à installer un quelconque driver.

Pour une vidéo de présentation du casque, vous pouvez regarder celle faite par OSGui:

Logitech ClearChat Pro USB Unboxing Review & Ubuntu Linux Tutorial

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
Open-source Web

Spideroak, un sérieux concurrent à Dropbox

Spideroak est un service en ligne de sauvegarde, synchronisation et partage de données. La fonction qui m’intéresse particulièrement est de pouvoir synchroniser des répertoires entres plusieurs machines.

Spideroak fonctionne sur le principe suivant: on commence par installer le client Spideroak sur une machine (GNU/Linux, Mac OS X ou Windows). Au premier lancement, le client va créer un compte utilisateur auquel sera associé une clé de chiffrement permettant de s’assurer que vous serez le seul à pouvoir accéder à vos données (même la société Spideroak…). Il va ensuite vous demander le nom de votre machine (je vous conseille de choisir un nom facile à reconnaitre, surtout si vous avez plusieurs machines) et la liste des répertoires à sauvegarder. On se retrouve donc avec, sur le serveur,  une association « Nom de machine / Répertoire de données ». A partir du moment ou le client est installé sur au moins deux machines, on peut passer à l’étape de la configuration de la synchronisation.  Il suffit de choisir une source (« Nom de machine 1 / Répertoire de données X ») et une destination (« Nom de machine 2 / Répertoire de données Y »). A partir de ce moment là, toute modification (ajout, modification, suppression) d’un fichier dans le répertoire local Y de la machine 2 sera répercutée sur le répertoire X de la machine 1 (et vice et versa).

On voit ici la flexibilité de Spideroak par rapport à Dropbox. En effet, Dropbox ne permet que de synchroniser un seul répertoire (appelé Dropbox par défaut). Tandis qu’avec Spideroak, il est possible de synchroniser autant de répertoire que nécessaire, Par exemple, un répertoire « Documents » d’un PC sous Linux avec un répertoire « Mes Documents » d’un pauvre PC sous Windows. Dans le même ordre d’idée il est possible de sélectionner les répertoires à synchroniser sur un PC donnée: il n’est par exemple pas indispensable de stocker sa collection de photos sur son PC du boulot mais il peut être utile de l’avoir sur son PC portable perso…

Voici pour mieux comprendre un petit screencast ou je partage un répertoire « test » entre mes PC Desktop et Laptop:

Source du screencast au format H.264 (720p).
D’autres screencast proposées par Spideroak.

Tout comme avec DropBox, il est également possible d’accéder en lecture à ses données à partir d’un simple navigateur Web ou à partir d’une application iPhone.

Spideroak propose gratuitement 2 Go de stockage (comme Dropbox), par contre l’offre payante est plus compétitive car on a 100 Go pour $10 par mois (ou $100 à l’année). Il faut ensuite compter $10 par tranche de 100 Go supplémentaire.

La société Spideroak ne distribue pas son client sous licence libre (ce qui est bien dommage mais il y a des chances que cela change dans le futur). Par contre elle met a disposition, sous licence GPLv3, une liste de logiciels développés autour de ce projet.

Cliquer ici pour installer et tester Spideroak sur votre machine.

J’attends vos retours !

Catégories
Open-source Systeme

Installation d’Ubuntu 10.04 sur Fujitsu Lifebook S760

J’ai installé et testé Ubuntu 10.04 (Lucid) sur un PC portable Fujitsu Lifebook S760. Voici le bloc note de cette installation.

Spécification du portable Fujitsu Lifebook S760:

Hardware Components
Status under Linux
Notes
Intel i5 M520 CPU Works
LCD 13,3 inchs Screen Works Resolution 1366×768
Intel HD graphic card Works Compiz OK
Sorties VGA/HDMI non testées
3 GB RAM Works
300 GB ATA HD Works 285 GB with ext4
Multicard Read/Wirte Works Tested with SD card
Integrated Network Card Works
Internal 56k Modem Not tested
CD/DVD Read/Write Works No special procedure required during installation
Internal WIFI Networking Works
65 WHr Lithium-Ion Battery Works
HDA Intel Sound Card Works

Version du noyau Linux testé: Linux kernel version 2.6.32-21-generic.

Aucun problème rencontré lors de l’installation à partir du Live CD.

Très agréable à utiliser au quotidien, PC rapide, écran lisible pour sa taille. Par contre entre quelques problème à résoudre:

  • les capteurs (sensors) de températures du PC ne remontent pas d’information à l’OS Linux. La gestion des ventilateurs régulant la température du portable est donc faite en interne, par le hardware. J’ai activé l’option « Silent Fan » du bios pour réduire les nuisances sonores mais la ventilation se déclenche encore trop souvent à mon gout (j’ai logué un bug).
  • toutes les touches (standards ou de fonction pour régler le son ou la luminosité de l’écran) fonctionnent bien sauf quand on met le PC en veille. Lors du retour de veille, les touches de luminosité ne fonctionnent plus.
Catégories
Blog Developpement Open-source

Un blog WordPress local pour vos développements

Envie de vous lancer dans le développement de votre propre thème WordPress ? Envie tester votre dernier plugin sur une copie de votre blog sans impact pour vos lecteurs ? Envies de tester cette fameuses version 3.0bêta de WordPress ?

Ces quelques exemples justifient l’installation en local (donc disponible même sans liaison Internet), sur votre PC GNU/Linux d’un environnement de développement de blog complet. Celui-ci se composera:

  • d’un serveur LAMP à jour (Linux, Apache, MySQL, PHP)
  • de la dernière version de WordPress
  • de votre IDE préférée (Bluefish, Eclipse, Anjuta, NetBeans, Emacs, vi…)

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