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

Un serveur RTSP basé sur GStreamer

Dans le petit monde du streaming vidéo, RTSP est un protocole permettant à un client (lecteur multimédia) de contrôler un serveur (serveur de streaming) en lui envoyant des ordres simples: lire, pause, stop, déplacement temporel (pour avoir une liste des fonctions théoriquement disponibles, vous pouvez lire la RFC 2326). Il est important, pour comprendre la suite de ce billet que le protocole RTSP ne fait pas lui même le streaming vidéo (il utilise pour cela le protocole RTP). RTSP est juste une couche complémentaire permettant de contrôler ce streaming.

Nous allons dans ce billet étudier un serveur basé sur le framework GStreamer. Maintenu par Wim Taymans, un des développeurs de GStreamer, gst-rtsp se compose d’un ensemble de librairies permettant de concevoir simplement son propre serveur RTSP. Pour effectuer des tests, les développeurs fournissent quelques exemples de serveurs.

Installation de gst-rtsp

On commence par récupérer les sources puis à compiler:

mkdir ~/src

cd ~/src

wget http://gstreamer.freedesktop.org/src/gst-rtsp/gst-rtsp-0.10.8.tar.bz2

bzip2 -d gst-rtsp-0.10.8.tar.bz2

tar xvf gst-rtsp-0.10.8.tar

cd gst-rtsp-0.10.8/

./configure

make

Premier streaming RTSP: la mire

On commence par lancer le serveur de test qui va streamer une mire:

cd examples/

./test-readme

Le serveur est maintenant lancé, en écoute sur le port TCP/8554 et l’URL: rtsp://127.0.0.1:8554/test

Note: si vous lancer le client sur une autre machine il faut bien sur remplacer 127.0.0.1 par l’adresse IP (ou le nom d’hôte) de votre serveur.

Si on regarde le code C de ce premier serveur (./test-readme.c), on peut retrouver la pipeline GStreamer qui va s’occuper de diffuser le flux sur le réseau:

videotestsrc is-live=1 ! x264enc ! rtph264pay name=pay0 pt=96

On a donc la génération de la mire avec videotestsrc, puis un encodage H.264 avec x264enc puis enfant un streaming RTP avec rtph264pay.

Pour lire se genre de flux, on peut utiliser plusieurs logiciels. Le plus « populaire » est le très frenchie VLC. On lance donc le logiciel puis on va dans le menu Média / Ouvrir un flux réseau, puis on entre l’URL: rtsp://127.0.0.1:8554/test

Après quelques secondes, la vidéo devrait s’afficher:

On peut aussi utiliser FFplay (le player basée sur FFmpeg):

ffmplay rtsp://127.0.0.1:8554/test

Ou bien directement une pipeline GStreamer, ce qui ouvre la porte à des post traitements:

gst-launch -v rtspsrc location=rtsp://127.0.0.1:8554/test ! queue ! decodebin ! ffmpegcolorspace ! autovideosink

Il est bien sur possible de lancer plusieurs clients vers la même source RTSP (j’ai testé 3 clients en parallèle).

Une mire c’est bien, un fichier MPEG-4 c’est mieux

Les esprits chagrins vont me dire que pour tester les fonctions de seekink (déplacement temporel) avec une mire ce n’est pas terrible… Nous allons donc streamer une vidéo MPEG-4 (j’ai utilisé le logiciel Avidemux pour produire une vidéo de 640×360 en MPEG-4 ISO à partir d’une source Big Buck Bunny 720p AVI).

On va lancer le serveur avec les commandes suivantes (toujours dans le sous répertoires examples):

./test-mp4 ~/big_buck_bunny_360p_surround.mp4

Lecture à partir de VLC:

On a alors, pour cette vidéo, un flux réseau entre le serveur et le client variant entre 350 et 550 Kbps. Ceci est normal car la pipeline suivante que l’on peut trouver dans le fichier test-mp4.c ne fait en fait aucun transcodage. Comme la vidéo n’a pas été encodé en CBR (constant bit rate) on se retrouve avec des variations de débits:

