Files
ardupilot/libraries/AP_Camera/examples
Christian Clauss 3bac9c0c64 AP_Camera: Fix check-executables-have-shebangs
% `pre-commit run --all-files check-executables-have-shebangs ` # currently fails on localhost (a developer's machine).
* https://github.com/pre-commit/pre-commit-hooks?tab=readme-ov-file#check-executables-have-shebangs

With the suggested change in this pull request, that test passes.

The linter directive `# flake8: noqa` was added to ensure that
`pre-commit run flake8` also passed on some Python files.
2025-06-15 22:28:53 +10:00
..
…

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