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)