filesrc location=%s ! qtdemux name=d d. ! queue ! rtph264pay pt=96 name=pay0 d. ! queue ! rtpmp4apay pt=97 name=pay1

Coté occupation CPU du coté client je suis à environ 25% sur un Core 2 à 1.8 Ghz.

Capture réseau

Pour les plus curieux d’entre vous, voici le résultat d’une capture réseau entre mon serveur RTSP (192.168.29.79) et un client (192.168.29.148).

On peut notamment y voir la négociation RTSP avec la liste des fonctions disponibles sur le serveur (OPTIONS, DESCRIBE, GET_PARAMETER, PAUSE, PLAY, SETUP, SET-PARAMETER, TEARDOWN) puis le début du streaming RTP.

Conclusion

Bien qu’en développement, ce projet de serveur RTSP basé sur GStreamer est très stable (je n’ai pas rencontré de plantage lors de mes tests) et facile à intégrer dans un développement en C. Si vous voulez faire mumuse et développer votre propre serveur, je vous conseille la lecture du fichier README qui se trouve dans le sous répertoire docs.

A vos serveurs !

Catégories
Open-source Video Web

Vidéos de Youtube roses sous Ubuntu ?

Si comme moi vous rentrez de vacance et qu’en ouvrant votre navigateur Web les vidéos sous Youtube ont une facheuse tendance à être affichées avec un filtre rose/rouge:

… alors ces deux petites commandes (à saisir dans un terminal) devraient résoudre votre problème:

sudo mkdir /etc/adobe

sudo bash -c « echo ‘OverrideGPUValidation = 0’ >> /etc/adobe/mms.cfg »

Il faut ensuite fermer et relancer sont navigateur pour que la modification soit prise en compte.

Pour information , ce problème vient d’un bug dans Adobe Flash 10.2 (encore lui…).

Source: WebUpd8

Catégories
Gstreamer Open-source Planet-libre Video

Streaming live MPEG-4 entre Windows et Linux avec GStreamer

Nous allons dans ce billet aborder un sujet plutôt inhabituel pour ce blog: Windows 🙂 !

Le but étant de récupérer un flux vidéo live (venant par exemple d’une caméra) à partir  d’une machine sous Windaube (Xp, Se7en ou autres trucs dans le genre) vers une autre machine (Linux mais aussi Mac ou Windows). Pour cela, nous allons utiliser le framework open-source GStreamer qui va permettre d’unifier tout ce beau monde.

Avant de commencer

Pour illustrer cet article nous allons faire un streaming live depuis une machine Windows Xp vers une machine GNU/Linux Fedora 14 connecté sur le même réseau LAN.

On commence donc par installer GStreamer sur la machine Windows en récupérant et installant la dernière version à partir du site WinBuilds. Je parts sur le principe ou votre Gstreamer est installé dans le répertoire C:\Program Files\OSSBuild\GStreamer\v0.10.6 (si ce n’est pas le cas, il suffit d’adapter le script .BAT, variable GSTPATH, en conséquence).

Ensuite on installe Gstreamer sur son PC GNU/Linux (procédure ici pour Fedora et là pour Ubuntu).

Ok, on a donc le framework GStreamer installé sur les deux machines que nous allons utilisé pour faire nos tests.

Streaming depuis Windows

On commence par éditer un fichier texte (Notepad est ton ami) que l’on va nommer client.bat contenant:

REM

REM Streaming from WebCam + MPEG4-ISO encoding + RTP + UDP

REM

 

set GSTPATH= »C:\Program Files\OSSBuild\GStreamer\v0.10.6″

set CAPS= »video/x-raw-yuv,width=(int)640,height=(int)480,framerate=(fraction)10/1″

set STREAMTO= »192.168.0.10″

set STREAMPORT=5000

 

%GSTPATH%\bin\gst-launch.exe -tv –gst-plugin-path=%GSTPATH%\lib ^

