From ProventusNova DeveloperWiki
Revision as of 12:59, 24 February 2025 by Cj (talk | contribs)

GStreamer Daemon (GstD)

GStreamer Daemon (GstD) is a service that enables remote control of GStreamer pipelines via gst-client. It allows:

  • Remote pipeline management – Start, stop, modify pipelines dynamically.
  • Multi-client access – Multiple users can control pipelines simultaneously.
  • Embedded & network control – Use gst-client to manage pipelines over TCP or UNIX sockets.
  • Low-latency communication – Ideal for real-time media applications.

πŸ“‘ Controlling GStreamer Daemon with gst-client

Each command follows this format:

gst-client COMMAND pipeline_name "PIPELINE_DESCRIPTION"

🎞️ Creating a Pipeline

gst-client pipeline_create test_pipeline "videotestsrc ! videoconvert ! autovideosink"

Parameters:

  • pipeline_create – Creates a new pipeline.
  • test_pipeline – Pipeline name (identifier).
  • Pipeline elements:
 - videotestsrc – Generates test video.
 - videoconvert – Ensures format compatibility.
 - autovideosink – Displays video output.

Use case: Used for testing video playback.

▢️ Starting a Pipeline

gst-client pipeline_play test_pipeline

Use case: Runs an existing paused pipeline.

⏹️ Stopping a Pipeline

gst-client pipeline_stop test_pipeline

Use case: Pauses pipeline execution without deleting it.

❌ Deleting a Pipeline

gst-client pipeline_delete test_pipeline

Use case: Frees up resources when a pipeline is no longer needed.

πŸ“‘ Example: Transmitting an RTP Stream

gst-client pipeline_create udp_stream "videotestsrc is-live=true pattern=ball ! videoconvert ! x264enc tune=zerolatency bitrate=500 speed-preset=ultrafast ! rtph264pay ! udpsink host=127.0.0.1 port=5002"

Parameters:

  • pipeline_create udp_stream – Creates a new pipeline named udp_stream.
  • videotestsrc is-live=true pattern=ball – Generates a moving ball pattern as a live video source.
 - is-live=true – Ensures the video source behaves like a real-time stream.
 - pattern=ball – Uses a bouncing ball as the test video pattern.
  • videoconvert – Ensures compatibility with encoders and sinks.
  • x264enc tune=zerolatency bitrate=500 speed-preset=ultrafast – Encodes video into H.264 format with low latency.
 - tune=zerolatency – Optimizes the encoding for minimal delay.
 - bitrate=500 – Sets the bitrate to 500 kbps.
 - speed-preset=ultrafast – Uses the fastest encoding preset.
  • rtph264pay – Converts H.264 video into RTP packets for network transmission.
  • udpsink host=127.0.0.1 port=5002 – Sends the RTP stream to UDP port 5002 on localhost.

Use case: Broadcasting an RTP stream over UDP.

▢️ Playing the RTP Transmission

gst-client pipeline_play udp_stream

Use case: Starts broadcasting the RTP stream.

⏹️ Stopping the RTP Transmission

gst-client pipeline_stop udp_stream

Use case: Stops broadcasting the RTP stream without deleting it.

❌ Deleting the RTP Transmission Pipeline

gst-client pipeline_delete udp_stream

Use case: Removes the RTP transmission pipeline.

πŸ“‘ Example: Receiving an RTP Stream

gst-client pipeline_create udp_receiver "udpsrc port=5002 ! application/x-rtp, encoding-name=H264 ! rtpjitterbuffer latency=100 ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false"

Parameters:

  • pipeline_create udp_receiver – Creates a new pipeline named udp_receiver.
  • udpsrc port=5002 – Listens on UDP port 5002 for incoming RTP packets.
  • application/x-rtp, encoding-name=H264 – Declares the media format as RTP with H.264 encoding.
  • rtpjitterbuffer latency=100 – Buffers packets to compensate for network jitter.
 - latency=100 – Sets a buffer delay of 100 milliseconds.
  • rtph264depay – Extracts raw H.264 video from the RTP stream.
  • avdec_h264 – Decodes the H.264 video stream.
  • videoconvert – Ensures compatibility before displaying the video.
  • autovideosink sync=false – Displays the video, disabling synchronization for lower latency.

Use case: Receiving an RTP video stream over UDP.

▢️ Playing the RTP Receiver

gst-client pipeline_play udp_receiver

Use case: Starts the RTP receiver pipeline.

⏹️ Stopping the RTP Receiver

gst-client pipeline_stop udp_receiver

Use case: Stops the RTP receiver pipeline without deleting it.

❌ Deleting the RTP Receiver Pipeline

gst-client pipeline_delete udp_receiver

Use case: Removes the RTP receiver pipeline.

πŸ›‘ Stopping GStreamer Daemon

To stop the GStreamer Daemon:

gstd -k

Use case: Terminates the running GStreamer Daemon (`gstd`).

βœ… Checking if `gstd` is Running

To verify if GStreamer Daemon is running:

ps aux | grep gstd

Use case: Displays `gstd` processes if running.

πŸ“Š Summary

GStreamer Daemon enables remote control of pipelines via gst-client.

GStreamer Daemon Key Features
Feature Description
Remote Pipeline Control Manage GStreamer pipelines via gst-client
Dynamic Modification Add/remove elements in real-time
Multi-Client Access Multiple users can control pipelines
Embedded System Friendly Works efficiently with TCP and UNIX socket connections