Difference between revisions of "GstWebRTC - Evaluating GstWebRTC"

From RidgeRun Developer Connection
Jump to: navigation, search
m
 
(20 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{GstWebRTC Page|[[GstWebRTC - GstWebRTCBin | GstWebRTCBin Element]]|[[GstWebRTC - Getting the code |Getting the code]]|
+
{{GstWebRTC/Head|previous=Data Channel|next=Getting the code|metakeywords=GstRrWebRTC evaluation,GstRrWebRTC evaluation binary,WebRTC binary,signaling}}
  
This page serves as a guide to test the GstWebRTC evaluation binary provided by RidgeRun.
+
This page serves as a guide to test the GstRrWebRTC evaluation binary provided by RidgeRun.
  
 
__TOC__
 
__TOC__
Line 17: Line 17:
 
== Features in the Evaluation ==
 
== Features in the Evaluation ==
  
To help you test GstWebRTC, RidgeRun can provide an evaluation version of the plug-in.  The following table summarizes the features available in both the professional and evaluation version of the element.
+
To help you test GstRrWebRTC, RidgeRun can provide an evaluation version of the plug-in.  The following table summarizes the features available in both the professional and evaluation version of the element.
 
<html>
 
<html>
 
<center>
 
<center>
Line 65: Line 65:
 
== Testing the Binary ==
 
== Testing the Binary ==
  
First, make sure the dependencies are fulfilled. If your binaries also include the experimental data channel support please make sure you also install the dependencies listed in [[#Testing Data Channel]].
+
First, make sure the dependencies are fulfilled.
  
 
<syntaxhighlight lang='bash'>
 
<syntaxhighlight lang='bash'>
 +
sudo apt install \
 
gstreamer1.0-x \
 
gstreamer1.0-x \
 
libgstreamer1.0-dev \
 
libgstreamer1.0-dev \
Line 85: Line 86:
 
libsrtp0-dev \
 
libsrtp0-dev \
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
=== Other Dependencies ===
 +
This packages need to be built from source since they are not yet included in standard Ubuntu/Debian repositories. The following sections summarize the process of building these packages for a x86 running Ubuntu 16.04
 +
 +
==== usrsctp ====
 +
 +
<syntaxhighlight lang=bash>
 +
git clone https://github.com/RidgeRun/usrsctp
 +
cd usrsctp
 +
./bootstrap ; ./configure --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make ; sudo make install ; cd ..
 +
</syntaxhighlight>
 +
 +
<pre style='background-color:yellow'>
 +
Replace your configure options according to the following table
 +
</pre>
 +
 +
<html>
 +
    <table class='wikitable'>
 +
    <tr>
 +
      <th>System</th>
 +
      <th>Configure Option</th>
 +
    </tr>
 +
    <tr>
 +
      <td>Ubuntu 64 bits</td>
 +
      <td>--prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/</td>
 +
    </tr>
 +
    <tr>
 +
      <td>RidgeRun's Embedded FS</td>
 +
      <td>--prefix /usr/</td>
 +
    </tr>
 +
    <tr>
 +
      <td>Tegra TX1/TX2</td>
 +
      <td>--prefix /usr/ --libdir /usr/lib/aarch64-linux-gnu/</td>
 +
    </tr>
 +
    <caption>Table 1. Platform configuration options</caption>
 +
  </table>
 +
  </html>
 +
 +
==== Libnice ====
 +
 +
Libnice can be installed using apt, however, the version required by GstWebRTC is 0.1.15, so we need to install it manually:
 +
 +
<syntaxhighlight lang=bash>
 +
git clone https://github.com/libnice/libnice.git -b 0.1.16
 +
cd libnice
 +
./autogen.sh --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make ; sudo make install ; cd ..
 +
</syntaxhighlight>
 +
 +
==== openwebrtc-gst-plugins ====
 +
 +
<syntaxhighlight lang=bash>
 +
git clone https://github.com/RidgeRun/openwebrtc-gst-plugins
 +
cd openwebrtc-gst-plugins
 +
./autogen.sh; ./configure --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make; sudo make install ; cd ..
 +
</syntaxhighlight>
 +
 +
<pre style='background-color:yellow'>
 +
Replace your configure options according to the options in Table 1, above.
 +
</pre>
  
 
RidgeRun should've provided you with three shared objects:
 
RidgeRun should've provided you with three shared objects:
;libgstwebrtcbase-1.0.so.0.301.0
+
;libgstrrwebrtcbase-1.0.so.0.xxxx.0
 
: Core library
 
: Core library
;libgstpubnubsignaler-1.0.so.0.301.0
+
;libgstpubnubsignaler-1.0.so.0.xxx.0
 
: PubNub core library
 
: PubNub core library
;libgstwebrtc.so
+
;libgstrrwebrtc.so
 
: GStreamer plug-in
 
: GStreamer plug-in
  
Line 105: Line 165:
 
Finally, test that the plugin is being properly picked up by GStreamer by running:
 
Finally, test that the plugin is being properly picked up by GStreamer by running:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
gst-inspect-1.0 webrtc
+
gst-inspect-1.0 rrwebrtc
 
</syntaxhighlight>
 
</syntaxhighlight>
  
You should see the inspect output for the evaluation binary.
+
You should see the inspect output for the evaluation binary:
 +
 
 +
<pre>
 +
gst-inspect-1.0 rrwebrtc
 +
Plugin Details:
 +
  Name                    rrwebrtc
 +
  Description              Gstreamer RidgeRun WebRTC
 +
  Filename                /usr/lib/gstreamer-1.0/libgstrrwebrtc.so
 +
  Version                  1.11.2.0
 +
  License                  Proprietary
 +
  Source module            gst-webrtc
 +
  Source release date      2018-06-18
 +
  Binary package          GstWebRTC
 +
  Origin URL              http://www.ridgerun.com/
 +
 
 +
  rrwebrtcsrc: WebRTC receiver
 +
  rrwebrtcsink: WebRTC sender
 +
  rrwebrtcbin: WebRTC bin
  
 +
  3 features:
 +
  +-- 3 elements
 +
</pre>
  
 
== Example Pipelines ==
 
== Example Pipelines ==
  
 
Please refer to the [[GstWebRTC - Examples|Examples]] page for reference pipelines.
 
Please refer to the [[GstWebRTC - Examples|Examples]] page for reference pipelines.
 
  
 
== Troubleshooting ==
 
== Troubleshooting ==
Line 125: Line 204:
 
If the output doesn't help you figure out the problem, please contact [mailto:support@ridgerun.com '''support@ridgerun.com'''] with the output of the GStreamer debug and any additional information you consider useful.  
 
If the output doesn't help you figure out the problem, please contact [mailto:support@ridgerun.com '''support@ridgerun.com'''] with the output of the GStreamer debug and any additional information you consider useful.  
  
If the plug-in is not being recognized, please provide the output of the following command:
 
<syntaxhighlight lang="bash">
 
gst-inspect-1.0 libgstwebrtc.so
 
</syntaxhighlight>
 
 
== Testing Data Channel ==
 
 
If your evaluation binaries include the experimental data channel support, please make sure you build the following dependencies as well:
 
* usrsctp
 
* openwebrtc-gst-plugins
 
 
This packages need to be built from source since they are not yet included in standard Ubuntu/Debian repositories. The following sections summarize the process of building these packages for a Nvidia Jetson TX1/TX2 running Ubuntu 16.04
 
 
=== usrsctp ===
 
 
<syntaxhighlight lang=bash>
 
git clone https://github.com/sctplab/usrsctp
 
cd usrsctp
 
./bootstrap ; ./configure --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make ; sudo make install ; cd ..
 
</syntaxhighlight>
 
 
=== openwebrtc-gst-plugins ===
 
 
<syntaxhighlight lang=bash>
 
git clone https://github.com/EricssonResearch/openwebrtc-gst-plugins
 
cd openwebrtc-gst-plugins
 
./autogen.sh; ./configure --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make; sudo make install ; cd ..
 
</syntaxhighlight>
 
  
}}
+
{{GstWebRTC/Foot|previous=Data Channel|next=Getting the code}}

Latest revision as of 10:17, 9 March 2023



Previous: Data Channel Index Next: Getting the code




This page serves as a guide to test the GstRrWebRTC evaluation binary provided by RidgeRun.

Requesting the Evaluation Binary

In order to request an evaluation binary for a specific architecture, please contact us providing the following information:

  • Platform (i.e.: iMX6, TX2, Ultrascale+, etc...)
  • gst-launch-1.0 --gst-version
  • uname -a

RR Contact Us.png

Features in the Evaluation

To help you test GstRrWebRTC, RidgeRun can provide an evaluation version of the plug-in. The following table summarizes the features available in both the professional and evaluation version of the element.

Feature Professional Evaluation
Video Streaming Y Y
Audio Streaming Y Y
A/V Streaming Y Y
Multiple Encoding Formats Y Y
Unlimited Streaming Time Y N (1)
Source Code Y N
Table 1. Features provided in the evaluation version
(1) The evaluation version will limit the streaming time of each pad to 2 minutes.


Testing the Binary

First, make sure the dependencies are fulfilled.

sudo apt install \
gstreamer1.0-x \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-bad \
libsoup2.4-dev \
libjson-glib-dev \
libnice-dev \
autoconf \
libtool \
gtk-doc-tools \
libglib2.0-dev \
gstreamer1.0-nice \
libssl-dev \
libreadline-dev \
gstreamer1.0-plugins-ugly \
libsrtp0-dev \

Other Dependencies

This packages need to be built from source since they are not yet included in standard Ubuntu/Debian repositories. The following sections summarize the process of building these packages for a x86 running Ubuntu 16.04

usrsctp

git clone https://github.com/RidgeRun/usrsctp
cd usrsctp
./bootstrap ; ./configure --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make ; sudo make install ; cd ..
Replace your configure options according to the following table

System Configure Option
Ubuntu 64 bits --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/
RidgeRun's Embedded FS --prefix /usr/
Tegra TX1/TX2 --prefix /usr/ --libdir /usr/lib/aarch64-linux-gnu/
Table 1. Platform configuration options

Libnice

Libnice can be installed using apt, however, the version required by GstWebRTC is 0.1.15, so we need to install it manually:

git clone https://github.com/libnice/libnice.git -b 0.1.16
cd libnice
./autogen.sh --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make ; sudo make install ; cd ..

openwebrtc-gst-plugins

git clone https://github.com/RidgeRun/openwebrtc-gst-plugins
cd openwebrtc-gst-plugins
./autogen.sh; ./configure --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/ ; make; sudo make install ; cd ..
Replace your configure options according to the options in Table 1, above.

RidgeRun should've provided you with three shared objects:

libgstrrwebrtcbase-1.0.so.0.xxxx.0
Core library
libgstpubnubsignaler-1.0.so.0.xxx.0
PubNub core library
libgstrrwebrtc.so
GStreamer plug-in

In order to use the binary provided, export the location of the plugin and the core libraries in your environment.

export GST_PLUGIN_PATH=${GST_PLUGIN_PATH}:/path/to/evaluation/binary/plugin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/evaluation/binary/lib

where /path/to/evaluation/binary/plugin and /path/to/evaluation/binary/lib are the locations in your file system where you have the plugin and core libraries binaries provided by RidgeRun, respectively.

Additionally, you may just copy the binary into the standard GStreamer plug-in and library search path.

Finally, test that the plugin is being properly picked up by GStreamer by running:

gst-inspect-1.0 rrwebrtc

You should see the inspect output for the evaluation binary:

gst-inspect-1.0 rrwebrtc
Plugin Details:
  Name                     rrwebrtc
  Description              Gstreamer RidgeRun WebRTC
  Filename                 /usr/lib/gstreamer-1.0/libgstrrwebrtc.so
  Version                  1.11.2.0
  License                  Proprietary
  Source module            gst-webrtc
  Source release date      2018-06-18
  Binary package           GstWebRTC
  Origin URL               http://www.ridgerun.com/

  rrwebrtcsrc: WebRTC receiver
  rrwebrtcsink: WebRTC sender
  rrwebrtcbin: WebRTC bin

  3 features:
  +-- 3 elements

Example Pipelines

Please refer to the Examples page for reference pipelines.

Troubleshooting

The first level of debug to troubleshoot a failing evaluation binary is to inspect GStreamer debug output.

GST_DEBUG=2 gst-launch-1.0

If the output doesn't help you figure out the problem, please contact support@ridgerun.com with the output of the GStreamer debug and any additional information you consider useful.



Previous: Data Channel Index Next: Getting the code