gstrtpbin name=rtpbin latency=0 buffer-mode=0 ^

autovideosrc ! ffmpegcolorspace ^

! queue ! videoscale method=1 ! videorate ! %CAPS% ^

! timeoverlay ^

! queue ! ffenc_mpeg4 pass=0 bitrate=256000 rc-buffer-aggressivity=99 trellis=0 ^

! tee name= »display » ^

! rtpmp4vpay send-config=true ^

! rtpbin.send_rtp_sink_0 ^

rtpbin.send_rtp_src_0 ! udpsink port=%STREAMPORT% host=%STREAMTO% ^

display. ^

! queue ! decodebin ! ffmpegcolorspace ! autovideosink

 

pause

Il faut adapter les deux lignes set à votre configuration sachant que STREAMTO doit être associé à l’adresse IP de votre machine cible (la machine Fedora 14 dans mon cas) et que la résolution de votre Webcam doit être compatible avec les valeur de CAPS.

On exécute ensuite le fichier .bat (une fenêtre CMD va s’ouvrir et afficher les éventuels message d’erreurs).

La ligne de commande qui va s’occuper de l’encodage MPEG-4 est la suivante:

ffenc_mpeg4 pass=0 bitrate=256000 rc-buffer-aggressivity=99 trellis=0

Le paramètre bitrate (256 Kbps) va fixer le débit cible du streaming. Cette valeur est bien sur à adapter selon la résolution et la fréquence (fps) de votre source vidéo.

L’encapsultation dans une trame RTP est faite grâce à la commande:

rtpmp4vpay send-config=true

L’option send-config (=true)  permet à Gstreamer d’envoyer régulièrement sur le réseau (trame RTP) des informations sur les caractéristiques du stream au lieu de les envoyer seulement au début de la session.

Réception du stream depuis GNU/Linux

C’est (un peu) plus simple, on va créer un shell script server.sh:

#!/bin/sh

 

CAPS= »application/x-rtp,media=\(string\)video,clock-rate=\(int\)90000,encoding-name=\(string\)MP4V-ES,payload=\(int\)96″

PORT=5000

 

gst-launch -tv gstrtpbin name=rtpbin latency=0 buffer-mode=0 \

udpsrc caps=$CAPS port=$PORT do-timestamp=true \

! rtpbin.recv_rtp_sink_0 \

rtpbin. ! rtpmp4vdepay ! ffdec_mpeg4 ! autovideosink

Une fois le script édité, il faut le rendre exécutable:

chmod a+x server.sh

Puis executer le script pour recevoir le stream venant du PC Window

./server.sh

Et si on veut ajouter du son ?

Il suffit d’adapter les pipelines ! A tittre d’exemple, vous pouvez consulter les scripts suivants:

J’ai également essayé d’utiliser le codec X.264 (x264enc + x264dec) succés pour l’instant (qualité très mauvaise).

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

MyScreenCast passe en version 0.11

Il y quelques mois, j’avais écrit un script shell (MyScreenCast) permettant d’automatiser, en ligne de commande, la création d’un screencast (une vidéo de votre écran) avec des outils libres disponibles sur les distributions GNU/Linux (notamment GStreamer).

Je viens de mettre en ligne la version 0.11 de ce script avec les fonctions suivantes:

  • possibilité d’incruster un texte en overlay avec l’option  -o <Bla bla>
  • encodage du même screencast avec différents codecs
  • amélioration des pipelines GStreamer

Ces fonctions viennent s’ajouter aux fonctions suivantes:

  • capture vidéo de l’écran quelque soit sa résolution
  • capture audio (depuis le microphone par défaut de votre système)
  • incrustation de la vidéo venant de votre Webcam (avec l’option -w)
  • affichage des touches actionnées avec keymon (avec l’option -k)

Pour tester ce logiciel, il faut récupérer la dernière version du script:

MyScreencast

Puis de lancer la ligne de commande suivante:

chmod a+x ./myscreencast.sh

./myscreencast.sh

