.TH "GStreamer" "1" "May 2007"
.SH "NAME"
gst\-launch \- build and run a GStreamer pipeline
.SH "SYNOPSIS"
\fBgst\-launch\fR \fI[OPTION...]\fR PIPELINE\-DESCRIPTION
.SH "DESCRIPTION"
.LP
\fIgst\-launch\fP is a tool that builds and runs basic
\fIGStreamer\fP pipelines.

In simple form, a PIPELINE\-DESCRIPTION is a list of
elements separated by exclamation marks (!). Properties may be appended to
elements, in the form \fIproperty=value\fR.

For a complete description of possible PIPELINE-DESCRIPTIONS see the section
\fIpipeline description\fR below or consult the GStreamer documentation.

Please note that \fIgst\-launch\fP is primarily a debugging tool for
developers and users. You should not build applications on top of it. For
applications, use the gst_parse_launch() function of the GStreamer API as an
easy way to construct pipelines from pipeline descriptions.
.
.SH "OPTIONS"
.l
\fIgst\-launch\fP accepts the following options:
.TP 8
.B  \-\-help
Print help synopsis and available FLAGS
.TP 8
.B  \-v, \-\-verbose
Output status information and property notifications
.TP 8
.B  \-q, \-\-quiet
Do not print any progress information
.TP 8
.B  \-m, \-\-messages
Output messages posted on the pipeline's bus
.TP 8
.B  \-t, \-\-tags
Output tags (also known as metadata)
.TP 8
.B  \-e, \-\-eos\-on\-shutdown
Force an EOS event on sources before shutting the pipeline down. This is
useful to make sure muxers create readable files when a muxing pipeline is
shut down forcefully via Control-C.
.TP 8
.B  \-i, \-\-index
Gather and print index statistics. This is mostly useful for playback or
recording pipelines.
.TP 8
.B  \-f, \-\-no\-fault
Do not install a fault handler
.TP 8
.B  \-T, \-\-trace
Print memory allocation traces. The feature must be enabled at compile time to
work.
.TP 8

.
.SH "GSTREAMER OPTIONS"
.l
\fIgst\-launch\fP also accepts the following options that are common
to all GStreamer applications:
.TP 8
.B  \-\-gst\-version
Prints the version string of the \fIGStreamer\fP core library.
.TP 8
.B  \-\-gst\-fatal\-warnings
Causes \fIGStreamer\fP to abort if a warning message occurs. This is equivalent
to setting the environment variable G_DEBUG to 'fatal_warnings' (see the
section \fIenvironment variables\fR below for further information).
.TP 8
.B  \-\-gst\-debug=STRING
A comma separated list of category_name:level pairs to specify debugging levels
for each category. Level is in the range 0-9 where 0 will show no messages, and
9 will show all messages. The wildcard * can be used to match category names.
Note that the order of categories and levels is important, wildcards at the
end may override levels set earlier. The log levels are: 1=ERROR, 2=WARNING,
3=FIXME, 4=INFO, 5=DEBUG, 6=LOG, 7=TRACE, 9=MEMDUMP. Since GStreamer 1.2 one
can also use the debug level names, e.g. \-\-gst\-debug=*sink:LOG. A full
description of the various debug levels can be found in the GStreamer core
library API documentation, in the "Running GStreamer Applications" section.

Use \-\-gst\-debug\-help to show category names

Example:
GST_CAT:5,GST_ELEMENT_*:3,oggdemux:5

