Introducing GstPrinceOfParser 0.4.3
GstPrinceOfParser: An All-in-One Tool to Play With GStreamer on Any Platform #
Introducing gst-pop, the GStreamer Prince of Parser — a tool to make interaction with GStreamer easier, global, and remotely accessible.
What is GStreamer? #
GStreamer is an open-source multimedia framework started in 1999. It lets you build pipelines of interconnected elements to stream, encode, decode, and manipulate media. The core idea is simple: a source element produces data, passes it through one or more transform elements, and delivers it to a sink. For example, here is a pipeline that decodes an MP3 audio file:
filesrc --> mp3dec --> audiosink
For more than 20 years, GStreamer has relied on its in-house toolbox to demonstrate the power of its pipelines. As this toolbox is used in thousands of projects and serves as a reference implementation, modifications and enhancements are deliberately kept minimal to maintain stability. gst-pop was created to go beyond these limitations.
A Unified Interface for GStreamer #
Accessible over the network, via CLI arguments, or through D-Bus, gst-pop aims to provide a multi-pipeline-capable command-line tool.
With a simple invocation of gst-pop (or its alias gst-popd), you can run a daemon that accepts
multiple pipelines simultaneously, accessible through D-Bus or WebSocket via the pipeline
ID. You’ll be able to control, query, and get information about each pipeline — all of that
over a remote network, secured with API key authentication and origin validation to prevent unauthorized access.
As demonstrated in the blog post related to GstPipelineStudio, it will be possible to connect to a remote pipeline or launch new pipelines through the GStreamer GUI. If a GUI is not available on the platform, it will soon be possible to use a web interface to control GStreamer, offering everything GStreamer can provide and more, limited only by your imagination.
Remote Element Inspection #
gst-pop (or its alias gst-pop-inspect) is also capable of listing the elements on a local or remote host, inspecting their capabilities, and providing a remote way to interact with your GStreamer installation.
Media Discovery #
It can also provide information on a media file using GStreamer’s discovery interface using gst-pop-discovery, offering an easy and remote-capable media discovery system for your setup.
Playback #
And of course, it can serve as an alternative to the gst-play tool, with gst-pop-play, allowing you to instantiate as many playback sessions as you need, with the ability to use any sink you want.
The possibilities are vast: provide multimedia services such as transcoding, media analysis, or remote playback to your setup using the power of a remote machine, all controllable from your terminal or a GUI such as GstPipelineStudio.
Cross-Platform and Language Support #
The tool is written in Rust for memory safety and reliability and provides client libraries in both Rust and C, offering all the flexibility needed for your existing applications. It is available on Linux (deb, rpm or docker), MacOS, and Windows, see the release page.
Examples #
# Start the daemon
gst-pop
# Launch a pipeline
gst-pop launch videotestsrc ! autovideosink
# Inspect an element
gst-pop inspect videotestsrc
# Discover media info
gst-pop discover file:///path/to/video.mp4
# Play a media file
gst-pop play file:///path/to/video.mp4
# Create a pipeline with the client
gst-popctl create "videotestsrc ! autovideosink"
# List pipelines on a remote daemon
gst-popctl list
# Play the pipeline with ID 0
gst-popctl play 0
# Stop the pipeline with ID 0
gst-popctl stop 0
# Run via Docker
docker run -d -p 9000:9000 ghcr.io/dabrain34/gstpop:latest
Give it a try and let us know what ideas you might have — we have plenty coming, so stay tuned.
As usual, if you would like to learn more about gst-pop, GStreamer, or any other open multimedia framework, please contact us!
- Previous: Introducing GstPipelineStudio 0.5.1
