<div dir="ltr"><div><div><div><div><div><div>Hi all,<br><br></div>I want to serve mpeg-ts streams by http mainly for vlc clients in python. I use gstreamer multifdsink for this. The main script for serving streams is  <br><br>        if self.sink_type == 'multifdsink':   <br>            pipe = os.pipe()<br>            client_id= pipe[1]<br>            self.sink.emit("add", client_id)<br>            new = os.fdopen(pipe[0],'r',0) <br>            try:<br>                while True:<br>                        data = new.read(1024)<br>                        wfile.write(data)<br>                        wfile.flush()<br>            <br>            except:<br>                print 'Except'<br>                self.sink.emit('remove',client_id)<br>                new.close()<br>                os.close(pipe[0])<br>                os.close(pipe[1])<br><br></div>So wfile should receive mpeg-ts stream. But when I use gstreamer pipeline<br><br>rtspsrc name=source latency=100  ! queue ! rtph264depay ! h264parse ! mpegtsmux name=mux ! multifdsink  name=sink<br><br></div>But on the clients I get a lot of errors and no video.<br><br>[00007f1f34c04468] ts demux error: libdvbpsi (PSI decoder): TS discontinuity (received 15, expected 14) for PID 0<br>[00007f1f34c04468] ts demux error: libdvbpsi (PSI decoder): TS discontinuity (received 15, expected 14) for PID 32<br>[00007f1f34c04468] ts demux error: libdvbpsi (PSI decoder): TS discontinuity (received 13, expected 12) for PID 0<br>[00007f1f34c04468] ts demux error: libdvbpsi (PSI decoder): TS discontinuity (received 13, expected 12) for PID 32<br>[00007f1f34c04468] ts demux error: libdvbpsi (PSI decoder): TS discontinuity (received 11, expected 10) for PID 0<br>[00007f1f34c04468] ts demux error: libdvbpsi (PSI decoder): TS discontinuity (received 11, expected 10) for PID 32<br><br></div>I've inspected the mpegtsmux element and found out that alignment property can be the source of my issue. So for pipeline <br><br>rtspsrc name=source latency=100  ! queue ! rtph264depay ! h264parse ! mpegtsmux name=mux alignment=1024 ! multifdsink  name=sink<br><br></div>I can get video for the first client. I considered it a victory... Until I've added a second player. Additional players just fail to show any video without errors. They are receiving the data aright, but fail to output video. With gstreamer client I get an eternal PREROLL.<br><br></div>It seams to be a time stamp issue and broken data stream due to read/write dynamics on pipe. I was very frustrated until I tries mpegpsmux. Everything is working for pipeline<br><br>rtspsrc name=source latency=100  ! queue ! rtph264depay ! h264parse ! mpegpsmux name=mux ! multifdsink  name=sink<br><div><div><br></div><div>But the timescale is all wrong and I get long time from initial connection to the first frame (waiting for the key frame. multifdsink sync-method=1 does not fix the issue). I was wondering if I could either fix mpegtsmux or the multifdsink dynamics for my app to work correctly.<br><br></div><div>Thanks in advance!<br></div><div><div><div><div><div><br></div></div></div></div></div></div></div>