Spherical Video PTZ - User Guide - GStreamer

From RidgeRun Developer Wiki


  Index  






WIP - Wiki

This wiki introduces the GstRrPanoramaptz plugin, a component of GStreamer designed to apply Pan-Tilt-Zoom (PTZ) transformations to video panoramas using CUDA. Developed with a focus on high-performance video processing, this plugin supports real-time adjustments of panoramic video feeds, enabling dynamic viewpoint changes through pan, tilt, and zoom operations. Ideal for applications requiring interactive video navigation or automated surveillance, GstRrPanoramaptz extends GStreamer's capabilities with advanced video transformation techniques. Here, you'll find setup instructions, usage examples, and insights on integrating this plugin into your video processing pipeline, offering a comprehensive guide to leveraging its features for enhanced video manipulation.

Building the project

After the Building and Installation of Spherical Video PTZ section follow this steps to build the rrpanoramaptz plugin for Gstreamer.

1. Start by cloning the project using the repository you have been given

git clone git@gitlab.ridgerun.com:$YOUR_REPO/gst-rr-panoramaptz
cd gst-rr-panoramaptz


2. Configure the project by running the following:

meson builddir
ninja -C builddir
sudo ninja -C builddir install

Validating the Build

gst-inspect-1.0 rrpanoramaptz

Upon successful build validation with gst-inspect-1.0 rrpanoramaptz, the output will detail the plugin's comprehensive configuration, highlighting its purpose, capabilities, and properties.

Quick start guide

The GstRrPanoramaptz plugin allows for real-time PTZ adjustments on panoramic video feeds, enabling users to explore video scenes in greater detail or from different perspectives.

Features

  • CUDA-accelerated PTZ transformations.
  • Support for RGBA video format.
  • Dynamic parameter adjustments for pan, tilt, and zoom.

Properties

  • Rotate the video on its horizontal axis. Range: -360 to 360 degrees. Default: 0.
  • Rotate the video on its vertical axis. Range: -360 to 360 degrees. Default: 0.
  • Dynamic parameter adjustments for pan, tilt, and zoom. WIP

Caps and Formats

  • Accepts and outputs video in video/x-raw format with RGBA color space.
  • Supports both system memory and NVMM memory inputs for enhanced performance on NVIDIA hardware.

Basic use example

To pan a test video source 90 degrees, you can use the following pipeline:

gst-launch-1.0 videotestsrc ! rrpanoramaptz pan=90 ! fakesink

Examples gst-launch

Using CPU

This command generates a video test pattern, applies PTZ transformations, and resizes the output video to 1280x720 pixels for display.

gst-launch-1.0 videotestsrc pattern=0 ! "video/x-raw,width=1920,height=1080" ! rrpanoramaptz zoom=2.2 tilt=40 pan=80 ! "video/x-raw,width=1280,height=720" ! queue ! videoconvert ! autovideosink sync=false

This pipeline reads an image, applies a 2x zoom transformation, and displays the result:

gst-launch-1.0 filesrc location=sample.jpg ! jpegdec ! videoscale ! video/x-raw,width=500,height=500 ! imagefreeze ! videoconvert ! video/x-raw,format=RGBA ! rrpanoramaptz zoom=2 ! videoconvert ! autovideosink sync=false

Using cam:

gst-launch-1.0 autovideosrc ! "video/x-raw,width=1920,height=1080" ! videoconvert ! "video/x-raw,format=(string)RGBA" ! rrpanoramaptz pan=80 tilt=40 zoom=2.2 ! "video/x-raw,width=1280,height=720" ! videoconvert ! autovideosink sync=false


Using GPU

gst-launch-1.0 videotestsrc pattern=0 ! nvvidconv ! "video/x-raw(memory:NVMM),format=RGBA,width=1920,height=1080" ! rrpanoramaptz ! nvvidconv ! nvv4l2h264enc idrinterval=30 insert-aud=true insert-sps-pps=true insert-vui=true ! h264parse ! mpegtsmux ! udpsink port=1234 host=192.168.0.10

Examples gstd


  Index