.TP 8
.B  \-\-gst\-debug\-level=LEVEL
Sets the threshold for printing debugging messages.  A higher level
will print more messages.  The useful range is 0-9, with the default
being 0. Level 6 (LOG level) will show all information that is usually
required for debugging purposes. Higher levels are only useful in very
specific cases. See above for the full list of levels.
.TP 8
.B  \-\-gst\-debug\-no\-color
\fIGStreamer\fP normally prints debugging messages so that the
messages are color-coded when printed to a terminal that handles
ANSI escape sequences.  Using this option causes \fIGStreamer\fP
to print messages without color. Setting the \fBGST_DEBUG_NO_COLOR\fR
environment variable will achieve the same thing.
.TP 8
.B  \-\-gst\-debug\-color\-mode
\fIGStreamer\fP normally prints debugging messages so that the
messages are color-coded when printed to a terminal that handles
ANSI escape sequences (on *nix), or uses W32 console API to color the
messages printed into a console (on W32). Using this option causes
\fIGStreamer\fP to print messages without color ('off' or 'disable'),
print messages with default colors ('on' or 'auto'), or print messages
using ANSI escape sequences for coloring ('unix'). Setting the
\fBGST_DEBUG_COLOR_MODE\fR environment variable will achieve the same thing.
.TP 8
.B  \-\-gst\-debug\-disable
Disables debugging.
.TP 8
.B  \-\-gst\-debug\-help
Prints a list of available debug categories and their default debugging level.
.TP 8
.B  \-\-gst\-plugin\-spew
\fIGStreamer\fP info flags to set
Enable printout of errors while loading \fIGStreamer\fP plugins
.TP 8
.B  \-\-gst\-plugin\-path=PATH
Add directories separated with ':' to the plugin search path
.TP 8
.B  \-\-gst\-plugin\-load=PLUGINS
Preload plugins specified in a comma-separated list. Another way to specify
plugins to preload is to use the environment variable GST_PLUGIN_PATH

.SH "PIPELINE DESCRIPTION"

A pipeline consists \fIelements\fR and \fIlinks\fR. \fIElements\fR can be put
into \fIbins\fR of different sorts. \fIElements\fR, \fIlinks\fR and \fIbins\fR
can be specified in a pipeline description in any order.

.B Elements

ELEMENTTYPE \fI[PROPERTY1 ...]\fR

Creates an element of type ELEMENTTYPE and sets the PROPERTIES.

.B Properties

PROPERTY=VALUE ...

Sets the property to the specified value. You can use \fBgst\-inspect\fR(1) to
find out about properties and allowed values of different elements.
.br
Enumeration properties can be set by name, nick or value.

.B Bins

\fI[BINTYPE.]\fR ( \fI[PROPERTY1 ...]\fR PIPELINE-DESCRIPTION )
.br

Specifies that a bin of type BINTYPE is created and the given properties are
set. Every element between the braces is put into the bin. Please note the dot
that has to be used after the BINTYPE. You will almost never need this
functionality, it is only really useful for applications using the
gst_launch_parse() API with 'bin' as bintype. That way it is possible to build
partial pipelines instead of a full-fledged top-level pipeline.

.B Links

\fI[[SRCELEMENT].[PAD1,...]]\fR ! \fI[[SINKELEMENT].[PAD1,...]]\fR
\fI[[SRCELEMENT].[PAD1,...]]\fR ! CAPS ! \fI[[SINKELEMENT].[PAD1,...]]\fR

Links the element with name SRCELEMENT to the element with name SINKELEMENT,
using the caps specified in CAPS as a filter.
Names can be set on elements with the name property. If the name is omitted, the
element that was specified directly in front of or after the link is used. This
works across bins. If a padname is given, the link is done with these pads. If
no pad names are given all possibilities are tried and a matching pad is used.
If multiple padnames are given, both sides must have the same number of pads
specified and multiple links are done in the given order.
.br
So the simplest link is a simple exclamation mark, that links the element to
the left of it to the element right of it.
.br

.B Caps

MEDIATYPE \fI[, PROPERTY[, PROPERTY ...]]]\fR \fI[; CAPS[; CAPS ...]]\fR

Creates a capability with the given media type and optionally with given
properties. The media type can be escaped using " or '.
If you want to chain caps, you can add more caps in the same format afterwards.

.B Properties

NAME=\fI[(TYPE)]\fRVALUE
.br
in lists and ranges: \fI[(TYPE)]\fRVALUE

