<div dir="ltr">Yes, my apologies for being unclear. I can see now how what I said might be difficult to understand. I will try to do better and be a bit more pedantic. <br><br>I'm on Windows and I've built a RTSP server that connects to a camera and serves both audio and video using the Live555 server libraries. I used some scripts to build the libraries for Windows and am using them from Visual Studio 2015. From the highest level, this is how I have things starting up from within the main() of the application server program (and so when I say "spin up", I mean this application gets executed): <br><br><div>        TaskScheduler* taskSchedular = BasicTaskScheduler::createNew();</div><div>        BasicUsageEnvironment* usageEnvironment = BasicUsageEnvironment::createNew(*taskSchedular);</div><div>        RTSPServer* rtspServer = RTSPServer::createNew(*usageEnvironment, StreamingOptions::PortNumber, NULL);</div><div>        if (rtspServer == NULL)</div><div>        {</div><div>            *usageEnvironment << "Failed to create rtsp server ::" << usageEnvironment->getResultMsg() << "\n";</div><div>            exit(1);</div><div>        }</div><div><br></div><div>        ServerMediaSession* sms = ServerMediaSession::createNew(*usageEnvironment,</div><div>            StreamingOptions::StreamName.c_str(), StreamingOptions::StreamName.c_str(), "Live H264 Stream");</div><div><br></div><div>        H264LiveServerMediaSession *liveSubSession = H264LiveServerMediaSession::createNew(*usageEnvironment, true);</div><div>        sms->addSubsession(liveSubSession);</div><div>        if (StreamingOptions::DoAudio)</div><div>        {</div><div>            WindowsAudioMediaSession* audioSession = WindowsAudioMediaSession::createNew(*usageEnvironment, true);</div><div>            sms->addSubsession(audioSession);</div><div>        }</div><div><br></div><div>So as you can see, a fairly straightforward implementation. And it has worked very well up until recently. <br><br>We have clients that are connecting to this server using Android phones; more specifically Android 5.0 Lollipop phones. They connect using the standard "MediaPlayer" control that is part of the Android SDK. So, a totally "stock" player. There are no proxies, they simply make a request for rtsp://<address>:<port>/<streamName>. Again, pretty straightforward. <br><br>However, there is something peculiar about these particular Android phones in that if another client is already connected to the above streaming server and streaming content (say I connect to it via VLC), then NO PHONE who connects after is able to stream any content (audio or video). Other types of players (VLC, etc.) are able to connect and stream just fine; the phones, however, cannot. The phone indeed connects as I'm able to see RTP traffic streaming to the phone from the server; yet nothing plays (in fact, the entire RTCP/RTSP handshake looks normal).  <br><br>Under normal circumstances we'd think this was totally an issue with the player (and it may still be), however IF the phone is the ONLY client to connect, then it streams content just fine. IF I set the server to NOT reuse sessions above (in other words, if I modify the above code to have FALSE as part of it second parameter of H264LiveServerMediaSession::createNew(*usageEnvironment, FALSE)), then everything streams fine, even if other clients are already connected. So setting the reuse connections parameter to false does, indeed, "fix" the problem (however, I've read that isn't necessarily a great solution as it can cause performance issues). <br><br>So to be more precise: <br><br>Works: <br><br>1) Above server launches, <br>2) Phone connects as the ONLY client, <br>3) Phone will stream content, <br><br>OR<br><br>1) Above server launches, <br>2) H264LiveServerMediaSession::createNew(*usageEnvironment, false); // false, not true<br>3) Phone can connect and stream just fine regardless of other concurrent connections<br><br>Doesn't work: <br><br>1) Above server launches, <br>2) H264LiveServerMediaSession::createNew(*usageEnvironment, true)<br>3) Connect to the server using VLC or any of a dozen other players we've tested, <br>4) Phone will connect to server, <br>5) Phone won't stream the content. <br><br>Digging into the details, the only peculiarity I have been able to find is that, as I mentioned previously, when reusing the existing connections, the streaming server appears to be returning <span style="line-height:1.5">Sender's Packet count of >0 to a newly connected client IF a separate client has already been connected and streaming (this as part of the first RTCP Sender Report). If the phone is the only client to connect, the Sender's Packet count = 0.This is the ONLY major difference I'm able to note when watching a phone connecting and attempting to stream as the only client, or as a </span>subsequent<span style="line-height:1.5"> client. And so the only theory I have is that these players are somehow either A) not abiding by the rules and getting confused because the Sender's packet count > 0 or, and this seems far less likely, there's a bug in the underlying server code that is somehow serving a Sender's Packet count > 0 for subsequent clients that connect IF the reuse existing connection flag (above) is set to False. <br><br>Again, if setting the second parameter here to false: </span>H264LiveServerMediaSession::createNew(*usageEnvironment, FALSE) didn't "fix" the issue, or if the Android player was never able to stream at all, I'd just assume it was completely an issue with the player. But since these things do alter the behavior of the client, I'm wondering if it's maybe an incompatibility and, if so, I'm wondering if there are any thoughts on what I can do to better support these clients. <br><span style="line-height:1.5"><br>Thanks again for your time. <br><br><br></span></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Apr 19, 2016 at 6:18 PM Ross Finlayson <<a href="mailto:finlayson@live555.com">finlayson@live555.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry, but I’m having a hard time understanding your question, and, in particular, how it relates to the “LIVE555 Streaming Media” software.  Could you please explain *specifically* what your system looks like (i.e., server(s), client(s), proxy/proxies if any, etc.), and how, *specifically*, the “LIVE555 Streaming Media” software is involved?<br>
<br>
Please understand that “LIVE555” isn’t a single thing, and phrases like “spin up LIVE555” are completely meaningless.  Our software consists of RTSP/RTP/RTCP client software, RTSP/RTP/RTCP server software, RTSP proxy software, various demo applications (“testProgs”), a proxy server application, and a prebuilt media server application, etc.  In order to be understood, you need to explain specifically which parts of all of this software you are using, and how.<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>
_______________________________________________<br>
live-devel mailing list<br>
<a href="mailto:live-devel@lists.live555.com" target="_blank">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/mailman/listinfo/live-devel</a><br>
</blockquote></div>