Jetson Nano - Most efficient Gstreamer pipeline for 1920x1080 - 30fps mjpeg

Hi All,

I am capturing video from a camera and recording it into a file while also overlaying a time/date stamp.

I have it working well, but all four cores are sitting at ~20% and I need to add three more cameras (of much lower resolution).

Does anyone have any ideas on how to make this pipeline more efficient without dropping resolution or framerate?

v4l2src do-timestamp=true device=/dev/video0 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! nvv4l2decoder mjpeg=1 ! nvvidconv flip-method=2 ! clockoverlay halignment=left valignment=bottom text="Dashcam" shaded-background=true font-desc="Sans, 12" ! omxh264enc ! "video/x-h264, streamformat=(string)byte-stream" ! h264parse ! qtmux ! filesink location=video.mp4

Thanks for all the help!

The overhead looks to be from clockoverlay plugin. It requires CPU buffers so would need to copy NVMM buffer to CPU buffer. And then copy back to NVMM buffer for hardware encoding.

You may try to use nvivafilter and then call cairo APIs. Please refer to
Tx2-4g r32.3.1 nvivafilter performance - #16 by DaneLLL
This would save overhead of the memory copy.

1 Like

Thanks! I’ll look into it.