GstWebRTC - PubNub Audio + Video Examples - x86: Difference between revisions
No edit summary |
|||
Line 77: | Line 77: | ||
== VP8+Opus == | == VP8+Opus == | ||
=== Example === | === 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 ==== | |||
<syntaxhighlight lang=bash> | |||
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 | |||
</syntaxhighlight> | |||
==== Receive Pipeline ==== | |||
<syntaxhighlight lang=bash> | |||
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 | |||
</syntaxhighlight> | |||
=== 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. | In this example we use two webrtcbins, each send a video stream and an audio stream, and receives each other video and audio streams. | ||
Revision as of 19:51, 20 February 2018
Problems running the pipelines shown on this page? |
← |
⌂ 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 webrtcsrc to receive the video stream.
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, and 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
← |
⌂ Home |
→ |