Sets the requested property in capabilities. The name is an alphanumeric value
and the type can have the following case-insensitive values:
.br
- \fBi\fR or \fBint\fR for integer values or ranges
.br
- \fBf\fR or \fBfloat\fR for float values or ranges
.br
- \fBb\fR, \fBbool\fR or \fBboolean\fR for boolean values
.br
- \fBs\fR, \fBstr\fR or \fBstring\fR for strings
.br
- \fBfraction\fR for fractions (framerate, pixel-aspect-ratio)
.br
- \fBl\fR or \fBlist\fR for lists
.br
If no type was given, the following order is tried: integer, float, boolean,
string.
.br
Integer values must be parsable by \fBstrtol()\fP, floats by \fBstrtod()\fP. FOURCC values may
either be integers or strings. Boolean values are (case insensitive) \fIyes\fR,
\fIno\fR, \fItrue\fR or \fIfalse\fR and may like strings be escaped with " or '.
.br
Ranges are in this format:  [ VALUE, VALUE ]
.br
Lists use this format:      { VALUE \fI[, VALUE ...]\fR }

.SH "PIPELINE EXAMPLES"

The examples below assume that you have the correct plug-ins available.
In general, "pulsesink" can be substituted with another audio output
plug-in such as "alsasink" or "osxaudiosink"
Likewise, "xvimagesink" can be substituted with "ximagesink", "glimagesink",
or "osxvideosink". Keep in mind though that different sinks might
accept different formats and even the same sink might accept different formats
on different machines, so you might need to add converter elements like
audioconvert and audioresample (for audio) or videoconvert (for video)
in front of the sink to make things work.

.B Audio playback

.B
        gst\-launch filesrc location=music.mp3 ! mad ! audioconvert ! audioresample ! pulsesink
.br
Play the mp3 music file "music.mp3" using a libmad-based plug-in and
output to an Pulseaudio device

.B
        gst\-launch filesrc location=music.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! pulsesink
.br
Play an Ogg Vorbis format file

.B
        gst\-launch giosrc location=music.mp3 ! mpegaudioparse ! mad ! pulsesink
.br
.B
        gst\-launch giosrc location=http://domain.com/music.mp3 ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
.br
Play an mp3 file or an http stream using GIO

.B
        gst\-launch giosrc location=smb://computer/music.mp3 ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
.br
Use GIO to play an mp3 file located on an SMB server

.B Format conversion

.B
        gst\-launch filesrc location=music.mp3 ! mpegaudioparse ! mad ! audioconvert ! vorbisenc ! oggmux ! filesink location=music.ogg
.br
Convert an mp3 music file to an Ogg Vorbis file

.B
        gst\-launch filesrc location=music.mp3 ! mpegaudioparse ! mad ! audioconvert ! flacenc ! filesink location=test.flac
.br
Convert to the FLAC format

.B Other

.B
        gst\-launch filesrc location=music.wav ! wavparse ! audioconvert ! audioresample ! pulsesink
.br
Plays a .WAV file that contains raw audio data (PCM).

.B
        gst\-launch filesrc location=music.wav ! wavparse ! audioconvert ! vorbisenc ! oggmux ! filesink location=music.ogg
.br
.B
        gst\-launch filesrc location=music.wav ! wavparse ! audioconvert ! lame ! filesink location=music.mp3
.br
Convert a .WAV file containing raw audio data into an Ogg Vorbis or mp3 file

.B
        gst\-launch cdparanoiasrc mode=continuous ! audioconvert ! lame ! mpegaudioparse ! id3v2mux ! filesink location=cd.mp3
.br
rips all tracks from compact disc and convert them into a single mp3 file

.B
        gst\-launch cdparanoiasrc track=5 ! audioconvert ! lame ! mpegaudioparse ! id3v2mux ! filesink location=track5.mp3
.br
rips track 5 from the CD and converts it into a single mp3 file

