ardupilot/libraries/AP_Camera/examples
Rhys Mainwaring 00163ce988 AP_Camera: add Python examples for GStreamer UDP and RTSP video streams
Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
2024-09-26 09:32:27 +09:00
..
README.md
gst_rtsp_server.py
gst_rtsp_to_wx.py
gst_udp_to_rtsp.py
gst_udp_to_wx.py

README.md

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