GStreamer: Aligning Frame Timing in RTP Video Stream: Need Help with Buffering Configuration


I am receiving an RTP video stream and rendering it. Here's an example of my pipeline:

udpsrc name=udpsrc_element uri=SOME_IP caps=application/x-rtp,media=video,encoding-name=H264,payload=33 ! rtpmp2tdepay ! tsdemux ! h264parse ! avdec_h264 ! tee name=t ! videoconvert ! video/x-raw, format=(string)BGR ! queue ! appsink name=appsink_element sync=false drop=true t. ! videoconvert ! d3d11videosink sync=false

In my case, I am receiving 30 frames per second, but the timing between frames varies from 200ms to 18ms. Specifically, one frame arrives with a delay (iframe), the next few pframes arrive faster than 33ms, and then everything levels out to 33ms, resulting in a consistent 30 frames per second. I need to align this timing through buffering and subsequent retrieval of frames from the buffer. How can I do this? The queue + videorate and rtpjitterbuffer did not help me (although I may not have configured them correctly).

Thank you for your assistance.

Welcome @dennis.tunaev to the NVIDIA developer forums.

I am not sure this is the correct forum to help you since from the command line alone it seems more like a generic gstreamer issue than NVIDIA video codec specific.

But to learn about gstreamer usage with our codecs you might want to check out our DeepStream SDK category or the various Jetson forums, where this topic is discussed quite regularly.