Using \fBgst\-inspect\fR(1), it is possible to discover settings like the above
for cdparanoiasrc that will tell it to rip the entire cd or only tracks of it.
Alternatively, you can use an URI and gst-launch will find an element (such as
cdparanoia) that supports that protocol for you, e.g.:
.B
       gst\-launch cdda://5 ! lame vbr=new vbr-quality=6 ! filesink location=track5.mp3

.B
        gst\-launch pulsesrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=input.ogg
.br
records sound from your audio input and encodes it into an ogg file

.B Video

.B
        gst\-launch filesrc location=JB_FF9_TheGravityOfLove.mpg ! dvddemux ! mpegvideoparse ! mpeg2dec ! xvimagesink
.br
Display only the video portion of an MPEG-1 video file, outputting to
an X display window

.B
        gst\-launch filesrc location=/flflfj.vob ! dvddemux ! mpegvideoparse ! mpeg2dec ! sdlvideosink
.br
Display the video portion of a .vob file (used on DVDs), outputting to
an SDL window

.B
        gst\-launch filesrc location=movie.mpg ! dvddemux name=demuxer  demuxer. ! queue ! mpegvideoparse ! mpeg2dec ! sdlvideosink  demuxer. ! queue ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
.br
Play both video and audio portions of an MPEG movie

.B
        gst\-launch filesrc location=movie.mpg ! mpegdemux name=demuxer demuxer. ! queue ! mpegvideoparse ! mpeg2dec ! videoconvert ! sdlvideosink   demuxer. ! queue ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
.br
Play an AVI movie with an external text subtitle stream

This example also shows how to refer to specific pads by name if an element
(here: textoverlay) has multiple sink or source pads.

.B
        gst\-launch textoverlay name=overlay ! videoconvert ! videoscale !  autovideosink   filesrc location=movie.avi ! decodebin ! videoconvert ! overlay.video_sink   filesrc location=movie.srt ! subparse ! overlay.text_sink

.br
Play an AVI movie with an external text subtitle stream using playbin

.B
        gst\-launch playbin uri=file:///path/to/movie.avi suburi=file:///path/to/movie.srt

.B Network streaming

Stream video using RTP and network elements.

.B
        gst\-launch v4l2src ! video/x-raw,width=128,height=96,format=UYVY ! videoconvert ! ffenc_h263 ! video/x-h263 ! rtph263ppay pt=96 ! udpsink host=192.168.1.1 port=5000
.br
This command would be run on the transmitter

.B
        gst\-launch udpsrc port=5000 ! application/x-rtp, clock-rate=90000,payload=96 ! rtph263pdepay queue-delay=0 ! ffdec_h263 ! xvimagesink
.br
Use this command on the receiver

.B Diagnostic

.B
        gst\-launch -v fakesrc num-buffers=16 ! fakesink
.br
Generate a null stream and ignore it (and print out details).

.B
        gst\-launch audiotestsrc ! audioconvert ! audioresample ! pulsesink
.br
Generate a pure sine tone to test the audio output

.B
        gst\-launch videotestsrc ! xvimagesink
.br
.B
        gst\-launch videotestsrc ! ximagesink
.br
Generate a familiar test pattern to test the video output

.B Automatic linking

You can use the decodebin element to automatically select the right elements
to get a working pipeline.

.B
        gst\-launch filesrc location=musicfile ! decodebin ! audioconvert ! audioresample ! pulsesink
.br
Play any supported audio format

.B
        gst\-launch filesrc location=videofile ! decodebin name=decoder decoder. ! queue ! audioconvert ! audioresample ! pulsesink   decoder. !  videoconvert ! xvimagesink
.br
Play any supported video format with video and audio output. Threads are used
automatically. To make this even easier, you can use the playbin element:

.B
        gst\-launch playbin uri=file:///home/joe/foo.avi
.br


.B Filtered connections

These examples show you how to use filtered caps.

.B
        gst\-launch videotestsrc ! 'video/x-raw,format=YUY2;video/x-raw,format=YV12' ! xvimagesink
.br
Show a test image and use the YUY2 or YV12 video format for this.

