Hi,
I’m working on a GStreamer pipeline to transcode multiple streams gaplessly using the concat
element. The pipeline works great when all input media are local files. It also works with some network sources like HLS. However, I run into issues when one of the streams is a UDP source.
Specifically, when a UDP stream is added to the list, the pipeline’s output becomes choppy and discontinuous, and I receive discontinuity errors:
WARNING: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTSDemux:tsdemux1: CONTINUITY: Mismatch packet 5, stream 5 (pid 0x0041)
Additional debug info:
../gst/mpegtsdemux/tsdemux.c(2769): gst_ts_demux_queue_data (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTSDemux:tsdemux1
0:00:10.043224137 4148085 0x7151b0000ef0WARNING: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTSDemux:tsdemux1: CONTINUITY: Mismatch packet 13, stream 4 (pid 0x0041)
Additional debug info:
../gst/mpegtsdemux/tsdemux.c(2769): gst_ts_demux_queue_data (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTSDemux:tsdemux1
This is reproducible using test stream, e.g:
gst-launch-1.0 \
videotestsrc num-buffers=256 ! videoconvert ! x264enc tune=zerolatency !\
h264parse ! mpegtsmux name=mux !\
filesink location=/tmp/test.ts
For udp source I’m using:
tsplay -loop /tmp/test.ts 127.0.0.1:2222
And the pipeline with concat
looks like this:
gst-launch-1.0\
uridecodebin uri=file:///tmp/test.ts name=dec1 \
dec1. ! queue ! vid_concat. \
uridecodebin uri=udp://127.0.0.1:2222 ! decodebin name=dec2 \
dec2. ! queue ! vid_concat. \
concat name=vid_concat ! videoconvert ! autovideosink
Is it possible to use concat
element with UDP inputs? Any tips would be greatly appreciated! Thanks!