AP_Camera examples
GStreamer examples
The following examples demonstrate how to manipulate GStreamer pipelines to capture and display video streams from a UDP or RTSP source. They are useful for providing test images to camera algorithms, or forwarding streams from simulators such as Gazebo to ground control stations.
For further details see:
Install dependencies
Ubuntu
sudo apt install libopencv-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl gstreamer1.0-tools gstreamer1.0-plugins-ugly libgstrtspserver-1.0-dev
macOS
brew install gstreamer opencv
gst_rtsp_server.py
The example provides a number of test images as an RTSP stream that may be accessed at:
- rtsp://127.0.0.1:8554/camera
- rtsp://127.0.0.1:8554/ball
- rtsp://127.0.0.1:8554/snow
Start the RTSP server:
python ./gst_rtsp_server.py
Display the RTSP stream:
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/camera latency=50 ! decodebin ! autovideosink
gst_rtsp_to_wx.py
The example displays an RTSP stream in a wxPython application.
Start the RTSP server:
python ./gst_rtsp_server.py
Display the RTSP stream in wxPython
python ./gst_rtsp_to_wx.py
gst_udp_to_rtsp.py
Convert a UDP stream to RTSP. This example is configured to use the same UDP
pipeline provided by the ArduPilot Gazebo GstCameraPlugin. By converting the
UDP stream to RTSP is may be consumed by multiple applications
(e.g. a camera tracking algorithm and a GCS).
Create a UDP video stream
gst-launch-1.0 -v videotestsrc ! 'video/x-raw,format=I420,width=640,height=480,framerate=50/1' ! queue ! videoconvert ! x264enc bitrate=800 speed-preset=6 tune=4 key-int-max=10 ! rtph264pay ! udpsink host=127.0.0.1 port=5600
Convert to RTSP:
python ./gst_udp_to_rtsp.py
Display the RTSP stream:
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/camera latency=50 ! decodebin ! autovideosink
gst_udp_to_wx.py
The example displays a UDP video stream in a wxPython application.
Create a UDP video stream:
gst-launch-1.0 -v videotestsrc ! 'video/x-raw,format=I420,width=640,height=480,framerate=50/1' ! queue ! videoconvert ! x264enc bitrate=800 speed-preset=6 tune=4 key-int-max=10 ! rtph264pay ! udpsink host=127.0.0.1 port=5600
Display the UDP video stream in wxPython:
python ./gst_udp_to_wx.py