GStreamer WebRTC Wrapper - Evaluating GstWebRTCWrapper

From RidgeRun Developer Wiki




Previous: Architecture/GstWebRTCWrapperBin_Modules Index Next: Getting_the_Code




This page is a guide to testing the GstWebRTCWrapper 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
  • gst-launch-1.0 --gst-version
  • uname -a

Features in the Evaluation

RidgeRun provides an evaluation binary 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
Data Channel Streaming (1) Y Y
Unlimited Streaming Time Y N (2)
Source Code Y N
Table 1. Features provided in the evaluation version

(1) This feature is only available for GStreamer 1.18 and newer versions.

(2) The evaluation version will limit the streaming time of each pad to 2 minutes.


Dependencies

GstWebRTCWrapper has the following dependencies:

  • Gstreamer 1.0 (version 1.14.5)
  • GStreamer 1.0 Development Package
  • Gstreamer 1.0 Base Plug-ins Development Package
  • Gstreamer 1.0 Bad Plug-ins
  • Gstreamer 1.0 Good Plug-ins
  • LibSoup Development Package (libsoup2.4-dev)
  • JSON-GLib Development Package (libjson-glib-dev)
  • OpenSSL Development Package (libssl-dev)
  • LibNice Development Package (libnice-dev version 1.15)
  • GTK-Doc Tools (Optional) (gtk-doc-tools)
  • Meson (version 0.47 or greater)

In case a requirement is not installed, please follow the instructions in the Building Guide to install dependencies.

Install the Evaluation Binaries

Extract the tarball provided by RidgeRun (note that the file names can change depending on the software version and target platform):

tar -xvf  gst-webrtc-wrapper-0.9.0-gst-1.14-aarch64-linux-gnu-eval.tar

The evaluation files structure should be as follows (note that the file names can change depending on the software version and target platform): gst-webrtc-wrapper-0.9.0-gst-1.14-aarch64-linux-gnu-eval

└── usr
    └── lib
        └── aarch64-linux-gnu
            ├── gstreamer-1.0
            │   └── libgstwebrtcwrapper.so
            └── libgstwebrtcwrapper-1.0.so

The plugin binary is libgstwebrtcwrapper.so and the core library binary is libgstwebrtcwrapper-1.0.so. In order to use the binaries provided, export the location of the plugin and the core libraries in your environment.

export GST_PLUGIN_PATH=${GST_PLUGIN_PATH}:<absolute path to the directory containing the plugin binary libgstwebrtcwrapper.so>
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<absolute path to the directory containing the library binary libgstwebrtcwrapper-1.0.so>


where <absolute path to the directory containing the plugin binary libgstwebrtcwrapper.so> and <absolute path to the directory containing the library binary libgstwebrtcwrapper-1.0.so> are the locations in your file system where you have the plugin and core libraries binaries provided by RidgeRun, respectively.

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

gst-inspect-1.0 webrtcwrapperbin

Expected output:

                                     
*************************************
*** THIS IS AN EVALUATION VERSION ***
*************************************
                                     
        Thanks for evaluating        
          GstWebRTC Wrapper!         
                                     
  After approximately 2 minutes the  
  streaming will stop and you will   
  not be able to reconnect. Please   
  contact <support@ridgerun.com> to  
  purchase the professional version  
  of the plug-in.                    
                                     
*************************************
*** THIS IS AN EVALUATION VERSION ***
*************************************
                                     
Factory Details:
  Rank                     none (0)
  Long-name                Webrtc Wrapper
  Klass                    Bin/Webrtc_Wrapper
  Description              Wrap the GstwebrtcBin element
  Author                   Ridgerun Limitada support@ridgerun.com>

Plugin Details:
  Name                     webrtcwrapper
  Description              Wrapper for GstWebrtcBin element
  Filename                 /lib/x86_64-linux-gnu/gstreamer-1.0/libgstwebrtcwrapper.so
  Version                  0.10.1
  License                  Proprietary
  Source module            gst-webrtc-wrapper
  Binary package           gst-webrtc-wrapper
  Origin URL               http://www.ridgerun.com/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBin
                         +----GstWebrtcWrapperBin

Implemented Interfaces:
  GstChildProxy

Pad Templates:
  SINK template: 'sink_%u'
    Availability: On request
    Capabilities:
      application/x-rtp
  
  SRC template: 'src_%u'
    Availability: On request
    Capabilities:
      application/x-rtp

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  none

