Difference between revisions of "GstWebRTC - PubNub Video Examples - x86"
Line 17: | Line 17: | ||
== H264 == | == H264 == | ||
− | === Example == | + | === Unidirectional elements === |
− | In this example we use | + | |
+ | == Example == | ||
+ | |||
+ | In this example we use webrtcsink to send a video stream and webrtcsrc to receive the video stream. | ||
==== x264 ==== | ==== x264 ==== | ||
Line 25: | Line 28: | ||
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. | 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> | </pre> | ||
+ | |||
+ | ==== Send Pipeline ==== | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== Receive Pipeline ==== | ||
+ | |||
+ | <syntaxhighlight lang=bash> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Bidirectional elements === | ||
+ | |||
+ | == Example == | ||
+ | In this example we use two webrtcbins, each send a video stream and receives each other video stream. | ||
+ | |||
+ | ==== x264 ==== | ||
==== Send-Receive Pipeline ==== | ==== Send-Receive Pipeline ==== |
Revision as of 14:31, 20 February 2018
|
← |
⌂ Home |
→ |
This page presents some GstWebRTC video examples using PubNub.
H264
Unidirectional elements
Example
In this example we use webrtcsink to send a video stream and webrtcsrc to receive the video stream.
x264
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
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
Bidirectional elements
Example
In this example we use two webrtcbins, each send a video stream and receives each other video stream.
x264
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 \
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
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 \
web.video_src ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
VP8
Example
In this example we use two webrtcbins, each send a video stream, and receives each other video stream.
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 \
web.video_src ! rtpvp8depay ! avdec_vp8 ! autovideosink
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 \
web.video_src ! rtpvp8depay ! avdec_vp8 ! autovideosink
← |
⌂ Home |
→ |