<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 6, 2015 at 5:23 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:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Thanks for the quick response.  I
have upgraded both the client and server to the May 3<sup>rd</sup> 2015 edition
and the result appears to be the same. 
On the receiving side I am still getting packets which appear to contain
data (or random garbage), and the head == tail, so the frame size is zero.  VLC still does the switching to TCP
thing.  I suspect I am doing something
wrong in sending my frames, not sure what. 
And if so, why would it work over TCP?</span></p><div><br></div></div></div></div></div></blockquote><div><br></div>If the problem were with the data that you were streaming, then it’s unlikely that streaming would work over TCP, but not UDP.  But to be sure, I suggest first running the (unmodified) “LIVE555 Media Server” application <<a href="http://www.live555.com/mediaServer/" target="_blank">http://www.live555.com/mediaServer/</a>>, to test streaming from a file.  I suspect, though, that you’ll see the same result: streaming RTP/RTCP-over-TCP will work, but RTP/RTCP-over-UDP won’t.</div><div><br></div><div>In my experience, problems with receiving RTP/RTCP-over-UDP are almost always caused by the presence of a firewall - somewhere between the server and client - that’s blocking UDP packets.</div></div></blockquote><div><br></div><div>Thanks for suggesting the LIVE555 Media Server.  Using the -t command, I used openRTSP to capture a .264 file from my RTSP server instance, and then I serve it using live555MediaServer.  Now openRTSP can stream it without -t and without any issues (see output below).  My gut is telling me my code is doing something wrong in the , and this seems to confirm it.<br></div><div><br></div><div>Having ruled out firewall and UDP transmission issues, what else could cause RTP-over-UDP to fail when RTP-over-TCP works fine?  Or if nothing comes to mind, what can I look at to understand why your stream works and mine sends your code a zillion empty UDP packets (when wireshark shows them full of data)?</div><div><br></div><div>Here is how I am sending the encoded frames which I get from libavcodec to the DeviceSource (in case this rings any alarm bells):</div><div><br></div><div><div>void H264DeviceSource::populateEncodedImage(pEncodedFrameAndMetadata frameAndMetadata)</div><div>{</div><div>    boost::shared_ptr<std::vector<unsigned char> > imgbuf = frameAndMetadata->encodedFrame;</div><div><br></div><div>    if (imgbuf.get()==NULL || imgbuf->empty()){</div><div>        Log::e( "H264DeviceSource: encoded buffer is NULL or empty" );</div><div>        return;</div><div>    }</div><div><br></div><div>    if( (int)imgbuf->size() > _internal_buffer_size) {</div><div>        Log::e( "H264DeviceSource: Image too large for encoding buffer" );</div><div>        return;</div><div>    }</div><div><br></div><div>    int encodedFrameSize = (int)imgbuf->size();</div><div><br></div><div>    int offset = 0;</div><div><br></div><div>    if (encodedFrameSize > 4)</div><div>    {</div><div>        if ((*imgbuf)[0] == 0 && (*imgbuf)[1] == 0 && (*imgbuf)[2] == 0 && (*imgbuf)[3] == 1)</div><div>        {</div><div>            // remove leading 0x00 0x00 0x00 0x01</div><div>            // our framer doesn't accept it.</div><div>            offset = 4;</div><div><br></div><div>        }</div><div><br></div><div>    }</div><div><br></div><div><br></div><div>    int fs = 0;</div><div>    // copy the image:</div><div>    for (int i=0; i< encodedFrameSize - offset; i++) {</div><div>        if (i >= (int)fMaxSize-1){</div><div>            Log::e("RTSP: frame truncated");</div><div>            break;</div><div>        }</div><div>        fTo[i] = (*imgbuf)[i + offset];</div><div>        fs++;</div><div>    }</div><div><br></div><div><br></div><div>    fFrameSize = fs;</div><div><br></div><div>}</div></div><div><br></div><div>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></div><div><br></div><div>Here is the streaming output from using live555MediaServer as the rtsp server instead of my code:</div><div><br></div><div><br></div><div><div>C:\temp>openRTSP -d 60 -w 640 -h 480 -f 30 -Q -n -l -4 rtsp://<a href="http://127.0.0.1/test.264">127.0.0.1/test.264</a></div><div> > test.mp4</div><div>Opening connection to 127.0.0.1, port 554...</div><div>...remote connection opened</div><div>Sending request: OPTIONS rtsp://<a href="http://127.0.0.1/test.264">127.0.0.1/test.264</a> RTSP/1.0</div><div>CSeq: 2</div><div>User-Agent: openRTSP (LIVE555 Streaming Media v2015.05.03)</div><div><br></div><div><br></div><div>Received 152 new bytes of response data.</div><div>Received a complete OPTIONS response:</div><div>RTSP/1.0 200 OK</div><div>CSeq: 2</div><div>Date: Thu, May 07 2015 15:27:35 GMT</div><div>Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARA</div><div>METER</div><div><br></div><div><br></div><div>Sending request: DESCRIBE rtsp://<a href="http://127.0.0.1/test.264">127.0.0.1/test.264</a> RTSP/1.0</div><div>CSeq: 3</div><div>User-Agent: openRTSP (LIVE555 Streaming Media v2015.05.03)</div><div>Accept: application/sdp</div><div><br></div><div><br></div><div>Received 678 new bytes of response data.</div><div>Received a complete DESCRIBE response:</div><div>RTSP/1.0 200 OK</div><div>CSeq: 3</div><div>Date: Thu, May 07 2015 15:27:35 GMT</div><div>Content-Base: rtsp://<a href="http://127.0.0.1/test.264/">127.0.0.1/test.264/</a></div><div>Content-Type: application/sdp</div><div>Content-Length: 519</div><div><br></div><div>v=0</div><div>o=- 1431012455409337 1 IN IP4 169.254.222.174</div><div>s=H.264 Video, streamed by the LIVE555 Media Server</div><div>i=test.264</div><div>t=0 0</div><div>a=tool:LIVE555 Streaming Media v2015.04.01</div><div>a=type:broadcast</div><div>a=control:*</div><div>a=range:npt=0-</div><div>a=x-qt-text-nam:H.264 Video, streamed by the LIVE555 Media Server</div><div>a=x-qt-text-inf:test.264</div><div>m=video 0 RTP/AVP 96</div><div>c=IN IP4 0.0.0.0</div><div>b=AS:500</div><div>a=rtpmap:96 H264/90000</div><div>a=fmtp:96 packetization-mode=1;profile-level-id=4D401E;sprop-parameter-sets=Z01A</div><div>HvIBQHtCAAADAAIAAAMAeB4sWiQ=,aOvvIA==</div><div>a=control:track1</div><div><br></div><div>Opened URL "rtsp://<a href="http://127.0.0.1/test.264">127.0.0.1/test.264</a>", returning a SDP description:</div><div>v=0</div><div>o=- 1431012455409337 1 IN IP4 169.254.222.174</div><div>s=H.264 Video, streamed by the LIVE555 Media Server</div><div>i=test.264</div><div>t=0 0</div><div>a=tool:LIVE555 Streaming Media v2015.04.01</div><div>a=type:broadcast</div><div>a=control:*</div><div>a=range:npt=0-</div><div>a=x-qt-text-nam:H.264 Video, streamed by the LIVE555 Media Server</div><div>a=x-qt-text-inf:test.264</div><div>m=video 0 RTP/AVP 96</div><div>c=IN IP4 0.0.0.0</div><div>b=AS:500</div><div>a=rtpmap:96 H264/90000</div><div>a=fmtp:96 packetization-mode=1;profile-level-id=4D401E;sprop-parameter-sets=Z01A</div><div>HvIBQHtCAAADAAIAAAMAeB4sWiQ=,aOvvIA==</div><div>a=control:track1</div><div><br></div><div>Created receiver for "video/H264" subsession (client ports 60770-60771)</div><div>Sending request: SETUP rtsp://<a href="http://127.0.0.1/test.264/track1">127.0.0.1/test.264/track1</a> RTSP/1.0</div><div>CSeq: 4</div><div>User-Agent: openRTSP (LIVE555 Streaming Media v2015.05.03)</div><div>Transport: RTP/AVP;unicast;client_port=60770-60771</div><div><br></div><div><br></div><div>Received 208 new bytes of response data.</div><div>Received a complete SETUP response:</div><div>RTSP/1.0 200 OK</div><div>CSeq: 4</div><div>Date: Thu, May 07 2015 15:27:35 GMT</div><div>Transport: RTP/AVP;unicast;destination=127.0.0.1;source=127.0.0.1;client_port=60</div><div>770-60771;server_port=6972-6973</div><div>Session: 9AFA7842;timeout=65</div><div><br></div><div><br></div><div>Setup "video/H264" subsession (client ports 60770-60771)</div><div>Outputting to the file: "stdout"</div><div>Sending request: PLAY rtsp://<a href="http://127.0.0.1/test.264/">127.0.0.1/test.264/</a> RTSP/1.0</div><div>CSeq: 5</div><div>User-Agent: openRTSP (LIVE555 Streaming Media v2015.05.03)</div><div>Session: 9AFA7842</div><div>Range: npt=0.000-60.000</div><div><br></div><div><br></div><div>Received 179 new bytes of response data.</div><div>Received a complete PLAY response:</div><div>RTSP/1.0 200 OK</div><div>CSeq: 5</div><div>Date: Thu, May 07 2015 15:27:35 GMT</div><div>Range: npt=0.000-</div><div>Session: 9AFA7842</div><div>RTP-Info: url=rtsp://<a href="http://127.0.0.1/test.264/track1;seq=49597;rtptime=783804364">127.0.0.1/test.264/track1;seq=49597;rtptime=783804364</a></div><div><br></div><div><br></div><div>Started playing session</div><div>Receiving streamed data (for up to 60.000000 seconds)...</div><div>Data packets have begun arriving [1431012455648]</div></div><div><br></div><div><br></div><div>Thanks again for your help.</div><div><br></div><div>Dave</div><div> <br></div></div><div class="gmail_signature"><div dir="ltr"></div></div>
</div></div>