GStreamer WebRTC Wrapper - GStreamer Pipelines - OWR Pipelines
GStreamer WebRTC Wrapper |
---|
Introduction |
Architecture |
|
Evaluating GstWebRTCWrapper |
Getting the Code |
GStreamer Pipelines |
Other WebRTC RidgeRun products |
Contact Us |
|
Description
This page presents some GStreamer examples pipelines on supported platforms using the OpenWebRTC (OWR) Demo.
Launch OWR Demo
1. Install nodejs
sudo apt install nodejs
2. Start the signaler running it as background. This will print the port for the signaler which you will use for the SERVER_URL.
cd <path-to-gst-webrtc-wrapper>/tests/examples/signalers/owr node signaler.js &
3. Start the web client on the PC. By default, the web client starts at port 8080. To use a different port provide it as an argument at the end.
#Start web client at port 8080 cd <path-to-gst-webrtc-wrapper>/tests/examples/signalers/owr node owr_web_client_example.js & #Start web client at port 8082 cd <path-to-gst-webrtc-wrapper>/tests/examples/signalers/owr node owr_web_client_example.js 8082 &
4. Enter the web client at http://localhost:8080/ as default (remember to change port accordingly) and type the server (signaler) URL where it is running. For example, http://10.251.101.124:8081, where 10.251.101.124 is the IP address of the system where the signaler is running. Then press 'join' in the web client. Don't forget to activate the video option to watch the example.
5. To set up the WebRTC sender (media server) use one of the pipelines in the following sections.
Pipeline examples per platform
x86
Unidirectional
Video
H.264
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 webrtcwrapperbin start-call=true signaler=GstOwrSignaler \ signaler::server_url=${SERVER_URL} \ signaler::session_id=${SESSION_ID} name=web videotestsrc is-live=true ! queue ! videoconvert ! \ x264enc key-int-max=2 ! rtph264pay ! web.
VP8
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 webrtcwrapperbin start-call=true signaler=GstOwrSignaler \ signaler::server_url=${SERVER_URL} \ signaler::session_id=${SESSION_ID} name=web videotestsrc is-live=true ! queue ! videoconvert ! \ vp8enc ! rtpvp8pay ! web.
Data Channel
H264 codec
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 webrtcwrapperbin start-call=true data-channel=true metadata=hello_world \ signaler=GstOwrSignaler \ signaler::server_url=${SERVER_URL} \ signaler::session_id=${SESSION_ID} name=web videotestsrc is-live=true ! queue ! videoconvert ! \ x264enc key-int-max=2 ! rtph264pay ! web.
The browser page should look like in Figure 3, where the message sent "hello_world" appears in the chat window.
Bidirectional
Video
H.264
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 webrtcwrapperbin start-call=true signaler=GstOwrSignaler \ signaler::server_url=${SERVER_URL} \ signaler::session_id=${SESSION_ID} name=web videotestsrc is-live=true ! queue ! videoconvert ! \ x264enc key-int-max=2 ! rtph264pay ! web. web. ! rtph264depay ! avdec_h264 ! autovideosink
VP8
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 webrtcwrapperbin start-call=true signaler=GstOwrSignaler \ signaler::server_url=${SERVER_URL} \ signaler::session_id=${SESSION_ID} name=web videotestsrc is-live=true ! queue ! videoconvert ! \ vp8enc ! rtpvp8pay ! web. web. ! rtpvp8depay ! avdec_vp8 ! autovideosink
Communication between two WebRTCWrapper elements
Communication starter pipeline:
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 webrtcwrapperbin start-call=true signaler=GstOwrSignaler \ signaler::server_url=${SERVER_URL} \ signaler::session_id=${SESSION_ID} name=web videotestsrc is-live=true ! video/x-raw,width=640,height=480,framerate=30/1 ! \ videoconvert ! x264enc key-int-max=2 ! h264parse ! rtph264pay ! web. web. ! rtph264depay ! avdec_h264 ! autovideosink
Receiving peer pipeline:
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 webrtcwrapperbin start-call=false signaler=GstOwrSignaler \ signaler::server_url=${SERVER_URL} \ signaler::session_id=${SESSION_ID} name=web videotestsrc is-live=true ! video/x-raw,width=640,height=480,framerate=30/1 ! \ videoconvert ! x264enc key-int-max=2 ! h264parse ! rtph264pay ! web. web. ! rtph264depay ! avdec_h264 ! autovideosink
NVIDIA Jetson devices
The following pipelines are created using NVIDIA resources like cameras, video codecs.
Unidirectional
Video
H.264
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! nvvidconv ! queue leaky=2 max-size-buffers=5 ! nvv4l2h264enc maxperf-enable=1 ! rtph264pay ! webrtcwrapperbin signaler=GstOwrSignaler signaler::server_url=${SERVER_URL} signaler::session_id=${SESSION_ID} start-call=true name=web
VP8
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! nvvidconv ! queue leaky=2 max-size-buffers=5 ! nvv4l2vp8enc maxperf-enable=1 ! rtpvp8pay ! webrtcwrapperbin signaler=GstOwrSignaler signaler::server_url=${SERVER_URL} signaler::session_id=${SESSION_ID} start-call=true name=web
Bidirectional
Video
H.264
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! nvvidconv ! queue leaky=2 max-size-buffers=5 ! nvv4l2h264enc maxperf-enable=1 ! rtph264pay ! webrtcwrapperbin signaler=GstOwrSignaler signaler::server_url=${SERVER_URL} signaler::session_id=${SESSION_ID} start-call=true name=web web. ! rtph264depay ! decodebin ! autovideosink
VP8
SESSION_ID=59078bedca1 SERVER_URL=http://localhost:8081 gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! nvvidconv ! queue leaky=2 max-size-buffers=5 ! nvv4l2vp8enc maxperf-enable=1 ! rtpvp8pay ! webrtcwrapperbin signaler=GstOwrSignaler signaler::server_url=${SERVER_URL} signaler::session_id=${SESSION_ID} start-call=true name=web web. ! rtpvp8depay ! decodebin ! autovideosink