Video over udpsrc jerks, as file ok

I have a problem with mpeg-ts udp multicast streams.

At first I only had the problem on Android but now I was able to reproduce the problem on macOS as well.

When I play the file directly, everything works without any problems.

If I play the same file with tsplay as multicast, then I get problems.

This is how I play it:

tsplay capture.ts 234.5.6.8:30125

This is how it plays without problems:

gst-launch-1.0 uridecodebin uri=file:///Users/patrick/Video/capture.ts ! videoconvert ! autovideosink

VLC playes the stream fine.
playbin works also

gst-launch-1.0 playbin uri=udp://234.5.6.8:30125

This is how it jerks:

gst-launch-1.0 uridecodebin uri=udp://234.5.6.8:30125 ! videoconvert ! autovideosink

same here

gst-launch-1.0 udpsrc uri=udp://234.5.6.8:30125 ! decodebin ! autovideosink

or

gst-launch-1.0 uridecodebin uri=udp://234.5.6.8:30125 ! queue ! videoconvert ! queue ! autovideosink

Have I made a mistake in my thinking?

0:00:00.110927833 85298    0x120027ea0 FIXME              glcontext gstglcontext.c:1956:gst_gl_context_request_config:<glcontextcocoa1> does not support requesting a config
0:00:00.110987166 85298    0x120027ea0 WARN               glcontext gstglcontext.c:1299:gst_gl_context_create_thread:<glcontextcocoa1> failed to request config gst-gl-context-config, platform=(GstGLPlatform)GST_GL_PLATFORM_CGL, alpha-size=(int)8, depth-size=(int)0, stencil-size=(int)0, red-size=(int)8, green-size=(int)8, blue-size=(int)8, samples=(int)0, sample-buffers=(int)0;
0:00:00.161033208 85298    0x11f7126a0 ERROR        glcaopengllayer gstglcaopengllayer.m:161:-[GstGLCAOpenGLLayer copyCGLContextForPixelFormat:]: failed to retrieve GStreamer GL context in CAOpenGLLayer
0:00:00.230122291 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 6 SEI, Size: 9 will be dropped
0:00:00.230148333 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 6 SEI, Size: 13 will be dropped
0:00:00.230157750 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 35 will be dropped
0:00:00.271442791 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 12 Filler Data, Size: 109 will be dropped
0:00:00.271466083 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 6 SEI, Size: 9 will be dropped
0:00:00.271474250 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 6 SEI, Size: 13 will be dropped
0:00:00.271499375 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 21854 will be dropped
0:00:00.271508291 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 6 SEI, Size: 105 will be dropped
...
0:00:00.439867416 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 34 will be dropped
No accelerated IMDCT transform found
0:00:00.494779250 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 12 Filler Data, Size: 110 will be dropped
...
0:00:00.968860750 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 1 Slice, Size: 35 will be dropped
0:00:01.059054708 85298    0x12002b9e0 WARN               h264parse gsth264parse.c:1531:gst_h264_parse_handle_frame:<h264parse0> broken/invalid nal Type: 12 Filler Data, Size: 109 will be dropped
0:00:01.124911958 85298    0x12002b9e0 FIXME           videodecoder gstvideodecoder.c:1193:gst_video_decoder_drain_out:<vtdechw0> Sub-class should implement drain()
0:00:01.251123416 85298    0x12002b9e0 FIXME           videodecoder gstvideodecoder.c:1193:gst_video_decoder_drain_out:<vtdechw0> Sub-class should implement drain()
0:00:04.449497541 85298    0x12002b980 WARN        mpegtspacketizer mpegtspacketizer.c:1481:calculate_skew: delta - skew: +0:00:02.817774805 too big, reset skew
0:00:07.579710250 85298    0x12002b980 WARN        mpegtspacketizer mpegtspacketizer.c:1481:calculate_skew: delta - skew: +0:00:02.781096510 too big, reset skew
0:00:08.648418708 85298    0x118905400 WARN             glimagesink gstglimagesink.c:2490:gst_glimage_sink_on_close:<sink> Output window was closed
0:00:10.768409500 85298    0x12002b8c0 WARN             glimagesink gstglimagesink.c:1910:gst_glimage_sink_show_frame:<sink> error: Quit requested
ERROR: from element /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink: Quit requested
Additional debug info:
../ext/gl/gstglimagesink.c(1910): gst_glimage_sink_show_frame (): /GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstGLImageSinkBin:autovideosink0-actual-sink-glimage/GstGLImageSink:sink
0:00:10.769375875 85298    0x12002b980 WARN                 basesrc gstbasesrc.c:3177:gst_base_src_loop:<source> error: Internal data stream error.
0:00:10.769435666 85298    0x12002b980 WARN                 basesrc gstbasesrc.c:3177:gst_base_src_loop:<source> error: streaming stopped, reason error (-5)
ERROR: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstUDPSrc:source: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3177): gst_base_src_loop (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstUDPSrc:source:
streaming stopped, reason error (-5)
2 Likes