Element Properties:
  async-handling      : The bin will handle Asynchronous state changes
                        flags: readable, writable
                        Boolean. Default: false
  bundle-policy       : The current bundle policy
                        flags: readable, writable
                        Enum "BundlePolicy" Default: 2, "max compat"
                           (0): none             - Bundle policy disabled.
                           (1): balanced         - Balanced bundle policy
                           (2): max compat       - Max compat bundle policy
                           (3): max bundle       - Max bundle bundle policy
  connection-status   : Collective connection state of the element
                        flags: readable
                        Enum "ConnectionStatus" Default: 0, "not connected"
                           (0): not connected    - Not connected.
                           (1): waiting for offer - Waiting for offer.
                           (2): negotiating      - Negotiating
                           (3): connected        - Connected
  data-channel        : Enable data channels
                        flags: writable
                        Boolean. Default: false Write only
  ice-server          : Type of predefined ice server to use.
                        According to the selected ice servers different properties will be available.
                        These properties can be accessed using the "ice-server::<property>" syntax.
                        The following list details the properties of the different ice servers
                           GstXirsysServer
                                  name                : The name of the object
                                                        flags: readable, writable
                                                        String. Default: "xirsysserver0"
                                  parent              : The parent of the object
                                                        flags: readable, writable
                                                        (null)
                                  ident               : Given Ident key by Xirsys (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "(null)"
                                  secret              : Given Secret key by Xirsys (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "(null)"
                                  channel             : Given Channel key by Xirsys (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "(null)"
                                  path                : Given Path  key by Xirsys (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "(null)"
                                  expire              : Expiration time for TURN credentials in seconds (only set in NULL state)
                                                        flags: readable, writable
                                                        Integer. Range: 1 - 2147483647 Default: 0
                        flags: readable, writable
                        Enum "GstWebrtcIceServers" Default: 0, "GstXirsysServer"
                           (0): GstXirsysServer  - Xirsys ice server
  ice-transport-policy: The current ICE transport policy
                        flags: readable, writable
                        Enum "IceTransportPolicy" Default: 0, "all"
                           (0): all              - All ICE candidates will be considered.
                           (1): relay            - Only ICE candidates whose IP addresses are being relayed
  latency             : Amount of ms to buffer
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 200 
  message-forward     : Forwards all children messages
                        flags: readable, writable
                        Boolean. Default: false
  metadata            : Send a metadata string over a data channel
                        flags: writable
                        String. Default: "" Write only
  metadata-binary     : Send a binary metadata over a data channel
                        flags: writable
                        Boxed pointer of type "GBytes" Write only
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "webrtcwrapperbin0"
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"

  signaler            : Type of predefined signaler to use.
                        According to the selected signaler different properties will be available.
                        These properties can be accessed using the "signaler::<property>" syntax.
                        The following list details the properties of the different signalers
                         GstPubnubSignaler
                                  name                : The name of the object
                                                        flags: readable, writable
                                                        String. Default: "pubnubsignaler0"
                                  parent              : The parent of the object
                                                        flags: readable, writable
                                                        (null)
                                  publish-key         : Key to Publish Messages (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "pub-c-561a7378-fa06-4c50-a331-5c0056d0163c"
                                  subscribe-key       : Key to Subscribe Messages (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "sub-c-17b7db8a-3915-11e4-9868-02ee2ddab7fe"
                                  user-channel        : Username Channel (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "374"
                                  peer-channel        : Peer Channel (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "(null)"
                                  uuid                : Pubnub Universally unique identifier (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "(null)"
                                  auth-key            : Pubnub Authentication Key (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "ridgerun"
                                  reconnect-policy    : Reconnection Policies when there is a network or internet issue
                                                        flags: readable, writable
                                                        (null)
                                  subscribe-timeout   : The Pubnub timeout for subscribe transaction in miliseconds (only set in NULL state)
                                                        flags: readable, writable
                                                        Integer. Range: 1 - 2147483647 Default: 310000
                                  heartbeat-interval  : Interval in seconds to keep sending heart beat to PubNub subscribes
                                                        flags: readable, writable
                                                        (null)
                                  origin-url          : PubNub Signaler Origin URL (only set in NULL state)
                                                        flags: readable, writable
                                                        String. Default: "pubsub.pubnub.com"
                            GstOwrSignaler
                                  name                : The name of the object
                                                        flags: readable, writable
                                                        String. Default: "owrsignaler0"
                                  parent              : The parent of the object
                                                        flags: readable, writable
                                                        (null)
                                  session-id          : Session Identification
                                                        flags: readable, writable
                                                        String. Default: "ridgerun"
                                  server-url          : URL Server Connection
                                                        flags: readable, writable
                                                        String. Default: "http://localhost:8080"
                                  ssl-strict          : Whether to accept valid certificates only or not
                                                        flags: readable, writable
                                                        (null)
                                  api-token           : API Token ID
                                                        flags: readable, writable
                                                        String. Default: "RRGstWebRTC"
                        flags: readable, writable
                        Enum "GstWebrtcSignalers" Default: 0, "GstPubnubSignaler"
                           (0): GstPubnubSignaler - Pubnub signaler
                           (1): GstOwrSignaler   - OWR signaler
  start-call          : Start the call from this endpoint
                        flags: writable
                        Boolean. Default: true Write only

Element Signals:
  "on-bandwidth-estimation" :  void user_function (GstElement* object,
                                                   guint arg0,
                                                   guint arg1,
                                                   guint arg2,
                                                   guint64 arg3,
                                                   gpointer user_data);
  "on-signaler-notify" :  void user_function (GstElement* object,
                                              gchararray arg0,
                                              gchararray arg1,
                                              gchararray arg2,
                                              gpointer user_data);
  "on-message-data" :  void user_function (GstElement* object,
                                           GBytes* arg0,
                                           gpointer user_data);
  "on-message-string" :  void user_function (GstElement* object,
                                             gchararray arg0,
                                             gpointer user_data);

Element Actions:
  "send-metadata" :  void user_function (GstElement* object,
                                         gchararray arg0);
  "send-metadata-binary" :  void user_function (GstElement* object,
                                                GBytes* arg0);


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: Architecture/GstWebRTCWrapperBin_Modules Index Next: Getting_the_Code