GstWebRTC - GstWebRTC Basics: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
mNo edit summary
 
(45 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{GstWebRTC Page|
[[GstWebRTC - WebRTC Fundamentals|WebRTC Fundamentals]]|
[[GstWebRTC - Evaluating GstWebRTC | Evaluating GstWebRTC]]|


This page describes the basic features of Ridgerun's GstWebRTC Gstreamer plugin.
{{GstWebRTC/Head|previous=WebRTC Fundamentals|next=Signaling|metakeywords=Gstreamer WebRTC Basics, Gstreamer WebRTC Plugin Overview,WebRTC Basics,signaling}}
== What is GstWebRTC? ==


GstWebRTC is a GStreamer plug-in that turns pipelines into WebRTC compliant endpoints. The plug-in is equipped with three elements:
__TOC__
This page describes the basics, features and examples of Ridgerun's GstRrWebRTC [https://www.ridgerun.com/gstreamer GStreamer] plugin.
== What is GstRrWebRTC? ==


* GstWebRTCSrc
GstRrWebRTC is a GStreamer plug-in that turns pipelines into [[GstWebRTC_-_WebRTC_Fundamentals|WebRTC]] compliant endpoints, in order to allow audio and/or video streaming using the WebRTC protocol.
* GstWebRTCSink
* GstWebRTCBin


These elements allow audio and/or video streaming using the WebRTC protocol.
== GstRrWebRTC Use Cases ==
 
 
== Why GstWebRTC? ==


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 result limiting for several other use cases. To mention some of them:
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 result limiting for several other use cases. To mention some of them:
Line 25: Line 18:
* Quick gst-launch prototyping
* Quick gst-launch prototyping


GstWebRTC was developed based on this criteria. As such, the plug-in is ideal for:
GstRrWebRTC was developed based on this criteria. As such, the plug-in is ideal for:
* Embedded platforms
* Embedded platforms
* Existing media servers/applications
* Existing media servers/applications
* Advanced multimedia solutions
* Advanced multimedia solutions


== Architecture ==
== GStreamer WebRTC Tutorial and Plugin Overview ==
 
<br>
=== Direction ===
RidgeRun's GstWebRTCSink and GstWebRTCSrc are used as standard GStreamer sink and source elements respectively. If a pipeline only uses the sink element, it becomes a send-only endpoint. Similarly, if a pipeline only uses the source it becomes a receive-only endpoint. Finally, by using the both elements the pipeline behaves as a bidirectional endpoint. Figures 1, 2 and 3 show the scenarios described above, respectively.
[[File:Gstwebrtc-sendonly.png|600px|thumb|center|Figure 1. Pipeline as a WebRTC send-only endpoint.]]
[[File:Gstwebrtc-receiveonly.png|600px|thumb|center|Figure 2. Pipeline as a WebRTC receive-only endpoint.]]
[[File:Gstwebrtc-sendreceive.png|400px|thumb|center|Figure 3. Pipeline as a WebRTC send-receive endpoint.]]
=== Media Type ===
Both, the sink and source elements may send/receive audio, video or both simultaneously. The supported capabilities are determined at runtime based on the pads that where requested for the elements. Simply said, if a GstWebRTCSink element was created with a single audio pad, then it will only be capable of sending audio. Similarly, if a GstWebRTCSrc was created with video and audio pads, it will be capable of receiving both medias. Table 1 summarizes the complete set of possible configurations. At the time being, only one pad of each media type can be created.
 
<html>
<center>
<center>
<table class="wikitable">
<embedvideo service="vimeo">https://vimeo.com/190030003</embedvideo>
  <tr>
    <th>Element</th>
    <th>Configuration</th>
    <th>Graphical Description</th>
  </tr>
  <tr>
    <td rowspan="3"> GstWebRTCsink</td>
    <td>Audio Only</td>
    <td><img src="http://developer.ridgerun.com/wiki/images/e/ef/Gstwebrtc-audio.png" width=600></img></td>
  </tr>
<tr>
  <td>Video Only</td>
  <td><img src="http://developer.ridgerun.com/wiki/images/2/21/Gstwebrtc-video.png" width=600></img></td>
</tr>
<tr>
  <td>Audio+Video</td>
  <td><img src="http://developer.ridgerun.com/wiki/images/a/a6/Gstwebrtc-audiovideo.png" width=600></img></td>
</tr>
<tr>
  <td rowspan="3"> GstWebRTCsrc</td>
  <td>Audio Only</td>
  <td><img src="http://developer.ridgerun.com/wiki/images/8/89/Gstwebrtcsrc-audio.png" width=600></img></td>
</tr>
<tr>
  <td>Video Only</td>
  <td><img src="http://developer.ridgerun.com/wiki/images/6/69/Gstwebrtcsrc-video.png" width=600></img></td>
</tr>
<tr>
  <td>Audio+Video</td>
  <td><img src="http://developer.ridgerun.com/wiki/images/e/e2/Gstwebrtcsrc-audiovideo.png" width=600></img></td>
</tr>
<caption>Table 1.
</table>
</center>
</center>
</html>
 
}}
{{GstWebRTC/Foot|previous=WebRTC Fundamentals|next=Signaling}}

Latest revision as of 15:12, 9 March 2023




Previous: WebRTC Fundamentals Index Next: Signaling




This page describes the basics, features and examples of Ridgerun's GstRrWebRTC GStreamer plugin.

What is GstRrWebRTC?

GstRrWebRTC is a GStreamer plug-in that turns pipelines into WebRTC compliant endpoints, in order to allow audio and/or video streaming using the WebRTC protocol.

GstRrWebRTC Use Cases

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 result 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

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

  • Embedded platforms
  • Existing media servers/applications
  • Advanced multimedia solutions

GStreamer WebRTC Tutorial and Plugin Overview



Previous: WebRTC Fundamentals Index Next: Signaling