Difference between revisions of "GStreamer"

From air
Jump to navigation Jump to search
Line 45: Line 45:
   
 
==Outils==
 
==Outils==
  +
  +
  +
  +
  +
  +
 
===gst-launch===
 
===gst-launch===
 
assemblage des pipelines en ligne de commande
 
assemblage des pipelines en ligne de commande
Line 50: Line 56:
   
 
Exemple
 
Exemple
  +
  +
Récupérez premièrement la vidéo gratuite Big Buck Bunny sur http://www.bigbuckbunny.org/index.php/download/
   
   
 
TODO commentaire
 
TODO commentaire
 
<pre>
 
<pre>
# gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
+
# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
 
</pre>
 
</pre>
   
Line 60: Line 68:
 
TODO commentaire
 
TODO commentaire
 
<pre>
 
<pre>
# gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
+
# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
 
</pre>
 
</pre>
   
Line 66: Line 74:
 
TODO commentaire
 
TODO commentaire
 
<pre>
 
<pre>
# gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
+
# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
 
</pre>
 
</pre>
   
Line 74: Line 82:
 
# gst-inspect filesrc
 
# gst-inspect filesrc
   
# gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
+
# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
 
</pre>
 
</pre>
   
Line 80: Line 88:
 
TODO commentaire
 
TODO commentaire
 
<pre>
 
<pre>
# gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
+
# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink
 
</pre>
 
</pre>
   
Line 92: Line 100:
 
TODO commentaire
 
TODO commentaire
 
<pre>
 
<pre>
# gst-launch filesrc location=../videos/myvideo_480p_stereo.ogg ! oggdemux ! theoradec ! videoscale ! video/x-raw-yuv,height=240 ! xvimagesink
+
# gst-launch filesrc location=../videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! videoscale ! video/x-raw-yuv,height=240 ! xvimagesink
 
</pre>
 
</pre>
   
Line 108: Line 116:
   
 
<pre>
 
<pre>
gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux name=demux
+
gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux name=demux
 
demux. ! queue ! vorbisdec ! audioconvert ! audioresample ! osssink
 
demux. ! queue ! vorbisdec ! audioconvert ! audioresample ! osssink
 
demux. ! queue ! theoradec ! xvimagesink
 
demux. ! queue ! theoradec ! xvimagesink
Line 115: Line 123:
   
 
<pre>
 
<pre>
gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux name=demux
+
gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux name=demux
 
demux. ! queue ! vorbisdec ! audioconvert ! audioresample ! autoaudiosink
 
demux. ! queue ! vorbisdec ! audioconvert ! audioresample ! autoaudiosink
 
demux. ! queue ! theoradec ! autovideosink
 
demux. ! queue ! theoradec ! autovideosink
Line 132: Line 140:
 
# gst-launch ???
 
# gst-launch ???
 
</pre>
 
</pre>
 
   
 
===gst-impect===
 
===gst-impect===

Revision as of 05:47, 20 October 2011

GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing


Introduction

GStreamer est un Framework multimédia avec une license GNU LGPL. Il permet la manipulation de flux audio et vidéos. Cette biblothèque logcielle est développé en C, depuis plus de 10 ans. Avec une première version sortie le 31 octobre 1999, la version 1.O de GStreamer est attendue pour fin 2011. Fonctionnant complètement sous UNIX, ce framework est également utilisable sous windows et macOS mais de façon limitée.


Un premier coup d'oeil avec l'exemple "HelloWorld" de Gtreamer http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-helloworld.html#section-hello-img

Fonctionnalité

  • Principe

Manipulation de flux audio, vidéo,via des pipelines. Ces pipelines sont composés d’éléments ayant une fonction qui leur est propre. Il existe trois types d'éléments:

  • les éléments sources ("source element"). Ils produisent des données. Par exemple une webcam qui enregistre une vidéo ou un micro avec un flux audio.
  • les éléments de sorties ("sink element"). Ils ne produisent pas de donnée. Ils sont donc souvent en bout de pipeline. Par exemple, l'affichage sur une écran, ou la diffusion d'un son avec des hauts parleurs.
  • les éléments de filtrage ("filter element"). Ils ont une ou plusieurs entrées et une ou plusieurs sorties. Ils effectuent des traitements sur les données et les réinjecte dans le pipeline. Par exemple, convertir un flux pour qu'il soit lisible par la sortie, ou effectuer une déformation de l'image.



Traitements possibles:

  • Streaming
  • Encodage

API

  • Java: librairie gstreamer-java
  • Python: librairie gst-python
  • Android

Plus d'information: http://gstreamer.freedesktop.org/bindings/


Installation

Linux/Ubuntu

# sudo apt-get install gstreamer0.10-tools gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg

# gst-inspect


Outils

gst-launch

assemblage des pipelines en ligne de commande


Exemple

Récupérez premièrement la vidéo gratuite Big Buck Bunny sur http://www.bigbuckbunny.org/index.php/download/


TODO commentaire

# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink


TODO commentaire

# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink


TODO commentaire

# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink


TODO commentaire

# gst-inspect filesrc

# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink


TODO commentaire

# gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink


TODO commentaire

# gst-launch filesrc location=./videos/myvideo_480p_stereo.ogg ! oggdemux ! theoradec ! xvimagesink


TODO commentaire

# gst-launch filesrc location=../videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux ! theoradec ! videoscale ! video/x-raw-yuv,height=240 ! xvimagesink


gst-launch v4l2src ! videoscale ! video/x-raw-yuv,height=240 ! xvimagesink


gst-launch v4l2src ! videoscale ! video/x-raw-yuv,height=240 ! ffmpegcolorspace ! quarktv ! ffmpegcolorspace ! xvimagesink


gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux name=demux
    demux. ! queue ! vorbisdec ! audioconvert ! audioresample ! osssink
    demux. ! queue ! theoradec ! xvimagesink


gst-launch filesrc location=./videos/big_buck_bunny_1080p_stereo.ogg ! oggdemux name=demux
    demux. ! queue ! vorbisdec ! audioconvert ! audioresample ! autoaudiosink
    demux. ! queue ! theoradec ! autovideosink


Gst-launch en réseau (multicast) TODO commentaire Pour le serveur

# gst-launch ???

Pour le récepteur

# gst-launch ???

gst-impect

GstEditor

éditeur graphique

File:GstEditor.png

Démonstration avec gst-launch

Liens