Difference between revisions of "Gstreamer"

From ArmadeusWiki
Jump to: navigation, search
m (MPEG 1/2)
(Audio)
Line 65: Line 65:
 
<pre class="apf">
 
<pre class="apf">
 
# gst-launch audiotestsrc ! audioconvert ! audioresample ! alsasink
 
# gst-launch audiotestsrc ! audioconvert ! audioresample ! alsasink
Setting pipeline to PAUSED ...
+
</pre>
Pipeline is PREROLLING ...
+
* same test but with a given sound card (if you have more than one like on the [[APF6Dev]]):
Pipeline is PREROLLED ...
+
<pre class="apf">
Setting pipeline to PLAYING ...
+
# gst-launch audiotestsrc ! audioconvert ! audioresample ! alsasink device='sysdefault:CARD=imxhdmisoc'
New clock: GstAudioSinkClock
+
 
</pre>
 
</pre>
 
* play a music file (here a .ogg, supposing the libgstogg plugin was installed):
 
* play a music file (here a .ogg, supposing the libgstogg plugin was installed):
Line 75: Line 74:
 
# gst-launch filesrc location=toto.ogg ! decodebin ! audioconvert ! audioresample ! alsasink
 
# gst-launch filesrc location=toto.ogg ! decodebin ! audioconvert ! audioresample ! alsasink
 
</pre>
 
</pre>
* record a sound from a mic (APF27 only) and store it as an uncompressed wav file:
+
* record a sound from an Input Line/Mic and store it as an uncompressed wav file:
 
<pre class="apf">
 
<pre class="apf">
 
# gst-launch alsasrc ! audioconvert ! audioresample ! wavenc ! filesink location=mic.wav
 
# gst-launch alsasrc ! audioconvert ! audioresample ! wavenc ! filesink location=mic.wav
 
</pre>
 
</pre>
* record a sound from a mic (APF27 only) and compress it (ogg/worbis):
+
* record a sound from an Input Line/Mic and compress it (ogg/worbis):
 
<pre class="apf">
 
<pre class="apf">
 
# gst-launch alsasrc ! audioconvert ! audioresample ! vorbisenc ! oggmux ! filesink location=mic.ogg
 
# gst-launch alsasrc ! audioconvert ! audioresample ! vorbisenc ! oggmux ! filesink location=mic.ogg
 
</pre>
 
</pre>
* record a sound from a mic (APF27 only) @ 8KHz (16KHz is too CPU consuming), compress it with [[Speex]] and send it to your Host (here 192.168.1.2) at port 6666:
+
* record a sound from an Input Line/Mic @ 8KHz (16KHz is too CPU consuming on [[APF27]]), compress it with [[Speex]] and send it to your Host (here 192.168.1.2) at port 6666:
 
<pre class="apf">
 
<pre class="apf">
 
# gst-launch -v alsasrc ! audioconvert ! audioresample ! 'audio/x-raw-int,rate=8000,width=16,channels=1' ! speexenc ! rtpspeexpay ! udpsink host=192.168.1.2 port=6666
 
# gst-launch -v alsasrc ! audioconvert ! audioresample ! 'audio/x-raw-int,rate=8000,width=16,channels=1' ! speexenc ! rtpspeexpay ! udpsink host=192.168.1.2 port=6666
 
</pre>
 
</pre>
 +
* to live decode the stream on your PC:
 
<pre class="host">
 
<pre class="host">
 
$ gst-launch udpsrc port=6666 caps="application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110" ! gstrtpjitterbuffer ! rtpspeexdepay ! speexdec ! audioconvert ! audioresample ! autoaudiosink
 
$ gst-launch udpsrc port=6666 caps="application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110" ! gstrtpjitterbuffer ! rtpspeexdepay ! speexdec ! audioconvert ! audioresample ! autoaudiosink
 
</pre>
 
</pre>
 +
* to store the stream in Wav format on your PC:
 
<pre class="host">
 
<pre class="host">
 
$ gst-launch udpsrc port=6666 caps="application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110" ! gstrtpjitterbuffer ! rtpspeexdepay ! speexdec ! audioconvert ! audioresample ! wavenc ! filesink location=toto.wav
 
$ gst-launch udpsrc port=6666 caps="application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110" ! gstrtpjitterbuffer ! rtpspeexdepay ! speexdec ! audioconvert ! audioresample ! wavenc ! filesink location=toto.wav

Revision as of 10:00, 25 March 2015

Page under construction... Construction.png Informations on this page are not guaranteed !!

Installation

$ make menuconfig
Package Selection for the target  --->
    Audio and video libraries and applications  --->
        ...
        [*] gstreamer
        [*]   require libxml2 for registry and load/save
        -*-   gst-plugins-base  --->
        [*]   gst-plugins-good  --->
        [*]   gst-plugins-bad  --->
        [*]   gst-plugins-ugly  --->

Plugins worth to activate:

  • base:
  • good:
  • bad:
  • ugly:

Usage

Check installed plugins

  • To see all installed plugins:
# gst-inspect
videoscale:  videoscale: Video scaler
queue2:  queue2: Queue               
ffmpegcolorspace:  ffmpegcolorspace: FFMPEG Colorspace converter
audiorate:  audiorate: Audio rate adjuster                      
audioconvert:  audioconvert: Audio converter                    
audioresample:  audioresample: Audio resampler                  
volume:  volume: Volume
...
  • To have more details about one particular plugin (here alsasrc):
# gst-inspect alsasrc
Factory Details:     
  Long name:    Audio source (ALSA)
  Class:        Source/Audio       
  Description:  Read from a sound card via ALSA
  Author(s):    Wim Taymans <wim@fluendo.com>  
  Rank:         primary (256)                  

Plugin Details:
  Name:                 alsa
  Description:          ALSA plugin library
  Filename:             /usr/lib/gstreamer-0.10/libgstalsa.so
  Version:              0.10.25                              
  License:              LGPL                                 
  Source module:        gst-plugins-base                     
  Binary package:       GStreamer Base Plug-ins source release
  Origin URL:           Unknown package origin                
...
<cut>

Audio

  • play a monotic tone to check your sound configuration is working (if not please configure ALSA):
# gst-launch audiotestsrc ! audioconvert ! audioresample ! alsasink
  • same test but with a given sound card (if you have more than one like on the APF6Dev):
# gst-launch audiotestsrc ! audioconvert ! audioresample ! alsasink device='sysdefault:CARD=imxhdmisoc'
  • play a music file (here a .ogg, supposing the libgstogg plugin was installed):
# gst-launch filesrc location=toto.ogg ! decodebin ! audioconvert ! audioresample ! alsasink
  • record a sound from an Input Line/Mic and store it as an uncompressed wav file:
# gst-launch alsasrc ! audioconvert ! audioresample ! wavenc ! filesink location=mic.wav
  • record a sound from an Input Line/Mic and compress it (ogg/worbis):
# gst-launch alsasrc ! audioconvert ! audioresample ! vorbisenc ! oggmux ! filesink location=mic.ogg
  • record a sound from an Input Line/Mic @ 8KHz (16KHz is too CPU consuming on APF27), compress it with Speex and send it to your Host (here 192.168.1.2) at port 6666:
# gst-launch -v alsasrc ! audioconvert ! audioresample ! 'audio/x-raw-int,rate=8000,width=16,channels=1' ! speexenc ! rtpspeexpay ! udpsink host=192.168.1.2 port=6666
  • to live decode the stream on your PC:
$ gst-launch udpsrc port=6666 caps="application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110" ! gstrtpjitterbuffer ! rtpspeexdepay ! speexdec ! audioconvert ! audioresample ! autoaudiosink
  • to store the stream in Wav format on your PC:
$ gst-launch udpsrc port=6666 caps="application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110" ! gstrtpjitterbuffer ! rtpspeexdepay ! speexdec ! audioconvert ! audioresample ! wavenc ! filesink location=toto.wav

Video

Plugins

  • You'll need to activate a few plugins in Buildroot menuconfig to play videos with Gstreamer:
Package Selection for the target  --->
    Audio and video libraries and applications  --->
        ...
        -*-   gst-plugins-base  --->
              [*]   ffmpegcolorspace (mandatory for video playback)
              ...
              [*]   playback (mandatory)
        [*]   gst-plugins-good  --->
              [*]   videobox
              [*]   videocrop
        [*]   gst-plugins-bad  --->
              [*]   fbdev

Test installation

  • To test your Gstreamer installation, you need to select a plugin in Buildroot menuconfig:
Package Selection for the target  --->
    Audio and video libraries and applications  --->
        ...
        -*-   gst-plugins-base  --->
              [*]   videotestsrc
  • Then on your APF system, launch the following command:
# gst-launch -v videotestsrc ! videocrop top=42 left=1 right=4 bottom=0 ! fbdevsink

You must see a pattern displayed on the screen if your Gstreamer installation is working well.

Play video

MPEG 1/2
  • If you want to play MPEG 1/2 video, you have to install some plugins in Buildroot menuconfig:
Package Selection for the target  --->
    Audio and video libraries and applications  --->
        ...
        [*]   gst-plugins-bad  --->
              [*]   mpegdemux
              [*]   mpegtsmux
              [*]   mpeg4videoparse
              [*]   mpegvideoparse
        [*]   gst-plugins-ugly  --->
              [*]   mpegaudioparse
              [*]   mpegstream
With FFmpeg decoder
  • In Buildroot menuconfig, select:
Package Selection for the target  --->
    Audio and video libraries and applications  --->
        ...
        -*- ffmpeg  --->
        ...
        [*] gst-ffmpeg
  • On your APF system, play the video with the command:
# gst-launch filesrc location=VIDEO_FILE_LOCATION ! mpegdemux ! ffdec_mpegvideo ! ffmpegcolorspace ! fbdevsink
With mpeg2dec decoder
  • In Buildroot menuconfig, select:
Package Selection for the target  --->
    Audio and video libraries and applications  --->
        ...
        [*]   gst-plugins-ugly  --->
              [*]   mpeg2dec
  • On your APF system, play the video with the command:
# gst-launch filesrc location=VIDEO_FILE_LOCATION ! mpegdemux ! mpeg2dec ! ffmpegcolorspace ! fbdevsink

Links