Achieving Full 120FPS with Arducam OV9281 on Jetson Orin Nano

Hello NVIDIA Community,

I’m working with an Arducam based on the 1MP monochrome (black & white) global shutter sensor OV9281, assembled with a 70°(H) low distortion M12 lens without an IR pass filter, which is sensitive to IR. This camera is designed to shoot high-speed moving objects in crisp, sharp images, supporting MJPG at 120fps@1280 x 800 among other resolutions and frame rates.

My setup includes:

  • OS: Ubuntu 20.04.6 LTS (Focal Fossa)
  • Kernel: 5.10.192-tegra
  • CUDA Version: 11.4

I am attempting to capture video at the camera’s maximum capability of 120FPS at 1280x800 resolution using GStreamer with the following pipeline:

bashCopy code

gst-launch-1.0 v4l2src device=/dev/video0 ! "image/jpeg,width=1280,height=800,framerate=120/1" ! jpegdec ! videoconvert ! fpsdisplaysink sync=false text-overlay=true

However, I’m only able to achieve 49FPS instead of the expected 120FPS. It’s noteworthy that my CPU utilization is around 15% during this process, and it appears that the GPU is not being leveraged.

I’m seeking advice on how to fully utilize the camera’s capabilities and achieve the 120FPS at the specified resolution. Any insights on adjustments to my GStreamer pipeline or configurations that might help overcome this limitation would be greatly appreciated. Additionally, if there are any other software tools or commands that could help diagnose or solve this issue, I’d be interested in exploring those options.

Thank you in advance for your assistance and suggestions!

Please confirm if able get 120fps by v4l2-ctl to make sure the USB bandwidth without problem.


Many thanks, Shane, for your interest in finding a solution.

When I execute the following command line:
ffmpeg -f v4l2 -framerate 120 -video_size 1280x800 -input_format mjpeg -i /dev/video0 -c:v rawvideo -pixel_format yuv420p output_video0_etAmarilla.avi

I am able to achieve 120 fps while saving the video. Therefore, I assume that USB bandwidth is not the issue.

I’ve shared my approach and findings above, and while it seems that USB bandwidth is not limiting our performance, I’m curious about any additional insights or alternative approaches: Are there optimizations within ffmpeg/ gst-launch-1.0 or the system settings that I might not be considering which could enhance performance further?

Well, then I would suspect it could be memory copy hurt the performance.
You may need to break down which element cause the performance drop.


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