GstWebRTC - PubNub Audio + Video Examples - x86: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
No edit summary
Line 20: Line 20:
==== Example ====
==== Example ====


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


<pre style="background-color:yellow">
<pre style="background-color:yellow">
Line 106: Line 106:


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


==== Send-Receive Pipeline ====
==== Send-Receive Pipeline ====

Revision as of 19:53, 20 February 2018

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


Audio + Video


Home

Home



This page links to the GstWebRTC audio and video examples using PubNub.


H264+Opus

Unidirectional elements

Example

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

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.

Send Pipeline

USER_CHANNEL=123
PEER_CHANNEL=123peer
gst-launch-1.0 webrtcsink 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 \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio

Receive Pipeline

USER_CHANNEL=123peer
PEER_CHANNEL=123
gst-launch-1.0 webrtcsrc 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.audio ! rtpopusdepay ! opusdec ! autoaudiosink

Bidirectional elements

Example

In this example we use two webrtcbins, 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 webrtcbin 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 \
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 webrtcbin 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 \
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 webrtcsink to send a video stream and an audio stream, then webrtcsrc receive the video and audio streams.

Send Pipeline

USER_CHANNEL=123
PEER_CHANNEL=123peer
gst-launch-1.0 -v webrtcsink 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 \
audiotestsrc is-live=true ! opusenc ! rtpopuspay ! web.audio

Receive Pipeline

USER_CHANNEL=123peer
PEER_CHANNEL=123
gst-launch-1.0 -v webrtcsrc 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.audio ! rtpopusdepay ! opusdec ! autoaudiosink

Bidirectional elements

Example

In this example we use two webrtcbins, 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 -v webrtcbin 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 -v webrtcbin 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




Audio + Video


Home

Home