.B
        gst\-launch pulsesrc !  'audio/x-raw,rate=[32000,64000],format={S16LE,S24LE,S32LE}' ! wavenc ! filesink location=recording.wav
.br
record audio and write it to a .wav file. Force usage of signed 16 to 32 bit
samples and a sample rate between 32kHz and 64KHz.


.SH "ENVIRONMENT VARIABLES"
.TP
\fBGST_DEBUG\fR
Comma-separated list of debug categories and levels (e.g.
GST_DEBUG=totem:4,typefind:5). '*' is allowed as a wildcard as part of
debug category names (e.g. GST_DEBUG=*sink:6,*audio*:6). Since 1.2.0 it is
also possible to specify the log level by name (1=ERROR, 2=WARN, 3=FIXME,
4=INFO, 5=DEBUG, 6=LOG, 7=TRACE, 9=MEMDUMP) (e.g. GST_DEBUG=*audio*:LOG)
.TP
\fBGST_DEBUG_NO_COLOR\fR
When this environment variable is set, coloured debug output is disabled.
.TP
\fBGST_DEBUG_DUMP_DOT_DIR\fR
When set to a filesystem path, store 'dot' files of pipeline graphs there.
These can then later be converted into an image using the 'dot' utility from
the graphviz set of tools, like this: dot foo.dot -Tsvg -o foo.svg (png or jpg
are also possible as output format). There is also a utility called 'xdot'
which allows you to view the .dot file directly without converting it first.
.TP
\fBGST_REGISTRY\fR
Path of the plugin registry file. Default is
~/.cache/gstreamer-GST_API_VERSION/registry-CPU.bin where CPU is the
machine/cpu type GStreamer was compiled for, e.g. 'i486', 'i686', 'x86-64',
'ppc', etc. (check the output of "uname -i" and "uname -m" for details).
.TP
\fBGST_REGISTRY_UPDATE\fR
Set to "no" to force GStreamer to assume that no plugins have changed,
been added or been removed. This will make GStreamer skip the initial check
whether a rebuild of the registry cache is required or not. This may be useful
in embedded environments where the installed plugins never change. Do not
use this option in any other setup.
.TP
\fBGST_PLUGIN_PATH\fR
Specifies a list of directories to scan for additional plugins.
These take precedence over the system plugins.
.TP
\fBGST_PLUGIN_SYSTEM_PATH\fR
Specifies a list of plugins that are always loaded by default.  If not set,
this defaults to the system-installed path, and the plugins installed in the
user's home directory
.TP
\fBGST_DEBUG_FILE\fR
Set this variable to a file path to redirect all GStreamer debug
messages to this file. If left unset, debug messages with be output
unto the standard error.
.TP
\fBORC_CODE\fR
Useful Orc environment variable. Set ORC_CODE=debug to enable debuggers
such as gdb to create useful backtraces from Orc-generated code.  Set
ORC_CODE=backup or ORC_CODE=emulate if you suspect Orc's SIMD code
generator is producing incorrect code.  (Quite a few important
GStreamer plugins like videotestsrc, audioconvert or audioresample use Orc).
.TP
\fBG_DEBUG\fR
Useful GLib environment variable. Set G_DEBUG=fatal_warnings to make
GStreamer programs abort when a critical warning such as an assertion failure
occurs. This is useful if you want to find out which part of the code caused
that warning to be triggered and under what circumstances. Simply set G_DEBUG
as mentioned above and run the program in gdb (or let it core dump). Then get
a stack trace in the usual way.
.
.SH FILES
.TP 8
~/.cache/gstreamer-GST_API_VERSION/registry-*.bin
The plugin cache; can be deleted at any time, will be re-created
automatically when it does not exist yet or plugins change. Based on
XDG_CACHE_DIR, so may be in a different location than the one suggested.
.
.SH "SEE ALSO"
.BR gst\-inspect\-GST_API_VERSION (1),
.BR gst\-launch\-GST_API_VERSION (1),
.SH "AUTHOR"
The GStreamer team at http://gstreamer.freedesktop.org/
