int RTSPSession::HandlePLAYRequest(RTSPPacket &requestpkt, RTSPPacket &responsepkt) { if (RTSP::RTSP_READY != rtspStatus_ ) { responsepkt.SetStatusCode("455"); return -1; } rtspStatus_ = RTSP::RTSP_PLAYING; string requestURI = requestpkt.GetRequestURI(); ServerMediaSession *mediaSesion = server_->FindMediaSessionByStreamName(streamName_); if ( !mediaSesion ) { RTSPDEBUG("[Warning] StreamName: %s Not Found.", streamName_.c_str()); responsepkt.SetStatusCode("404"); return -1; } string rtpinfo = mediaSesion->GetRTPInfo( "rtsp://" + requestURI ); // "Session: %d", responsepkt.AddAHeaderLine(RTSP::HeaderField::Session, Utility::ToString(this->GetSessionID())); // RTPInfo responsepkt.AddAHeaderLine(RTSP::HeaderField::RTP_Info, rtpinfo); // Range responsepkt.AddAHeaderLine(RTSP::HeaderField::Range, responsepkt.GetHeaderLine(RTSP::HeaderField::Range)); mediaSesion->StartStream(); responsepkt.SetStatusCode("200"); return 0; }