AW: RTP video stream corruption

Thornton, Keith keith.thornton at zeiss.com
Thu Jan 11 07:17:54 UTC 2018


Hi, Does the h264 source contain b-frames? It could be a time-stamping issue between DTS and PTS if b frames are involved

Von: gstreamer-devel [mailto:gstreamer-devel-bounces at lists.freedesktop.org] Im Auftrag von Joel Keller
Gesendet: Mittwoch, 10. Januar 2018 20:28
An: gstreamer-devel at lists.freedesktop.org
Betreff: RTP video stream corruption

Hello,

I have a pipeline that looks like this:

rtspsrc ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! video/x-raw,format=RGBA ! appsink

which I use to receive a 4k video stream from a camera on the LAN (or to test - a stream from localhost).  Occasionally, I see that the video stream gets 'corrupted' - moving objects get smeared & then sometimes jump back/forth in time momentarily.  It looks like perhaps some I-frame information gets dropped & the h264 decoder just does the best it can until the next I-frame.  This would be okay for something like a video-conferencing solution, but my application takes decoded frames & does object recognition & temporal tracking, and the smearing & jumping really messes with this downstream processing - it would be much better to have no frames at all than these 'corrupt' ones.

I have tried all the properties & knobs that I know of w.r.t rtspsrc ( udp-buffer-size, latency, drop-on-latency, buffer-mode, retransmissions), and have tried adding queues in the pipeline, etc..  No matter what I do, this occasionally happens when there is any other significant usage of cpu (for example a multi-job compilation).  I do know that I have enough CPU time 'on-average' to keep up with the stream rate, so it seems like with correct buffering in the right places, I shouldn't have to drop any information.

I have three questions:

1)  Is there some way to configure my gstreamer pipeline so that I don't drop this information (I suspect it is the rtsp jitterbuffer dropping, but I'm not sure), and therefore don't have any problem.

2)  If I can't eliminate this via #1, can I somehow configure different information to be dropped (essentially p-frames, but not i-frames).

3) If not #1 or #2,  is there a way I can detect downstream from the video-decoder that the frame is 'corrupt' - I think the decoder should know when something is missing from the h264 stream, right?


Thanks in advance to anyone who can help shed some light on this issue.


-Joel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20180111/d8e4e31c/attachment-0001.html>


More information about the gstreamer-devel mailing list