GStreamer Pipeline Samples
Please note that these are only some pipeline samples as a guide, and depending on the hardware and architecture of the target robot, may or may not work. Please contact our support for more help.
Video Test Pattern Generator
This default pipeline is helpful to verify the correct operation of the GStreamer installation on the robot, the video transport infrastructure, rendering on the browser: it uses the videotestsrc element to generate a test pattern, overlays the current pipeline runtime as white text on top of the pattern, encodes the video to H264 using the default (CPU based) video encoder, and outputs the H264 in a suitable stream format.
videotestsrc ! video/x-raw,format=I420,width=1280,height=720 ! timeoverlay draw-shadow=false draw-outline=false deltay=20 font-desc="Sans, 42" color=0xFF000000 ! x264enc bframes=0 speed-preset=veryfast key-int-max=30 bitrate=4000 ! video/x-h264,stream-format=byte-stream,profile=constrained-baseline ! queue silent=true ! rtph264pay mtu=1400 config-interval=-1 ! application/x-rtp,media=video,clock-rate=${$channels.video.clockRate},encoding-name=${$channels.video.encodingName},ssrc=(uint)${$channels.video.SSRC} ! queue silent=true ! udpsink host=127.0.0.1 port=${$pipeline.port} sync=false async=true
This encoder is configured to generate no B-frames (so the stream will only contain I-frames and P-frames), with GOP size of 30 (one I-frame every 30 frames), and target bitrate of 4Mb/s.
Native Camera Peripherals
NVIDIA Jetson Nano with CSI Camera
nvarguscamerasrc sensor_id=0 ! nvvidconv ! omxh264enc ! h264parse ! video/x-h264,stream-format=byte-stream,profile=constrained-baseline,alignment=au ! queue silent=true ! rtph264pay mtu=1400 config-interval=-1 ! application/x-rtp,media=video,clock-rate=${$channels.video.clockRate},encoding-name=${$channels.video.encodingName},ssrc=(uint)${$channels.video.SSRC} ! queue silent=true ! udpsink host=127.0.0.1 port=${$pipeline.port} sync=false async=true
V4L2 Cameras
v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=${$channels.video.width}, height=${$channels.video.height}, framerate=${$channels.video.framerate} ! queue ! videoconvert ! video/x-raw,format=I420 ! x264enc bframes=0 speed-preset=veryfast key-int-max=60 ! video/x-h264,stream-format=byte-stream ! queue silent=true ! rtph264pay mtu=1400 config-interval=-1 ! application/x-rtp,media=video,clock-rate=${$channels.video.clockRate},encoding-name=${$channels.video.encodingName},ssrc=(uint)${$channels.video.SSRC} ! queue silent=true ! udpsink host=127.0.0.1 port=${$pipeline.port} sync=false async=true
v4l2src device=/dev/video3 ! video/x-raw,format=YUY2,width=640, height=480, framerate=30/1 ! queue ! videoconvert ! video/x-raw,format=I420 ! x264enc bframes=0 speed-preset=veryfast key-int-max=60 ! video/x-h264,stream-format=byte-stream queue silent=true ! rtph264pay mtu=1400 config-interval=-1 ! application/x-rtp,media=video,clock-rate=${$channels.video.clockRate},encoding-name=${$channels.video.encodingName},ssrc=(uint)${$channels.video.SSRC} ! queue silent=true ! udpsink host=127.0.0.1 port=${$pipeline.port} sync=false async=true
RTSP IP Cameras
Axis Q6128-E
rtspsrc location="rtsp://192.168.5.90/axis-media/media.amp?videocodec=h264&resolution=1280x720&fps=25&videobitrate=4000&compression=50" is-live=true latency=0 protocols=tcp ! rtph264depay ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! h264parse config-interval=-1 ! queue silent=true ! rtph264pay mtu=1400 config-interval=-1 ! application/x-rtp,media=video,clock-rate=${$channels.video.clockRate},encoding-name=${$channels.video.encodingName},ssrc=(uint)${$channels.video.SSRC} ! queue silent=true ! udpsink host=127.0.0.1 port=${$pipeline.port} sync=false async=true
FLIR AX8
rtspsrc is-live=true location="rtsp://192.168.5.15/avc?overlay=off" ! rtph264depay ! video/x-h264,stream-format=avc,alignment=au,profile=constrained-baseline ! queue ! h264parse config-interval=-1
 ! application/x-rtp,media=video,clock-rate=${$channels.video.clockRate},encoding-name=${$channels.video.encodingName},ssrc=(uint)${$channels.video.SSRC} ! queue silent=true ! udpsink host=${$pipeline.address} port=${$pipeline.port} sync=false async=true
Other Network Sources
Forwarding H264 RTP from a Fixed Port
udpsrc address=127.0.0.1 port=1234 caps=\"application/x-rtp,media=video,encoding-name=H264,clock-rate=90000,payload=96\" ! rtpjitterbuffer latency=100 ! rtph264depay ! h264parse config-interval=-1 ! video/x-h264,stream-format=byte-stream,alignment=au,profile=constrained-baseline ! rtph264pay mtu=1400 config-interval=1 pt=96 ! application/x-rtp,media=video,clock-rate=${$channels.video.clockRate},encoding-name=${$channels.video.encodingName},ssrc=(uint)${$channels.video.SSRC} ! queue silent=true ! udpsink host=${pipeline.address} port=${$pipeline.port} sync=false async=true