No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
* '''Low-latency media routing''' – Efficiently stream audio/video between pipelines. |
* '''Low-latency media routing''' – Efficiently stream audio/video between pipelines. |
||
== |
== Installing ''gst-interpipe'' == |
||
Before using Interpipes, ensure you have the required dependencies. |
Before using Interpipes, ensure you have the required dependencies. |
||
=== |
=== Build System & Development Tools === |
||
<pre> |
<pre> |
||
sudo apt install -y meson ninja-build git |
sudo apt install -y meson ninja-build git |
||
</pre> |
</pre> |
||
=== |
=== GStreamer Core & Plugins === |
||
<pre> |
<pre> |
||
sudo apt install -y gstreamer1.0-plugins-base |
sudo apt install -y gstreamer1.0-plugins-base |
||
</pre> |
</pre> |
||
=== |
=== Additional GStreamer Plugins === |
||
<pre> |
<pre> |
||
sudo apt install -y gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ |
sudo apt install -y gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ |
||
Line 24: | Line 24: | ||
</pre> |
</pre> |
||
=== |
=== GStreamer Development Libraries === |
||
<pre> |
<pre> |
||
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev |
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev |
||
</pre> |
</pre> |
||
=== |
=== Documentation Tools (Optional) === |
||
<pre> |
<pre> |
||
sudo apt install -y gtk-doc-tools |
sudo apt install -y gtk-doc-tools |
||
Line 35: | Line 35: | ||
*(You can disable GTK-Doc with ''-Dgtk_doc=disabled'' in Meson if not needed.)* |
*(You can disable GTK-Doc with ''-Dgtk_doc=disabled'' in Meson if not needed.)* |
||
=== |
=== Installing ''gst-interpipe'' Plugin === |
||
To install the RidgeRun ''gst-interpipe'' plugin: |
To install the RidgeRun ''gst-interpipe'' plugin, follow these steps: |
||
==== Clone and Build ==== |
|||
<pre> |
<pre> |
||
git clone https://github.com/RidgeRun/gst-interpipe.git |
git clone https://github.com/RidgeRun/gst-interpipe.git |
||
Line 45: | Line 47: | ||
</pre> |
</pre> |
||
Verify |
==== Verify Installation ==== |
||
Check if the `interpipesrc` plugin is installed: |
|||
<pre> |
<pre> |
||
gst-inspect-1.0 interpipesrc |
gst-inspect-1.0 interpipesrc |
||
</pre> |
</pre> |
||
==== Expected Output ==== |
|||
< |
<pre> |
||
Factory Details: |
|||
Rank none (0) |
Rank none (0) |
||
Long-name Inter pipeline source |
Long-name Inter pipeline source |
||
Klass Generic/Source |
Klass Generic/Source |
||
Description Source for internal pipeline buffers communication |
Description Source for internal pipeline buffers communication |
||
Author Michael Grüner <michael.gruner@ridgerun.com> |
Author Michael Grüner <michael.gruner@ridgerun.com> |
||
Plugin Details: |
|||
Name interpipe |
Name interpipe |
||
Description Elements to communicate buffers across pipelines |
Description Elements to communicate buffers across pipelines |
||
Line 65: | Line 70: | ||
Source module gst-interpipe |
Source module gst-interpipe |
||
Binary package GstInterpipe |
Binary package GstInterpipe |
||
Origin URL http://www.ridgerun.com |
Origin URL http://www.ridgerun.com |
||
</pre> |
|||
== |
== Core Concepts == |
||
Interpipes introduce two main elements: |
Interpipes introduce two main elements: |
||
Line 80: | Line 86: | ||
|} |
|} |
||
== |
== Controlling GStreamer Interpipes with ''gst-client'' == |
||
Each command follows this format: |
Each command follows this format: |
||
Line 88: | Line 94: | ||
</pre> |
</pre> |
||
=== |
=== Creating an Interpipes Source Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_create producer_pipeline "videotestsrc is-live=true ! interpipesink name=sink1" |
gst-client pipeline_create producer_pipeline "videotestsrc is-live=true ! interpipesink name=sink1" |
||
Line 100: | Line 106: | ||
'''Use case:''' This pipeline '''produces video''' for other pipelines to consume. |
'''Use case:''' This pipeline '''produces video''' for other pipelines to consume. |
||
=== |
=== Creating an Interpipes Consumer Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_create consumer_pipeline "interpipesrc listen-to=sink1 ! videoconvert ! autovideosink" |
gst-client pipeline_create consumer_pipeline "interpipesrc listen-to=sink1 ! videoconvert ! autovideosink" |
||
Line 113: | Line 119: | ||
'''Use case:''' This pipeline '''consumes''' data from ''sink1''. |
'''Use case:''' This pipeline '''consumes''' data from ''sink1''. |
||
=== |
=== Playing the Producer Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_play producer_pipeline |
gst-client pipeline_play producer_pipeline |
||
Line 120: | Line 126: | ||
'''Use case:''' Starts the producer pipeline. |
'''Use case:''' Starts the producer pipeline. |
||
=== |
=== Playing the Consumer Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_play consumer_pipeline |
gst-client pipeline_play consumer_pipeline |
||
Line 127: | Line 133: | ||
'''Use case:''' Starts the consumer pipeline. |
'''Use case:''' Starts the consumer pipeline. |
||
=== |
=== Stopping the Producer Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_stop producer_pipeline |
gst-client pipeline_stop producer_pipeline |
||
Line 134: | Line 140: | ||
'''Use case:''' Stops the producer without deleting it. |
'''Use case:''' Stops the producer without deleting it. |
||
=== |
=== Stopping the Consumer Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_stop consumer_pipeline |
gst-client pipeline_stop consumer_pipeline |
||
Line 141: | Line 147: | ||
'''Use case:''' Stops the consumer without deleting it. |
'''Use case:''' Stops the consumer without deleting it. |
||
=== |
=== Deleting the Producer Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_delete producer_pipeline |
gst-client pipeline_delete producer_pipeline |
||
Line 148: | Line 154: | ||
'''Use case:''' Removes the producer pipeline. |
'''Use case:''' Removes the producer pipeline. |
||
=== |
=== Deleting the Consumer Pipeline === |
||
<pre> |
<pre> |
||
gst-client pipeline_delete consumer_pipeline |
gst-client pipeline_delete consumer_pipeline |
||
Line 155: | Line 161: | ||
'''Use case:''' Removes the consumer pipeline. |
'''Use case:''' Removes the consumer pipeline. |
||
== |
== Switching Between Interpipes == |
||
Interpipes allow you to dynamically switch sources. |
Interpipes allow you to dynamically switch sources. |
||
=== |
=== Changing the Consumer Pipeline's Source === |
||
<pre> |
<pre> |
||
gst-client pipeline_create new_source "videotestsrc pattern=ball ! interpipesink name=sink2" |
gst-client pipeline_create new_source "videotestsrc pattern=ball ! interpipesink name=sink2" |
||
Line 166: | Line 172: | ||
'''Use case:''' The consumer pipeline now '''receives data from ''sink2''''' instead of ''sink1''. |
'''Use case:''' The consumer pipeline now '''receives data from ''sink2''''' instead of ''sink1''. |
||
== |
== Stopping GStreamer Daemon == |
||
To stop the GStreamer Daemon: |
To stop the GStreamer Daemon: |
||
<pre> |
<pre> |
||
Line 174: | Line 180: | ||
'''Use case:''' Terminates the running ''gstd''. |
'''Use case:''' Terminates the running ''gstd''. |
||
== |
== Checking if ''gstd'' is Running == |
||
To verify if GStreamer Daemon is running: |
To verify if GStreamer Daemon is running: |
||
<pre> |
<pre> |
||
Line 182: | Line 188: | ||
'''Use case:''' Displays ''gstd'' processes if running. |
'''Use case:''' Displays ''gstd'' processes if running. |
||
== |
== Summary == |
||
GStreamer Interpipes enable '''seamless pipeline communication''' via '''dynamic linking'''. |
GStreamer Interpipes enable '''seamless pipeline communication''' via '''dynamic linking'''. |
||
Line 198: | Line 204: | ||
| '''Optimized for Embedded Systems''' || Reduces memory overhead. |
| '''Optimized for Embedded Systems''' || Reduces memory overhead. |
||
|} |
|} |
||
= 🏗 Need a Solution for Your Project? = |
|||
Are you looking for ways to: |
|||
✅ Optimize your '''embedded system''' for better performance? |
|||
✅ Integrate '''AI and computer vision''' into your products? |
|||
✅ Improve '''multimedia processing''' for real-time applications? |
|||
✅ Develop a '''robust and scalable''' web platform? |
|||
Our team has helped businesses across multiple industries solve these challenges. |
|||
📩 '''Let’s collaborate!''' Contact us at '''[support@proventusnova.com](mailto:support@proventusnova.com)''' or visit '''[ProventusNova.com](https://proventusnova.com)''' to discuss your project. --> |
Latest revision as of 03:50, 2 March 2025
GStreamer Interpipes
GStreamer Interpipes is a feature from the RidgeRun gst-interpipe plugin that enables dynamic pipeline communication. It allows:
- Multi-pipeline sharing – Pass data between multiple GStreamer pipelines.
- Dynamic linking – Connect or disconnect pipelines without restarting.
- Low-latency media routing – Efficiently stream audio/video between pipelines.
Installing gst-interpipe
Before using Interpipes, ensure you have the required dependencies.
Build System & Development Tools
sudo apt install -y meson ninja-build git
GStreamer Core & Plugins
sudo apt install -y gstreamer1.0-plugins-base
Additional GStreamer Plugins
sudo apt install -y gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly gstreamer1.0-libav
GStreamer Development Libraries
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
Documentation Tools (Optional)
sudo apt install -y gtk-doc-tools
- (You can disable GTK-Doc with -Dgtk_doc=disabled in Meson if not needed.)*
Installing gst-interpipe Plugin
To install the RidgeRun gst-interpipe plugin, follow these steps:
Clone and Build
git clone https://github.com/RidgeRun/gst-interpipe.git cd gst-interpipe meson build ninja -C build sudo ninja -C build install
Verify Installation
Check if the `interpipesrc` plugin is installed:
gst-inspect-1.0 interpipesrc
Expected Output
Factory Details: Rank none (0) Long-name Inter pipeline source Klass Generic/Source Description Source for internal pipeline buffers communication Author Michael Grüner <michael.gruner@ridgerun.com> Plugin Details: Name interpipe Description Elements to communicate buffers across pipelines Filename /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstinterpipe.so Version 1.1.8 License LGPL Source module gst-interpipe Binary package GstInterpipe Origin URL http://www.ridgerun.com
Core Concepts
Interpipes introduce two main elements:
Element | Description |
---|---|
interpipesink | Sends data to other pipelines. |
interpipesrc | Receives data from interpipesink. |
Controlling GStreamer Interpipes with gst-client
Each command follows this format:
gst-client COMMAND pipeline_name "PIPELINE_DESCRIPTION"
Creating an Interpipes Source Pipeline
gst-client pipeline_create producer_pipeline "videotestsrc is-live=true ! interpipesink name=sink1"
Parameters:
- pipeline_create producer_pipeline – Creates a new pipeline named producer_pipeline.
- videotestsrc is-live=true – Generates a live video test source.
- interpipesink name=sink1 – Creates an Interpipe sink named sink1.
Use case: This pipeline produces video for other pipelines to consume.
Creating an Interpipes Consumer Pipeline
gst-client pipeline_create consumer_pipeline "interpipesrc listen-to=sink1 ! videoconvert ! autovideosink"
Parameters:
- pipeline_create consumer_pipeline – Creates a new pipeline named consumer_pipeline.
- interpipesrc listen-to=sink1 – Reads data from sink1.
- videoconvert – Ensures format compatibility.
- autovideosink – Displays the received video.
Use case: This pipeline consumes data from sink1.
Playing the Producer Pipeline
gst-client pipeline_play producer_pipeline
Use case: Starts the producer pipeline.
Playing the Consumer Pipeline
gst-client pipeline_play consumer_pipeline
Use case: Starts the consumer pipeline.
Stopping the Producer Pipeline
gst-client pipeline_stop producer_pipeline
Use case: Stops the producer without deleting it.
Stopping the Consumer Pipeline
gst-client pipeline_stop consumer_pipeline
Use case: Stops the consumer without deleting it.
Deleting the Producer Pipeline
gst-client pipeline_delete producer_pipeline
Use case: Removes the producer pipeline.
Deleting the Consumer Pipeline
gst-client pipeline_delete consumer_pipeline
Use case: Removes the consumer pipeline.
Switching Between Interpipes
Interpipes allow you to dynamically switch sources.
Changing the Consumer Pipeline's Source
gst-client pipeline_create new_source "videotestsrc pattern=ball ! interpipesink name=sink2" gst-client pipeline_set consumer_pipeline "interpipesrc listen-to=sink2 ! videoconvert ! autovideosink"
Use case: The consumer pipeline now receives data from sink2 instead of sink1.
Stopping GStreamer Daemon
To stop the GStreamer Daemon:
gstd -k
Use case: Terminates the running 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 Interpipes enable seamless pipeline communication via dynamic linking.
Feature | Description |
---|---|
Pipeline Communication | Share data across multiple pipelines. |
Dynamic Source Switching | Change data sources on the fly. |
Low Latency | Efficient buffer sharing for real-time applications. |
Optimized for Embedded Systems | Reduces memory overhead. |
🏗 Need a Solution for Your Project?
Are you looking for ways to:
✅ Optimize your embedded system for better performance?
✅ Integrate AI and computer vision into your products?
✅ Improve multimedia processing for real-time applications?
✅ Develop a robust and scalable web platform?
Our team has helped businesses across multiple industries solve these challenges.
📩 Let’s collaborate! Contact us at [support@proventusnova.com](mailto:support@proventusnova.com) or visit [ProventusNova.com](https://proventusnova.com) to discuss your project. -->