<div dir="ltr"><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><span style="color:rgb(255,0,0)">Ross,</span></b></p><span style="font-family:calibri,arial,helvetica,sans-serif;font-size:16px;color:rgb(255,0,0)"><b></b></span><span style="color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"></span><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><span style="color:rgb(255,0,0)"><b>    Thank you very much for your response. I was able to get this to work with UDP multicast by  changing the video sink to BasicUDPSink in the transport stream test. VLC has no problem decoding the transport stream now. This actually is what we are interested in anyway since our customers use almost exclusively UDP multicast.</b></span></p><span style="font-family:calibri,arial,helvetica,sans-serif;font-size:16px;color:rgb(255,0,0)"><b></b></span><span style="color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"></span><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><br><span style="color:rgb(255,0,0)"></span></b></p><span style="font-family:calibri,arial,helvetica,sans-serif;font-size:16px;color:rgb(255,0,0)"><b></b></span><span style="color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"></span><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><span style="color:rgb(255,0,0)"><b>I have two questions that I would very much appreciate if you could answer.</b></span></p><span style="font-family:calibri,arial,helvetica,sans-serif;font-size:16px;color:rgb(255,0,0)"><b></b></span><span style="color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"></span><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><br><span style="color:rgb(255,0,0)"></span></b></p><span style="font-family:calibri,arial,helvetica,sans-serif;font-size:16px;color:rgb(255,0,0)"><b></b></span><span style="color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"></span><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><span style="color:rgb(255,0,0)">1. I have not been able to find the place in the code where the delay between packets is determined. Clearly packets have to be sent at a rate such that video frames are sent to prevent underflow and overflow at the decoder. To accomplish this the code must parse the stream to find the video frame rate, or determine the bit rate. I have not been able to find this in the code. Of course no </span><span style="color:rgb(255,0,0)">muxing/demuxing  done in the streamer</span><span style="color:rgb(255,0,0)">, and the stream is packed in "as is". But the timing of packet output must be determined from the stream. I have not been able to find the code that determines this timing, and how it gets the required information from the stream. If you could point out where this is done in the code it would be immensely helpful.</span></b></p><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><br></b></p><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><span style="color:rgb(255,0,0)">2. Just curious why vlc could not tell if it is a transport stream since the rtp header "payload type" should indicate this. What am I mssing?</span></b></p><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><br></b></p><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><span style="color:rgb(255,0,0)">Again, your help is very much appreciated.</span></b></p><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><span style="color:rgb(255,0,0)">thanks,</span></b></p><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><span style="color:rgb(255,0,0)">gordon shank (<a href="mailto:gordon@qoesystems.com" target="_blank">gordon@qoesystems.com</a>)</span></b></p><p style="margin-top:0px;margin-bottom:0px;color:rgb(0,0,0);font-family:calibri,arial,helvetica,sans-serif;font-size:16px"><b><br></b></p></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 7, 2017 at 12:45 PM, Ross Finlayson <span dir="ltr"><<a href="mailto:finlayson@live555.com" target="_blank">finlayson@live555.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> I have downloaded and built your system. I tried the "testMPEG2TransportStreamer" test program. I have a file named "test.mpg". This is a file with a 10 second transport stream compressed with h.264. This file can be played with vlc from the file. I can also stream it to a rtp, udp, multicast ip stream from vlc and it works fine.<br>
><br>
> When I run the test program mentioned above it does send rtp packets. However, vlc displays garbage. I have looked at the packets emitted with wireshark. Wireshark decodes them as transport stream packets but claims the video is scrambled, which of course is not the case.<br>
><br>
> I looked at the source code. From what I can tell the event loop continually calls functions that simply read the file and stuffs the bytes in the rtp packets without regard to the video format, compression type. It does not appear to parse the file data to get any of this information. I must be missing something.<br>
><br>
> My question is :<br>
>     Has this test program been tested, or am I doing something stupid?<br>
<br>
The “testMPEG2TransportStreamer” application is working properly (assuming that your Transport Stream file is named “test.ts”).  The RTP payload format for MPEG Transport Streams (as defined in RFC 2250) calls for (an integral number of) 188-byte Transport Stream ‘packets’ to be packed into each RTP packet.  When sent over RTP, Transport Stream data is not demultiplexed at all; it is sent ‘as is’.<br>
<br>
Your problem is that - when you are trying to play the incoming RTP stream using VLC - VLC is not recognizing the stream as being Transport-Stream-data-over-<wbr>RTP, because it is not being told this.<br>
<br>
The easiest way to fix this is to use the RTSP protocol to access the stream.  Uncomment the line<br>
        #define IMPLEMENT_RTSP_SERVER 1<br>
in “testMPEG2TransportStreamer.<wbr>cpp”, line 34, and recompile.  Then, when you run “testMPEG2TransportStreamer”, it will output a “rtsp://“ URL for the stream.  Enter this “rtsp://“ URL into VLC, and VLC should be able to play the stream OK.<br>
<br>
<br>
Note also that the “testMPEG2TransportStreamer” streams via IP multicast, which means that the stream will probably not go beyond a single LAN.  If, instead, you want to stream via IP unicast (one stream per client), then you can instead use the “LIVE555 Media Server”<br>
        <a href="http://www.live555.com/mediaServer" rel="noreferrer" target="_blank">http://www.live555.com/<wbr>mediaServer</a><br>
or else use the “testOnDemandRTSPServer” demo application.<br>
<br>
<br>
Ross Finlayson<br>
Live Networks, Inc.<br>
<a href="http://www.live555.com/" rel="noreferrer" target="_blank">http://www.live555.com/</a><br>
<br>
<br>
______________________________<wbr>_________________<br>
live-devel mailing list<br>
<a href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a><br>
<a href="http://lists.live555.com/mailman/listinfo/live-devel" rel="noreferrer" target="_blank">http://lists.live555.com/<wbr>mailman/listinfo/live-devel</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div><font color="#000000"><font face="trebuchet ms,sans-serif"><strong>Walter van Hooff</strong>  |  President  </font></font></div>
<div><font color="#000000" face="trebuchet ms,sans-serif">QoE Systems, Inc.  |<font color="#ff6600"> </font><font color="#000000"> </font></font><font color="#000000" face="trebuchet ms,sans-serif"><a href="http://www.qoesystems.com/" target="_blank">www.qoesystems.com</a>   |  </font><font color="#333300" face="trebuchet ms,sans-serif">650-314-0112  </font></div>
<div><font color="#000000"><span style="font-size:8pt"><strong> <span></span><span></span></strong></span></font></div></div>
</div>