Gstreamer videorate for nvarguscamerasrc

Hey there. I’m developing some camera control pipelines for a UAV system and I need help in being able to provide a stream to multiple locations. I need to do the following.

  1. From a MIPI sensor, send a full 30fps video stream to some arbitrary IP address
  2. From the same MIPI sensor and at the same time, save frames as images files at 4fps.

First off, I am streaming the video to another location using a pipeline like this:

gst-launch-1.0 ! nvarguscamerasrc ! "video/x-raw(memory:NVMM),width=640,height=512" ! nvvidconv ! jpegenc ! rtpjpegpay ! udpsink host=192.168.1.3 port=8001

Then at a udpsrc endpoint I have the video stream decoded and displayed or perhaps saved elsewhere. I want to continue sending video to this location while also sending frames from the same sensor at a slower framerate (4fps) to either another udpsink or just saving the frames as png/jpeg files for processing on the host computer.

How can this be done? If I use v4l2 on a usb camera, I am able to use a videorate plugin in the pipeline to set the framerate low but I can’t get videorate to work with a MIPI camera with nvarguscamerasrc; and I still need to be able to send a full 30fps video stream while also handling a 4fps stream from the same sensor.

Is this possible? Can it be done by sending a full 30fps stream to a udpsink and then somehow picking up frames at a slower rate on the udpsrc side?

Thank you in advance for any advice.

You should be able use videorate for nvarguscamerasrc.

gst-launch-1.0 nvarguscamerasrc ! "video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080,format=(string)NV12, framerate=(fraction)30/1" ! nvvidconv ! videorate ! video/x-raw,framerate=4/1 ! xvimagesink sync=false

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.