void SendCommand(RtspCommand cmd) { string request = PrepareRequest(cmd); byte[] requestBytes = Encoding.ASCII.GetBytes(request); mNetworkStream.Write(requestBytes, 0, requestBytes.Length); mNetworkStream.Flush(); }
void SendCommand(RtspCommand cmd) { current_command = cmd; string request = PrepareRequest(current_command); byte[] requestBytes = Encoding.ASCII.GetBytes(request); mServerStream.Write(requestBytes, 0, requestBytes.Length); mServerStream.Flush(); }
void Init() { doneCommand = 0; current_command = RtspCommand.NONE; parsing_mode = ParsingMode.HEADER; session = null; sprop = null; cseq = 0; }
private bool CommandIsDone(RtspCommand cmd) { if (((int)doneCommand & (int)cmd) > 0) { return(true); } else { return(false); } }
string PrepareRequest(RtspCommand cmd) { string request = ""; switch (cmd) { case RtspCommand.OPTIONS: request = "OPTIONS"; break; case RtspCommand.DESCRIBE: request = "DESCRIBE"; break; case RtspCommand.SETUP: request = "SETUP"; break; case RtspCommand.PLAY: request = "PLAY"; break; case RtspCommand.PAUSE: request = "PAUSE"; break; case RtspCommand.TEARDOWN: request = "TEARDOWN"; break; } if (request == "") { return(null); } else { request += " "; } if (cmd == RtspCommand.OPTIONS) { request += "*"; } else { request += "rtsp://" + mIPAddress + ":" + mPort + "/v" + mChannel.ToString() + "h"; } if (cmd == RtspCommand.SETUP) { request += "/streamid=0"; } request += " RTSP/1.0\r\n"; request += "CSeq: " + mSeq.ToString() + "\r\n"; mSeq++; request += "User-Agent: RTSP Agent\r\n"; switch (cmd) { case RtspCommand.DESCRIBE: request += "Accept: application/sdp\r\n"; break; case RtspCommand.SETUP: request += "Transport: RTP/AVP"; request += ";unicast;client_port=" + mUdpPort + "-" + (mUdpPort + 1); request += "\r\n"; break; case RtspCommand.PLAY: case RtspCommand.PAUSE: case RtspCommand.OPTIONS: case RtspCommand.TEARDOWN: if (!string.IsNullOrEmpty(session)) { request += "Session: " + session + "\r\n"; } break; } if (!string.IsNullOrEmpty(USER)) { string encode = USER; if (!string.IsNullOrEmpty(PASSWORD)) { encode += ":" + PASSWORD; } request += "Authorization: Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(encode)) + "\r\n"; } return(request += "\r\n"); }
string PrepareRequest(RtspCommand cmd) { string request = ""; switch (cmd) { case RtspCommand.OPTIONS: request = "OPTIONS"; break; case RtspCommand.DESCRIBE: request = "DESCRIBE"; break; case RtspCommand.SETUP: request = "SETUP"; break; case RtspCommand.PLAY: request = "PLAY"; break; case RtspCommand.PAUSE: request = "PAUSE"; break; case RtspCommand.TEARDOWN: request = "TEARDOWN"; break; } if (request == "") { return(null); } else { request += " "; } if (cmd == RtspCommand.OPTIONS) { request += "*"; } else { request += (mPort != 554) ? "rtsp://" + mIPAddress + ":" + mPort.ToString() + "/axis-media/media.amp?" : "rtsp://" + mIPAddress + "/axis-media/media.amp?"; if (!string.IsNullOrEmpty(CODEC)) { request += "videocodec=" + CODEC; if (!string.IsNullOrEmpty(RESOLUTION)) { request += "&resolution=" + RESOLUTION; } } if (cmd == RtspCommand.DESCRIBE) { } } request += " RTSP/1.0\r\n"; request += "CSeq: " + mSeq.ToString() + "\r\n"; mSeq++; //request += "User-Agent: Axis AMC\r\n"; switch (cmd) { case RtspCommand.DESCRIBE: request += "Accept: application/sdp\r\n"; break; case RtspCommand.SETUP: request += "Transport: RTP/AVP"; request += ";unicast;client_port=" + PORT_ONE + "-" + PORT_TWO; /* * switch (transport_type) * { * case TransportType.RTP_AVP_UNICAST: * request += ";unicast;client_port=" + port1 + "-" + port2; * break; * case TransportType.RTP_AVP_MULTICAST: * request += ";multicast;client_port=" + port1 + "-" + port2; * break; * case TransportType.RTP_AVP_TCP_UNICAST: * request += "/TCP;unicast"; * break; * }*/ request += "\r\n"; break; case RtspCommand.PLAY: case RtspCommand.PAUSE: case RtspCommand.OPTIONS: case RtspCommand.TEARDOWN: if (!string.IsNullOrEmpty(session)) { request += "Session: " + session + "\r\n"; } break; } if (!string.IsNullOrEmpty(USER)) { string encode = USER; if (!string.IsNullOrEmpty(PASSWORD)) { encode += ":" + PASSWORD; } request += "Authorization: Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(encode)) + "\r\n"; } return(request += "\r\n"); }
string PrepareRequest(RtspCommand cmd) { string request = ""; switch (cmd) { case RtspCommand.OPTIONS: request = "OPTIONS"; break; case RtspCommand.DESCRIBE: request = "DESCRIBE"; break; case RtspCommand.SETUP: request = "SETUP"; break; case RtspCommand.PLAY: request = "PLAY"; break; case RtspCommand.PAUSE: request = "PAUSE"; break; case RtspCommand.TEARDOWN: request = "TEARDOWN"; break; } if (request == "") { return(null); } else { request += " "; } if (cmd == RtspCommand.OPTIONS) { request += "*"; } else { request += (port != 554) ? "rtsp://" + ipAddress + ":" + port.ToString() + "/axis-media/media.amp?" : "rtsp://" + ipAddress + "/axis-media/media.amp?"; if (!string.IsNullOrEmpty(codec)) { request += "videocodec=" + codec; if (!string.IsNullOrEmpty(rso)) { request += "&resolution=" + rso; } } if (cmd == RtspCommand.DESCRIBE) { } } request += " RTSP/1.0\r\n"; request += "CSeq: " + cseq.ToString() + "\r\n"; cseq++; //request += "User-Agent: Axis AMC\r\n"; switch (cmd) { case RtspCommand.DESCRIBE: request += "Accept: application/sdp\r\n"; break; case RtspCommand.SETUP: request += "Transport: RTP/AVP"; switch (transport_type) { case TransportType.RTP_AVP_UNICAST: request += ";unicast;client_port=" + port1 + "-" + port2; break; case TransportType.RTP_AVP_MULTICAST: request += ";multicast;client_port=" + port1 + "-" + port2; break; case TransportType.RTP_AVP_TCP_UNICAST: request += "/TCP;unicast"; break; } request += "\r\n"; break; case RtspCommand.PLAY: case RtspCommand.PAUSE: case RtspCommand.OPTIONS: case RtspCommand.TEARDOWN: if (!string.IsNullOrEmpty(session)) { request += "Session: " + session + "\r\n"; } break; } if (!string.IsNullOrEmpty(user)) { string encode = user; if (!string.IsNullOrEmpty(password)) { encode += ":" + password; } request += "Authorization: Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(encode)) + "\r\n"; } return(request += "\r\n"); }
private void SetCommand(RtspCommand cmd) { doneCommand |= Convert.ToByte(cmd); }