Command line examples

Todd Fischer edited this page Apr 13, 2015 · 4 revisions

Table of Contents

Running gstd - the streaming media server

Once the streaming media server has been built, running gstd is easy.

gstd &

I you are on an embedded system that uses custom Linux drivers to access any hardware accelerators, you might need to load some driver modules and manually start D-Bus first.

dbus-daemon --system

The GStreamer Daemon registers with the D-Bus Daemon and then patiently waits for a client to create and control a pipeline.

If you already have a GStreamer Daemon running, you will get the error:

Failed to obtain primary ownership of the service
This usually means there is another instance of gstd already running

You can kill the streaming media server by issuing the command

killall gstd

Monitoring D-Bus messages

If you want to monitor the d-bus messages being exchanged with GStreamer Daemon, run

dbus-monitor --session

Command line streaming media client

GStreamer Daemon includes a gst-launch style client. The client can be used to invoke any of the methods supported by the streaming media server.

The command line streaming media client syntax is

gst-client [<flags>*] [<command> [<arguments>*]]

To see the options or flags available on gst-client, you could enter:

gst-client --help

By the moment, it has three flags available:

 -p, --by_path            Pipeline path, for which command will be apply.  Usage:-p <path>
 -s, --enable_signals     Flag to enable the signals reception.

gst-client has two operation modes, everything on the command line, or interactive. When you want to control an existing pipeline using the command line (non-interactive), you need to use the option '-p' to specify in which pipeline you want to apply the command. The argument to the -p pipeline path argument is either the full path returned by the create command, e.g. /com/ridgerun/gstreamer/gstd/pipe0, or just the number at the end; zero in this case.

The '-s' is useful only in interactive console mode to monitor signals on the active pipeline.

Interactive Console

To open the interactive console, you need to run gst-client without any parameters (but you can include flags).

Executing Commands

To know which commands are available,execute:

gst-client help

The response will show a description of each command, as follows:

Request the syntax of an specific command with "help <command>".
This is the list of supported commands:
 create:	Creates a new pipeline and returns the dbus-path to access it
 destroy:	Destroys the pipeline specified by_path(-p) or the active pipeline
 play:	Sets the pipeline specified by_path(-p) or the active pipeline to play state
 ready:	Sets the pipeline specified by_path(-p) or the active pipeline to ready state
 pause:	Sets the pipeline specified by_path(-p) or the active pipeline to pause state
 null:	Sets the pipeline specified by_path(-p) or active pipeline to null state
 aplay:	Sets the pipeline to play state, it does not wait the change to be done
 aready:	Sets the pipeline to ready state, it does not wait the change to be done
 apause:	Sets the pipeline to pause state, it does not wait the change to be done
 anull:	Sets the pipeline to null state, it does not wait the change to be done
 set:	Sets an element's property value of the pipeline
 get:	Gets an element's property value of the pipeline
 get-duration:	Gets the pipeline duration time
 get-position:	Gets the pipeline position
 sh:	Execute a shell command using interactive console
 get-state:	Get the state of a specific pipeline(-p flag) or the active pipeline
 list-pipes:	Returns a list of all the dbus-path of the existing pipelines
 ping:	Shows if gstd is alive
 active:	Sets the active pipeline,if no <path> is passed:it returns the actual active pipeline
 seek:	Moves current playing position to a new one
 skip:	Skips a period, if period is positive: it moves forward, if negative: it moves backward
 speed:	Changes playback rate:
	*rate>1.0: fast-forward playback,
	*rate<1.0: slow-forward playback,
	*rate=1.0: normal speed.
	When rate is negative: it enables fast|slow-reverse playback 
 exit:	Exit active console
 quit:	Quit active console

You can ask for syntax help for a specific command, using:

gst-client help  <command>

For example:

gst-client help set

Command: set
Description: Sets an element's property value of the pipeline(option -p needed)
Syntax: -p <path> set <element_name> <property_name> <data_type> <value>

Where the supported <data_type>s include: boolean, integer, int64, and string.

Creating a pipeline

Creating a pipeline leaves the GStreamer bus in the NULL state. The pipeline needs to be in the PLAYING state before anything happens.

General format:

gst-client create <gst-launch style pipeline>


gst-client --session create "videotestsrc ! warptv ! ffmpegcolorspace ! ximagesink"


gst-client --session create "audiotestsrc wave=8 ! audioecho delay=1000000 intensity = 0.2 feedback=1 ! audioconvert ! alsasink"

The response will be

Pipeline path created: /com/ridgerun/gstreamer/gstd/pipe0

Now, the pipeline you have just created, is a dbus-object, and its path is the one specified. You will need the path to manipulate a particular pipeline. You can create up to 20 pipelines.

Playing a pipeline

When you create a pipeline, it is in the NULL state. To start the pipeline you need to set it to the PLAY. This is true for pipelines that record as well.

General format:

gst-client -p <path> play


gst-client -p <path_number> play


gst-client --session -p /com/ridgerun/gstreamer/gstd/pipe0 play

or, more simply

gst-client --session -p 0 play

Ubuntu Host Example Session

Start GStreamer Daemon on the D-Bus session bus:

gstd --session &

Verify GStreamer Daemon is alive:

gst-client --session ping

You should get a pong response.

Create a pipline to play audio. Note that the mad decoder doesn't support trickplay, so ffdec_mp3 is used instead.

gst-client --session create "filesrc name=fsrc location=/opt/media/bbb.mp3 ! mp3parse ! ffdec_mp3 ! pulsesink"

Play and pause the pipeline a few times:

gst-client --session -p 0 play
gst-client --session -p 0 pause
gst-client --session -p 0 play

Jump around in the audio file:

gst-client --session -p 0 skip 1000 # time in ms
gst-client --session -p 0 seek 0    # go to start of video

Adjust playback speed

gst-client --session -p 0 speed 1.5 # fast forward
gst-client --session -p 0 speed 0.5 # slow motion
gst-client --session -p 0 speed 1   # normal

Change which file is being played using the existing pipeline

gst-client --session -p 0 ready
gst-client --session -p 0 set fsrc location string /opt/media/davincieffect.mp3
gst-client --session -p 0 play

Destroy the pipeline

gst-client --session -p 0 destroy

Common Problems

The name ... was not provided by any .service files

The gstd streaming media server daemon is not running.

Oops: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory

Miss to run dbus-daemon --system

Failed to start message bus: Could not get UID and GID for username "messagebus"

dbus-1.xx needs to be recompiled and installed