Difference between revisions of "GstWebRTC - PubNub Audio + Video Examples - x86"

From RidgeRun Developer Connection
Jump to: navigation, search
m
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<table>
+
{{GstWebRTC/Head|previous=PubNub Video Examples - x86|next=PubNub Web Pages - x86|keywords=GstWebRTC Examples,WebRTC Examples,GstWebRTC GStreamer pipelines,WebRTC GStreamer pipelines,GstWebRTC PubNub Signaler,WebRTC PubNub Signaler,WebRTC Audio+Video Example, WebRTC GStreamer Audio+Video pipelines,GstWebRTC PubNub,GstWebRTC Audio+Video Example, GstWebRTC GStreamer Audio+Video pipelines,WebRTC PubNub,signaling}}
<tr>
 
<td><div class="clear; float:right">__TOC__</div></td>
 
<td valign=top>
 
{{Debug Symbol}} Problems running the pipelines shown on this page?<br>Please see our [http://developer.ridgerun.com/wiki/index.php?title=GStreamer_Debugging GStreamer Debugging guide] for help.
 
</td>
 
</table>
 
  
{{GstWebRTC Page|
+
This page presents the GstRrWebRTC audio and video examples on '''x86 platform''' using PubNub.
[[GstWebRTC - PubNub Video Examples|PubNub Video Examples]]|
+
<br>
[[GstWebRTC - PubNub Web Pages|PubNub Web Pages]]|
+
<br>
 
+
{{GStreamer debug}}
This page links to the GstWebRTC audio and video examples using PubNub.
 
__TOC__
 
  
 
== H264+Opus  ==
 
== H264+Opus  ==
Line 20: Line 12:
 
==== Example ====
 
==== Example ====
  
In this example we use rrwebrtcsink to send a video stream and an audio stream, then rrwebrtcsrc receive the video and audio streams.
+
In this example, we use rrwebrtcbin to send a video stream and an audio stream, then rrwebrtcbin receive the video and audio streams.
 
 
<pre style="background-color:yellow">
 
It seems that browsers do not get along with x264 because of SEI NAL units sent with the stream. As a workaround, we set key-int-max=1 and avoid the SEI insertions.
 
</pre>
 
  
 
==== Send Pipeline ====
 
==== Send Pipeline ====
Line 31: Line 19:
 
USER_CHANNEL=123
 
USER_CHANNEL=123
 
PEER_CHANNEL=123peer
 
PEER_CHANNEL=123peer
gst-launch-1.0 rrwebrtcsink rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
+
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! x264enc aud=false key-int-max=1 tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video \
+
videotestsrc is-live=true ! x264enc tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio
+
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 41: Line 29:
 
USER_CHANNEL=123peer
 
USER_CHANNEL=123peer
 
PEER_CHANNEL=123
 
PEER_CHANNEL=123
gst-launch-1.0 rrwebrtcsrc rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
+
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
web.video ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
+
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
web.audio ! rtpopusdepay ! opusdec ! autoaudiosink  
+
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 57: Line 45:
 
PEER_CHANNEL=123peer
 
PEER_CHANNEL=123peer
 
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
 
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! x264enc aud=false key-int-max=1 tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
+
videotestsrc is-live=true ! x264enc tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
 
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
 
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
 
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
 
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
Line 69: Line 57:
 
PEER_CHANNEL=123
 
PEER_CHANNEL=123
 
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
 
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! x264enc aud=false key-int-max=1 tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
+
videotestsrc is-live=true ! x264enc tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
 
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
 
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
 
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
 
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
Line 81: Line 69:
 
==== Example ====
 
==== Example ====
  
In this example we use rrwebrtcsink to send a video stream and an audio stream, then rrwebrtcsrc receive the video and audio streams.
+
In this example, we use rrwebrtcbin to send a video stream and an audio stream, then rrwebrtcbin receive the video and audio streams.
  
 
==== Send Pipeline ====
 
==== Send Pipeline ====
Line 88: Line 76:
 
USER_CHANNEL=123
 
USER_CHANNEL=123
 
PEER_CHANNEL=123peer
 
PEER_CHANNEL=123peer
gst-launch-1.0 rrwebrtcsink rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
+
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! vp8enc ! rtpvp8pay ! web.video \
+
videotestsrc is-live=true ! vp8enc ! rtpvp8pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio
+
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 98: Line 86:
 
USER_CHANNEL=123peer
 
USER_CHANNEL=123peer
 
PEER_CHANNEL=123
 
PEER_CHANNEL=123
gst-launch-1.0 rrwebrtcsrc rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
+
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
web.video ! rtpvp8depay ! avdec_vp8 ! autovideosink \
+
web.video_src ! rtpvp8depay ! avdec_vp8 ! autovideosink \
web.audio ! rtpopusdepay ! opusdec ! autoaudiosink
+
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 132: Line 120:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
}}
+
 
 +
{{GstWebRTC/Foot|previous=PubNub Video Examples - x86|next=PubNub Web Pages - x86}}

Latest revision as of 14:35, 13 April 2020



Previous: PubNub Video Examples - x86 Index Next: PubNub Web Pages - x86




This page presents the GstRrWebRTC audio and video examples on x86 platform using PubNub.

Error something wrong.jpg Problems running the pipelines shown on this page?
Please see our GStreamer Debugging guide for help.

H264+Opus

Unidirectional elements

Example

In this example, we use rrwebrtcbin to send a video stream and an audio stream, then rrwebrtcbin receive the video and audio streams.

Send Pipeline

USER_CHANNEL=123
PEER_CHANNEL=123peer
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! x264enc tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink

Receive Pipeline

USER_CHANNEL=123peer
PEER_CHANNEL=123
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink

Bidirectional elements

Example

In this example we use two rrwebrtcbins, each send a video stream and an audio stream, and receives each other video and audio streams.

Send-Receive Pipeline

USER_CHANNEL=123
PEER_CHANNEL=123peer
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! x264enc tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink

Send-Receive Pipeline

USER_CHANNEL=123peer
PEER_CHANNEL=123
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! x264enc tune=zerolatency intra-refresh=true ! "video/x-h264,profile=constrained-baseline,level=(string)3.1" ! rtph264pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink \
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink

VP8+Opus

Unidirectional elements

Example

In this example, we use rrwebrtcbin to send a video stream and an audio stream, then rrwebrtcbin receive the video and audio streams.

Send Pipeline

USER_CHANNEL=123
PEER_CHANNEL=123peer
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! vp8enc ! rtpvp8pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink

Receive Pipeline

USER_CHANNEL=123peer
PEER_CHANNEL=123
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
web.video_src ! rtpvp8depay ! avdec_vp8 ! autovideosink \
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink

Bidirectional elements

Example

In this example we use two rrwebrtcbins, each send a video stream and an audio stream, then receives each other video and audio streams.

Send-Receive Pipeline

USER_CHANNEL=123
PEER_CHANNEL=123peer
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=true signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! vp8enc ! rtpvp8pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
web.video_src ! rtpvp8depay ! avdec_vp8 ! autovideosink \
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink

Send-Receive Pipeline

USER_CHANNEL=123peer
PEER_CHANNEL=123
gst-launch-1.0 rrwebrtcbin rtcp-mux=true start-call=false signaler::user-channel=$USER_CHANNEL signaler::peer-channel=$PEER_CHANNEL name=web \
videotestsrc is-live=true ! vp8enc ! rtpvp8pay ! web.video_sink \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio_sink \
web.video_src ! rtpvp8depay ! avdec_vp8 ! autovideosink \
web.audio_src ! rtpopusdepay ! opusdec ! autoaudiosink



Previous: PubNub Video Examples - x86 Index Next: PubNub Web Pages - x86