GStreamer Video Streaming Pipelines
Video Streaming
This section validates streaming pipelines using the NVIDIA accelerated multimedia stack on Jetson platforms.
To generate a synthetic video stream. This makes the section reproducible on Jetson systems accessed through a local display, serial console, SSH, or headless deployments.
The examples still exercise the NVIDIA accelerated streaming stack end to end, including:
- Hardware accelerated H.264 encoding
- RTP packetization
- RTP transport over UDP
- NVIDIA accelerated decoding
- Buffer conversion through
nvvidconv
Before continuing, make sure the multimedia environment described in Software Environment is already available on the target system.
Runtime Requirements
The examples in this section require the multimedia enabled image together with the NVIDIA accelerated plugins used by the Jetson multimedia stack.
The following plugins should already be available:
gst-inspect-1.0 videotestsrc gst-inspect-1.0 nvvidconv gst-inspect-1.0 nvv4l2h264enc gst-inspect-1.0 nvv4l2decoder gst-inspect-1.0 h264parse gst-inspect-1.0 rtph264pay gst-inspect-1.0 rtph264depay gst-inspect-1.0 rtspsrc
What to expect:
- Each command should print plugin information.
- None of the commands should return:
No such element or plugin
If one or more plugins are missing, the multimedia image is incomplete and the remaining examples should not be used yet.
Streaming Overview
Streaming validation is typically divided into two layers:
- RTP over UDP transport validation
- RTSP session based streaming validation
RTP validates the media transport path itself.
The media pipelines below use videotestsrc as the input source so that the complete streaming path can be tested without a camera.
RTP Transport Validation
This section validates the raw transport path using RTP over UDP.
The sender pipeline generates synthetic video, encodes it with the NVIDIA hardware accelerated H.264 encoder, packetizes the stream as RTP, and sends it to a receiver over UDP.
RTP Sender
gst-launch-1.0 -e -v videotestsrc is-live=true num-buffers=300 pattern=smpte \ ! video/x-raw,width=1280,height=720,framerate=30/1,format=I420 \ ! nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12' \ ! queue \ ! nvv4l2h264enc preset-id=1 bitrate=4000000 iframeinterval=30 insert-sps-pps=true \ ! h264parse config-interval=-1 \ ! rtph264pay config-interval=1 pt=96 \ ! udpsink host=<receiver-ip> port=5000 sync=false async=false
What to expect:
- The pipeline should move from
PAUSEDtoPLAYING. - The encoder should initialize correctly.
- The sender should emit RTP packets continuously until the 300 buffers are processed.
- The terminal should end with:
Got EOS
RTP Receiver on Jetson
Use this receiver when the client system is another Jetson platform.
gst-launch-1.0 -e -v udpsrc port=5000 \ caps="application/x-rtp, media=video, encoding-name=H264, payload=96" \ ! rtph264depay ! h264parse ! nvv4l2decoder \ ! queue ! fakesink
What to expect:
- The receiver should connect and start consuming RTP packets.
- The H.264 depayloader should negotiate correctly.
- The NVIDIA decoder should initialize correctly.
- The pipeline should remain stable until the sender finishes.
For graphical playback on Jetson, replace the final branch with:
! nv3dsink sync=false
RTP Receiver on x86 Host
If you are validating from a non-Jetson host, use software decode instead of nvv4l2decoder:
gst-launch-1.0 -e -v udpsrc port=5000 \ caps="application/x-rtp, media=video, encoding-name=H264, payload=96" \ ! rtph264depay ! h264parse ! avdec_h264 \ ! videoconvert ! fakesink
What to expect:
- The RTP stream should decode successfully on the host.
- If
avdec_h264is missing, install the GStreamer libav plugin set on the host. - This is useful when the receiver is not a Jetson device.
Common Streaming Issues
Client Cannot Connect
Typical causes include:
- Firewall restrictions
- Incorrect network configuration
Receiver Decoder Missing
If the receiver is a non-Jetson host, nvv4l2decoder will not exist.
Use:
avdec_h264
instead.
No Video Output
If graphical playback fails:
- Verify that a local X11 or Wayland session is running
- Confirm display initialization
- Use
fakesinkfor headless validation
Negotiation Failures
Verify the relevant plugins:
gst-inspect-1.0 nvv4l2h264enc gst-inspect-1.0 rtph264pay gst-inspect-1.0 rtph264depay gst-inspect-1.0 nvv4l2decoder
Additional Resources
- Software Environment
- Codecs
- GStreamer rtspsrc Documentation
- GStreamer RTSP Server Documentation
- NVIDIA Accelerated GStreamer Documentation
- Need support for custom multimedia protocols or streaming integrations? RidgeRun Multimedia Services for embedded platforms.