Exemple #1
0
        void SendCommand(RtspCommand cmd)
        {
            string request = PrepareRequest(cmd);

            byte[] requestBytes = Encoding.ASCII.GetBytes(request);
            mNetworkStream.Write(requestBytes, 0, requestBytes.Length);
            mNetworkStream.Flush();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        void Init()
        {
            doneCommand     = 0;
            current_command = RtspCommand.NONE;
            parsing_mode    = ParsingMode.HEADER;

            session = null;
            sprop   = null;
            cseq    = 0;
        }
Exemple #4
0
 private bool CommandIsDone(RtspCommand cmd)
 {
     if (((int)doneCommand & (int)cmd) > 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #5
0
        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");
        }
Exemple #6
0
        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");
        }
Exemple #7
0
        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");
        }
Exemple #8
0
 private void SetCommand(RtspCommand cmd)
 {
     doneCommand |= Convert.ToByte(cmd);
 }