diff --git a/src/Rtsp/RtspSession.cpp b/src/Rtsp/RtspSession.cpp index a64a640d..1e9bf5bd 100644 --- a/src/Rtsp/RtspSession.cpp +++ b/src/Rtsp/RtspSession.cpp @@ -743,22 +743,22 @@ void RtspSession::handleReq_Play(const Parser &parser) { } bool useBuf = true; - _enableSendRtp = false; - - if (strRange.size() && !_bFirstPlay) { + _enableSendRtp = false; + float iStartTime = 0; + if (strRange.size() && !_bFirstPlay) { //这个是seek操作 - auto strStart = FindField(strRange.data(), "npt=", "-"); - if (strStart == "now") { - strStart = "0"; - } - auto iStartTime = 1000 * atof(strStart.data()); - InfoP(this) << "rtsp seekTo(ms):" << iStartTime; - useBuf = !pMediaSrc->seekTo(iStartTime); - }else if(pMediaSrc->totalReaderCount() == 0){ - //第一个消费者 - pMediaSrc->seekTo(0); - } - _bFirstPlay = false; + auto strStart = FindField(strRange.data(), "npt=", "-"); + if (strStart == "now") { + strStart = "0"; + } + iStartTime = 1000 * atof(strStart.data()); + InfoP(this) << "rtsp seekTo(ms):" << iStartTime; + useBuf = !pMediaSrc->seekTo(iStartTime); + }else if(pMediaSrc->totalReaderCount() == 0){ + //第一个消费者 + pMediaSrc->seekTo(0); + } + _bFirstPlay = false; _StrPrinter rtp_info; for(auto &track : _aTrackInfo){ @@ -778,10 +778,10 @@ void RtspSession::handleReq_Play(const Parser &parser) { rtp_info.pop_back(); - sendRtspResponse("200 OK", - {"Range", StrPrinter << "npt=" << setiosflags(ios::fixed) << setprecision(2) << pMediaSrc->getTimeStamp(TrackInvalid) / 1000.0 << "-", - "RTP-Info",rtp_info - }); + sendRtspResponse("200 OK", + {"Range", StrPrinter << "npt=" << setiosflags(ios::fixed) << setprecision(2) << /*pMediaSrc->getTimeStamp(TrackInvalid) / 1000.0*/iStartTime/1000, + "RTP-Info",rtp_info + }); _enableSendRtp = true; setSocketFlags(); diff --git a/tests/test_rtp.cpp b/tests/test_rtp.cpp index 9248a24b..4f16899c 100644 --- a/tests/test_rtp.cpp +++ b/tests/test_rtp.cpp @@ -85,7 +85,10 @@ int main(int argc,char *argv[]) { //此处选择是否导出调试文件 // mINI::Instance()[RtpProxy::kDumpDir] = "/Users/xzl/Desktop/"; - loadFile(argv[1]); + if (argc == 2) + loadFile(argv[1]); + else + ErrorL << "parameter error."; #else ErrorL << "please ENABLE_RTPPROXY and then test"; #endif//#if defined(ENABLE_RTPPROXY)