Multi Camera Synchronization on Jetson Xavier

Hello. I am working with a Jetson Xavier and multiple cameras. I created a test pipeline with only two cameras (no inference added for the moment). Pipeline goes like:

v4l2src -> caps_f -> nvvidconv -> caps_f -|					            |- queue -> nvv4l2h264enc -> filesink
						  				 |-> streammux -> streamdemux ->| 
v4l2src -> caps_f -> nvvidconv -> caps_f -|				                |- queue -> nvv4l2h264enc -> filesink

Pipeline works fine but I have some problem with timestamps. I would like to have very synchronized video streams from both cameras. I would like to be able to match two frames from both cameras using timestamps.

Thus, I added a probe into each v4l2src src and I compared the timestamps values inside GstBuffer(buffer’s offset, pts and dts) for same ‘frames’ (frames with same offset value). I got that all timestamp differences between frames were around 79ms between cameras…

I would like to know:

  • Do I have to do something special to have synchronized camera? I have read that I can add ‘Hardware Synchronization - PWM Trigger Mode’ between cameras. But should I do something else to force stream synchronization? (adding threads on v4l2 or something)
  • I guess offset value does not mean same frame at a time?.. How can I compare timestamp of two frames that were taken at same moment?


Edit: Adding graph of pipeline:

Suppose need HW sync for this design otherwise I don’t think there’s a way to syn up it.

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