Comme toujours j’attend vos retours / tests sur d’autres distributions (je l’ai testé sous Ubuntu 10.10).

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

Installation et test de Flumotion 0.8

Flumotion est un serveur de streaming open-source sous licence GPL. Il permet de diffuser à des utilisateurs ne disposant que d’un simple navigateur Web des contenus audio et vidéo.

La dernière version disponible (la 0.8) apporte une fonctionnalité que je trouve intéressante de tester: le support du conteneur WebM et du codec vidéo VP8 que gOOgle à libéré il y a quelques mois.

Nous allons voir dans ce billet comment installer et configurer Flumotion 0.8 sur une distribution GNU/Linux Ubuntu Desktop 10.10.

Compilation de Flumotion 0.8

Récupération des sources:

mkdir ~/src

cd ~/src

wget http://www.flumotion.net//src/flumotion/flumotion-0.8.0.tar.gz

tar zxvf flumotion-0.8.0.tar.gz

cd ~/src/flumotion-0.8.0

Installation des librairies (en plus de mon installation standard d’Ubuntu), j’ai du ajouter:

sudo aptitude install python-all-dev python-kiwi

Configuration et compilation:

./configure

make

sudo make install

sudo mkdir /usr/local/etc/flumotion/

sudo cp conf/default.pem /usr/local/etc/flumotion/

Configuration de Flumotion 0.8

Le serveur Flumotion utilise deux processus: flumotion-manager et flumotion-worker.

Le premier processus (flumotion-manager) à besoin d’un fichier de configuration nommé planet.xml. Je vous propose donc de partir du fichier de configuration fourni avec les sources et de le copier dans un répertoire de votre machine.

mkdir ~/flumotion

mkdir ~/flumotion/conf

cp ~/src/flumotion-0.8.0/conf/managers/default/planet.xml ~/flumotion/conf/

Puis de l’éditer:

gedit ~/flumotion/conf/planet.xml

La ligne vraiment intéressante à modifier est celle-ci:

user:PSfNpHTkpTx1M

Elle défini l’utilisateur user avec le mot de passe par défaut test (encodé).

Remarque: Pour générer un nouveau couple login/password, le plus simple est de ce rendre sur ce site et de remplacer le résultat dans le fichier ~/flumotion/conf/planet.xml.

On lance ainsi le processus avec la commande suivante:

flumotion-manager ~/flumotion/conf/planet.xml &

On vérifie que le processus est bien lancé:

ps auxw | grep flumotion

labo    16352 10.4  0.3  18300 12724 pts/3    S    15:41   0:00 /usr/bin/python /usr/local/bin/flumotion-manager /home/labo/flumotion/conf/planet.xml

Le deuxième processus (flumotion-worker) n’a pas besoin d’un fichier de configuration. Il faut juste passer en paramètre l’utilisateur user avec le mot de passe test (clair) à utiliser pour se connecter au processus flumotion-manager:

flumotion-worker -v -u user -p test

Utilisation de Flumotion 0.8

On va utiliser le programme flumotion-admin pour administrer notre serveur Flumotion:

flumotion-admin &

La fenêtre suivante devrait s’afficher :

Remarque: si vous installez Flumotion sur un serveur sans interface graphique, il faudra utiliser flumotion-admin-text en lieu et place de flumotion-admin.

On clique sur Suivant:

On clique sur Suivant puis on entre le login user et le password test:

Après avoir cliqué sur Suivant, un assistant de configuration (wizard) va s’afficher:

On arrête de cliquer quelques instant pour voir que Flumotion propose deux scénarios:

  • configuration d’un streaming « live » à partir d’une camera / webcam
  • configuration d’un streaming « on demand » à partir d’un fichier

Configuration d’un « streaming live »

Comme un des objectifs de ce billet est de tester la diffusion live en WebM/VP8, on choisi la première option dans la fenêtre suivante:

Si vous n’avez pas de caméra digitale ou de Webcam sur votre machine, vous pouvez utiliser le « test video producer »  qui est en fait une mire de test (je rappelle de Flumotion se base sur GStreamer et cette mire est en fait généré par le plugin videotestsrc).

On configure la mire:

Il est ensuite possible de configurer un texte ou un logo qui sera affiché en overlay sur la vidéo:

On passe ensuite à la configuration de la « mire audio »:

Puis on défini les paramètres du streaming: conteneur, codec vidéo et codec audio:

Au niveau du codec vidéo VP8, on peut soit définir un débit fixe (CBR) ou bien une qualité fixe (VBR). Pour du streaming live, je conseille plutôt du CBR, par exemple à 400 Kbps:

De même pour le codec audio Vorbis:

On défini ensuite si l’on veut streamer sur HTTP (seule option disponible pour l’instant) et/ou sauver le résultat du streaming dans un fichier local sur le serveur (cette option peut être intéressante pour relire la vidéo de manière offline).

Enfin, on défini le point de montage (URL) ainsi que le port TCP à partir duquel le serveur sera accessible. Il est également possible de limiter le streaming (nombre d’utilisateur max, bande passante max…):

On peut également préciser la licence de diffusion de votre streaming:

Et voilà le travail, votre serveur de streaming est opérationnel:

Pour le tester il suffit de ccopier l’URL de l’onglet Statistiques dans (attention pour voir la vidéo depuis une autre machine, il faut remplacer le nom d’hôte avant le :8800 par l’adresse IP de la machine):

  • un navigateur Web compatible WebM/VP8: Chromium
  • un lecteur multimedia compatible WebM/VP8: Totem sous Ubuntu

La vidéo devrait s’afficher:

Pour sauvegarder cette configuration de streaming, il suffit de cliquer sur Connexion > Exporter la connexion puis de sauvegarder le fichier au format XML (Connexion > Importer pour la réimporter dans Flumotion).

Les sources vidéos possibles pour un streaming live sont:

  • la mire (pour les tests)
  • webcam (j’ai rencontré un problème avec la mienne, voir le dernier chapitre de ce billet)
  • TV card
  • Loop video (prend en entrée un fichier OGG et génère une boucle infini à partir de cette vidéo)
  • Firewire

Configuration d’un streaming on-demand (VoD)

Avant de tester la vidéo à la demande, il faut disposer de fichiers vidéos encodés au format WebM (pour la VoD, la version communautaire de Flumotion supporte également le format OGG). Pour produire de tel fichier, je vous conseille la lecture de ce billet. Une fois les vidéos localisées dans un répertoire de votre machine faisant tourner le serveur Flumotion, il suffit de faire appel à l’assistant via le menu Contrôler > Lancer l’assistant de flumotion-admin.

Il faut seulement définir le répertoire ou sont stockées les vidéos:

Puis identifier la liste des vidéos disponibles et leurs URLs dans l’onglet Browser. Là encore, il faut adapter l’adresse en remplaçant le nom logique par l’adresse IP de votre machine Flumotion si vous voulez consulter ces vidéos sur d’autres machines du réseau.

Enfin, vous pouvez ouvrir cette URL soit dans un navigateur Web qui prend en charge WebM (par exemple Chromium):

Soit dans votre lecteur multimédia par défaut (par exemple Totem, ouvrir en utilisant CTRL+L):

Pour une intégration plus « web design compliant » de vos vidéos dans des pages Web (plutôt qu’un bête affichage en full-screen), il faut utiliser le tag HTML5 <video> dont j’ai donné plusieurs syntaxe d’utilisation dans ce billet.

Problèmes rencontrés…

Lors de mes tests, j’ai rencontré un problème lors de la détection de ma WebCam Logitech QuickCam Pro 4000 (qui marche très bien par ailleurs). La détection des informations n’aboutie pas…

Un autre problème est l’ouverture des fichiers VoD à partir de VLC qui supporte pourtant le format WebM. Le son passe correctement mais la vidéo reste désespérément noire…

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

Installation complète de GStreamer sous Fedora 14

