(I'm asking for help, sharing how I fixed this tricky problem for limited embedded devices, looking to find a more proffesional way to implement it)
After trying different approachs, the solution for me was to speed up the buffer every time you read video data, run a for doing image=video.read() for X images, and return the last return image. This for is executed very quickly and the image buffer gets images at much higher fps, so the 3 seconds delay is completely fixed...
def delaykiller():
for k in range (0,30):
ret, image=Video.read()
#Use a nvarguscamerascr/videoconvert/appsink typical pipeline
#Then apply with cv2.GSTREAMER
return image
image=delaykiller()
This works great for a Jetson Nano with low RAM capacity. If you intend to do this method in a near overrided Jetson as a background activity just like this OpenCV VideoCapture lag due to the capture buffer @himty answer, the Jetson will crash. Just do a "video-scrolling" for just before getting video image every time you intend to take the frame, and the result should be really good.