GStreamer WebRTC Wrapper/Introduction/GstWebRTCWrapper Basics: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
(Add datachannel)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<noinclude>
<noinclude>
{{GStreamer WebRTC Wrapper/Head|next=Architecture|previous=Introduction/WebRTC_Fundaments|metakeywords=}}
{{GStreamer WebRTC Wrapper/Head|next=Architecture|previous=Introduction/Data_Channel|metakeywords=}}
</noinclude>
</noinclude>


This wiki introduces WebRTC technology support in the GStreamer framework. GStreamer provides an element called GstWebRTCbin. RidgeRun extends the webrtcbin support with GstWebRTCWrapperbin.  
This wiki introduces WebRTC technology support in the GStreamer framework.


== What is GstWebRTCWrapperbin? ==
== What is GstWebRTCWrapperbin? ==


GstWebRTCWrapperbin is a GStreamer plug-in that wraps the [https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c GstWebRTCbin] element developed by GStreamer providing more flexibility to be integrated on multiple WebRTC applications using customized signaling protocols and ICE serving standards.
GstWebRTCWrapperbin is a GStreamer plug-in that wraps the [https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=c GstWebRTCbin] element developed by GStreamer providing more flexibility to be integrated on multiple WebRTC applications using customized signaling protocols, ICE serving standards and data channels.
 
WebRTC uses ICE servers (Interactive Connectivity Establishment), that act as intermediaries to find the most optimal network paths for communication to overcome obstacles such as NAT traversal and firewall traversal enabling devices to establish a direct connection.
 
The base signaler works alongside ICE servers to ensure a smooth communication setup. It serves as a central point for devices to discover and connect with each other. The base signaler facilitates the exchange of important information, including network addresses, encryption settings, and other necessary details.
 
WebRTC uses ICE servers to optimize network paths and establish direct connections, while base signaler act as a central point of contact to facilitate device discovery and connection establishment. These elements combine to enable real-time communication between devices.  


<center>
<center>
Line 16: Line 22:
== Why GstWebRTCWrapperbin? ==
== Why GstWebRTCWrapperbin? ==


Other WebRTC solutions will automatically detect the video and audio sources, as well as the decoders/encoders and other elements to be used to build the pipeline. This may be convenient for many applications, but the result limiting for several other use cases. To mention some of them:
Other WebRTC solutions automatically detect the video and audio sources, as well as the decoders/encoders and the other elements used to build the pipeline. This may be convenient for many applications but can be limiting for several other use cases. To mention some of them:
* Extend existing pipeline to support WebRTC streaming.
* Extend existing pipeline to support WebRTC streaming.
* Use non-standard pipeline configurations.
* Use non-standard pipeline configurations.
* High performance pipeline tuning for resource critical systems
* High performance pipeline tuning for resource critical systems.
* Dynamic stream handling in a running pipeline.
* Dynamic stream handling in a running pipeline.
* Fine grained pipeline control.
* Fine grained pipeline control.
Line 31: Line 37:
* Speed up the development.
* Speed up the development.


<noinclude>{{GStreamer WebRTC Wrapper/Foot|Introduction/WebRTC_Fundaments|Architecture}}</noinclude>
<noinclude>{{GStreamer WebRTC Wrapper/Foot|Introduction/Data_Channel|Architecture}}</noinclude>


[[Category:GStreamer WebRTC Wrapper]]
[[Category:GStreamer WebRTC Wrapper]]

Latest revision as of 15:45, 10 July 2023




Previous: Introduction/Data_Channel Index Next: Architecture




This wiki introduces WebRTC technology support in the GStreamer framework.

What is GstWebRTCWrapperbin?

GstWebRTCWrapperbin is a GStreamer plug-in that wraps the GstWebRTCbin element developed by GStreamer providing more flexibility to be integrated on multiple WebRTC applications using customized signaling protocols, ICE serving standards and data channels.

WebRTC uses ICE servers (Interactive Connectivity Establishment), that act as intermediaries to find the most optimal network paths for communication to overcome obstacles such as NAT traversal and firewall traversal enabling devices to establish a direct connection.

The base signaler works alongside ICE servers to ensure a smooth communication setup. It serves as a central point for devices to discover and connect with each other. The base signaler facilitates the exchange of important information, including network addresses, encryption settings, and other necessary details.

WebRTC uses ICE servers to optimize network paths and establish direct connections, while base signaler act as a central point of contact to facilitate device discovery and connection establishment. These elements combine to enable real-time communication between devices.


Figure 1. GstWebRTCWrapper Main block

Why GstWebRTCWrapperbin?

Other WebRTC solutions automatically detect the video and audio sources, as well as the decoders/encoders and the other elements used to build the pipeline. This may be convenient for many applications but can be limiting for several other use cases. To mention some of them:

  • Extend existing pipeline to support WebRTC streaming.
  • Use non-standard pipeline configurations.
  • High performance pipeline tuning for resource critical systems.
  • Dynamic stream handling in a running pipeline.
  • Fine grained pipeline control.
  • Quick gst-launch prototyping.

GstWebRTCWrapperbin was developed based on these criteria. As such, the plug-in is ideal for:

  • Embedded platforms.
  • Existing media servers/applications.
  • Multiple Signaling protocols.
  • Advanced multimedia solutions.
  • Speed up the development.


Previous: Introduction/Data_Channel Index Next: Architecture