<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">sorry, I don't know how to report a bug in a proper way, but I saw the only one mailing list can communicate with authors. here is the thing.</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">From my client PLAY request like this:</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><pre></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(68,68,68)">PLAY rtsp://<a href="http://192.168.1.201:556/20141208-064059100-Talon0001-192.168.1.201-Cam0.avi">192.168.1.201:556/20141208-064059100-Talon0001-192.168.1.201-Cam0.avi</a> RTSP/1.0</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(68,68,68)">Authorization: Digest username="admin", realm="LIVE555 Streaming Media", nonce="fc0667548cd2dff1882b8a9550854fad", uri="/rtsp://<a href="http://192.168.1.201:556/20141208-064059100-Talon0001-192.168.1.201-Cam0.avi">192.168.1.201:556/20141208-064059100-Talon0001-192.168.1.201-Cam0.avi</a>", response="b203600cffa9ec487011edc4a92b1ce5"</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(68,68,68)">CSeq: 6</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(68,68,68)">User-Agent: ORCI RTSP Client 1.0</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(68,68,68)">Rate-Control: yes</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(68,68,68)">Range: clock=20141208T064100.000Z-</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(68,68,68)">Session: 81A6879B</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"></pre></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">I met the problem that is *Range* field, my client didn't fill end time, which means playing from 20141208T064100.000Z to end of file.</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">This is implementing in file: RTSPCommon.cpp line: 248 code: </div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><pre></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">  } else if (sscanf(paramStr, "clock = %n", &numCharsMatched3) == 0 && numCharsMatched3 > 0) {<br></div><div class="gmail_default" style><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    rangeStart = rangeEnd = 0.0;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace"><br></font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    char const* utcTimes = &paramStr[numCharsMatched3];</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    size_t len = strlen(utcTimes) + 1;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    char* as = new char[len];</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    char* ae = new char[len];</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    int sscanfResult = sscanf(utcTimes, "%[^-]-%s", as, ae); /*********************line248*********************************/</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    if (sscanfResult == 2) {</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">      absStartTime = as;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">      absEndTime = ae;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    } else if (sscanfResult == 1) {</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">      absStartTime = as;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">      delete[] ae;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    } else {</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">      delete[] as; delete[] ae;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">      return False;</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">    }</font></div><div class="gmail_default" style><font color="#444444" face="courier new, monospace">  } else if (sscanf(paramStr, "smtpe = %n", &numCharsMatched4) == 0 && numCharsMatched4 > 0) {</font></div></div><div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">​</pre>​</div><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">If the range like the above that I'v offered, the sscanf(utcTimes, "%[^-]-%s", as, ae) will have a problem.</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">Another thing:</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">file: RTSPServer.cpp line: 2002 code:</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><pre></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><div class="gmail_default">  for (i = 0; i < fNumStreamStates; ++i) {</div><div class="gmail_default">    if (subsession == NULL /* means: aggregated operation */ || fNumStreamStates == 1) {</div><div class="gmail_default">      if (fStreamStates[i].subsession != NULL) {</div><div class="gmail_default"><span class="" style="white-space:pre">   </span>if (sawScaleHeader) {</div><div class="gmail_default"><span class="" style="white-space:pre">      </span>  fStreamStates[i].subsession->setStreamScale(fOurSessionId, fStreamStates[i].streamToken, scale);</div><div class="gmail_default"><span class="" style="white-space:pre">     </span>}</div><div class="gmail_default"><span class="" style="white-space:pre">  </span>if (absStart != NULL) {  /******************line 2002***************************************************/</div><div class="gmail_default"><span class="" style="white-space:pre"> </span>  // Special case handling for seeking by 'absolute' time:</div><div class="gmail_default"><span class="" style="white-space:pre">        </span></div><div class="gmail_default"><span class="" style="white-space:pre">   </span>  fStreamStates[i].subsession->seekStream(fOurSessionId, fStreamStates[i].streamToken, absStart, absEnd);</div><div class="gmail_default"><span class="" style="white-space:pre">      </span>} else {</div><div class="gmail_default"><span class="" style="white-space:pre">   </span>  // Seeking by relative (NPT) time:</div><div class="gmail_default"><span class="" style="white-space:pre">      </span>  </div><div class="gmail_default"><span class="" style="white-space:pre">        </span>  u_int64_t numBytes;</div><div class="gmail_default"><span class="" style="white-space:pre">     </span>  if (!sawRangeHeader || startTimeIsNow) {</div><div class="gmail_default"><span class="" style="white-space:pre">        </span>    // We're resuming streaming without seeking, so we just do a 'null' seek</div><div class="gmail_default"><span class="" style="white-space:pre"> </span>    // (to get our NPT, and to specify when to end streaming):</div><div class="gmail_default"><span class="" style="white-space:pre">   </span>    fStreamStates[i].subsession->nullSeekStream(fOurSessionId, fStreamStates[i].streamToken,</div><div class="gmail_default"><span class="" style="white-space:pre">                                                  </span>rangeEnd, numBytes);</div><div class="gmail_default"><span class="" style="white-space:pre">       </span>  } else {</div><div class="gmail_default"><span class="" style="white-space:pre">        </span>    // We do a real 'seek':</div><div class="gmail_default"><span class="" style="white-space:pre">      </span>    double streamDuration = 0.0; // by default; means: stream until the end of the media</div><div class="gmail_default"><span class="" style="white-space:pre"> </span>    if (rangeEnd > 0.0 && (rangeEnd+0.001) < duration) {</div><div class="gmail_default"><span class="" style="white-space:pre">   </span>      // the 0.001 is because we limited the values to 3 decimal places</div><div class="gmail_default"><span class="" style="white-space:pre"> </span>      // We want the stream to end early.  Set the duration we want:</div><div class="gmail_default"><span class="" style="white-space:pre">   </span>      streamDuration = rangeEnd - rangeStart;</div><div class="gmail_default"><span class="" style="white-space:pre">   </span>      if (streamDuration < 0.0) streamDuration = -streamDuration;</div><div class="gmail_default"><span class="" style="white-space:pre">    </span>          // should happen only if scale < 0.0</div><div class="gmail_default"><span class="" style="white-space:pre">     </span>    }</div><div class="gmail_default"><span class="" style="white-space:pre">    </span>    fStreamStates[i].subsession->seekStream(fOurSessionId, fStreamStates[i].streamToken,</div><div class="gmail_default"><span class="" style="white-space:pre">                                              </span>    rangeStart, streamDuration, numBytes);</div><div class="gmail_default"><span class="" style="white-space:pre">       </span>  }</div><div class="gmail_default"><span class="" style="white-space:pre">       </span>}</div></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"></pre></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">That if condition should have included  NULL != absEnd.</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">Then, my client works well with mediaServer, Please see the attachment that I modified two files, if the modifying inappropriate, I wish someone would tell me.</div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;font-size:small;color:rgb(68,68,68)">Thank you.</div><div><div class="gmail_signature"><div dir="ltr"><a href="http://about.me/kenchowcn" style="margin:0px;padding:0px;border:0px;outline:0px;font-size:14px;font-family:proxima-nova-1,proxima-nova-2,Tahoma,Helvetica,Verdana,sans-serif;vertical-align:baseline;color:rgb(58,169,233);text-decoration:none;line-height:18.2000007629395px" target="_blank"></a><a href="http://about.me/kenchowcn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;color:rgb(58,169,233);text-decoration:none" target="_blank"><table border="0" cellpadding="0" cellspacing="0" style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;border-spacing:0px"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline"><tr style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline"><td style="padding:0px;border:0px;outline:0px;font-style:inherit;font-size:0px;font-family:inherit;vertical-align:baseline;height:30px"> </td></tr><tr style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline"><td align="left" valign="top" style="padding:0px;border:0px;outline:0px;font-style:inherit;font-family:inherit;vertical-align:top;line-height:1"><div style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:bold;font-style:inherit;font-size:18px;font-family:proxima-nova-1,Proxima-Nova,Helvetica,Arial,sans-serif;vertical-align:baseline;line-height:1;color:rgb(51,51,51)">Ken Chow</div><div style="margin:3px 0px 0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-size:12px;font-family:proxima-nova-1,Proxima-Nova,Helvetica,Arial,sans-serif;vertical-align:baseline;color:rgb(43,130,173)">about.me/kenchowcn</div></td></tr><tr style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline"><td align="left" valign="top" style="padding:8px 0px 0px;border:0px;outline:0px;font-style:inherit;font-family:inherit;vertical-align:top;line-height:1"><div style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline;text-align:right;height:4px;background-color:rgb(197,208,224)"><img src="http://d13pix9kaak6wt.cloudfront.net/signature/colorbar.png" alt="Ken Chow on about.me" width="88" height="4" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; float: right; display: block;"></div></td></tr><tr style="margin:0px;padding:0px;border:0px;outline:0px;font-weight:inherit;font-style:inherit;font-family:inherit;vertical-align:baseline"><td style="padding:0px;border:0px;outline:0px;font-style:inherit;font-size:0px;font-family:inherit;vertical-align:baseline;height:20px"> </td></tr></tbody></table></a></div></div></div>
</div>