Gstreamer est un framework multimedia très puissant que j’aborde régulièrement sur mon blog (voir la liste des articles ici). Il fonctionne avec un système de « plugins » lui permettant d’apporter de nouvelles fonctions sans toucher au coeur du framework.

Comme toutes les distributions GNU/Linux, Fedora est installée par défaut avec GStreamer et un certain nombre de plugins (environ 180 sur ma toute fraîche Fedora 14).   Nous allons donc voir dans ce billet comment installer « la totale » (c’est à dire la liste complète des plugins pour GStreamer).

Installation des dépôts

J’utilise les depôts RPMFusion qui contienne les dernières versions stable de GStreamer et des plugins:

su –

yum -y localinstall –nogpgcheck http://fr2.rpmfind.net/linux/rpmfusion/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://fr2.rpmfind.net/linux/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

yum update

Installation de GStreamer et de tous les composants

Cette installation devrait occuper environ 160 Mo sur votre disque dur.

LISTE=`yum -q list available ‘*gstreamer*’ | awk ‘{print $1 }’ | grep gstreamer | xargs -eol` ; yum -y install $LISTE

A la fin de cette installation, on peut demander le nombre de plugins avec la commande suivantes:

gst-inspect | tail -1

Nombre total :229 greffons (2 éléments de liste noire not shown), 1125 fonctionnalités

Et voili, on a donc un gain de 49 plugins 🙂 !

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
Gstreamer Open-source Video

Mise à jour du script de screencast

Il y quelques mois, j’avais écrit un script shell (MyScreenCast) permettant d’automatiser la création d’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’ajouter une nouvelle option permettant d’afficher sur l’écran les touches cliqués (clavier et souris) lors du screencast. J’utilise pour cela le logiciel libre key-mon (licence Apache v2).

Comme il n’est pas encore disponible via un PPA, il faut installer le logiciel (version 1.2.2 au moment de l’écriture de ce billet) à la mimine:

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

Support de WebM

J’ai modifier le script pour qu’il demande à la fin de la capture le format dans lequel le screencast doit être compressé, les formats disponibles sont les suivants:

  • H.264 (codec vidéo X.264 et audio AAC)
  • OGV (codec vidéo Théora et audio Vorbis)
  • WebM (codec vidéo VP8 et audio Vorbis)

Comment tester ces nouvelles fonctions ?

Il faut récupérer la dernière version du script:

MyScreencast

version 0.9

Puis de lancer la ligne de commande suivante:

chmod a+x ./myscreencast.sh

./myscreencast.sh -k -w

PS1: le flag -k permet de lancer le logiciel key-mon

PS2: le flag -w permet, si vous avez une webcam d’afficher votre tête dans une fenêtre…

Je suis toujours preneur de pistes d’amèliorations sur ce script !

Bon screencast à vous !

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
Musique Open-source Video

Petite ligne de commande anti vuvuzela

Marre d’entendre les vuvuzelas lors des matchs de la coupe du monde 2010 ? Il y a un moyen très simple de supprimer les fréquences correspondantes à partir d’un filtre VLC.

Voici donc une ligne de commande qui va:

  • récupérer le fichier vidéo du match sur le site de France Television
  • ouvrir le fichier vidéo en utilisant VLC et en y appliquant le filtre « anti vuvuzelas« 

La ligne de commande en question:

[shell]
vlc –audio-filter param_eq –param-eq-f1=233 –param-eq-f2=466 –param-eq-f3=932 –param-eq-gain1=-20 –param-eq-gain2=-20 –param-eq-gain3=-20 –param-eq-lowf=100 –param-eq-lowgain=15 –param-eq-q1=10 –param-eq-q2=10 –param-eq-q3=10 mms://direct.francetv.fr/siege/_\!/evt/fr/soccer_wc_2010.wsx\?aifp=v18\&auth=daEcSbicgdCaGa1dYdobEbSbTbyc2cYaKbQ-bmf28I-dW-FytntDdLd9dc
[/shell]