public void Play()
{
ThreadPool.QueueUserWorkItem(delegate { ProcessRTPPackets(); });
ThreadPool.QueueUserWorkItem(delegate { SendKeepAlives(); });
RTSPRequest playRequest = new RTSPRequest(RTSPMethodsEnum.PLAY, _url);
RTSPHeader playHeader = new RTSPHeader(_cseq++, _rtspSession.SessionID);
playRequest.Header = playHeader;
System.Diagnostics.Debug.WriteLine(playRequest.ToString());
var rtspRequestBuffer = Encoding.UTF8.GetBytes(playRequest.ToString());
_rtspStream.Write(rtspRequestBuffer, 0, rtspRequestBuffer.Length);
var buffer = new byte[2048];
var bytesRead = _rtspStream.Read(buffer, 0, 2048);
if (bytesRead > 0)
{
System.Diagnostics.Debug.WriteLine(Encoding.UTF8.GetString(buffer, 0, bytesRead));
var rtspMessage = RTSPMessage.ParseRTSPMessage(buffer, null, null);
if (rtspMessage.RTSPMessageType == RTSPMessageTypesEnum.Response)
{
var playResponse = RTSPResponse.ParseRTSPResponse(rtspMessage);
logger.Debug("RTSP Response received to PLAY: " + playResponse.StatusCode + " " + playResponse.Status + " " + playResponse.ReasonPhrase + ".");
}
}
else
{
throw new ApplicationException("Zero bytes were read from the RTSP client socket in response to a PLAY request.");
}
}