Exemple #1
0
        static void Main(string[] args)
        {
            int    seq = 0;
            string url = "rtsp://144.92.136.102";

            RtspClient rtspClient = new RtspClient();
            bool       result     = rtspClient.ConnectServer("144.92.136.102", 554);

            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("{0} ", Constants.RTSP_CMD_OPTIONS);
            sb.AppendFormat("{0} RTSP/1.0\r\n", url);
            sb.AppendFormat("CSeq: {0}\r\n", (++seq).ToString());
            sb.AppendFormat("User-Agent: {0}\r\n\r\n", Constants.USER_AGENT_HEADER);

            rtspClient.SendMessage(sb.ToString());
            string response = rtspClient.ReceiveMessage();

            Console.WriteLine(response);

            string[] lines = response.Split(new char[] { '\r', '\n' });
            string   re    = "";
            Dictionary <string, string> p = null;

            for (int i = 0; i < lines.Length; i++)
            {
                if (lines[i].StartsWith("WWW-Authenticate"))
                {
                    Console.WriteLine(lines[i]);
                    p = ParseDigest(lines[i]);
                    //HA1 = MD5(username: realm:password)
                    //HA2 = MD5(method: digestURI)
                    //response = MD5(HA1: nonce:HA2)
                    var HA1 = MD5("admin:" + p["realm"] + ":1675WisM@d");
                    var HA2 = MD5(Constants.RTSP_CMD_OPTIONS + ":" + url);
                    re = MD5(HA1 + ":" + p["nonce"] + ":" + HA2);
                }
            }


            sb = new StringBuilder();
            sb.AppendFormat("{0} ", Constants.RTSP_CMD_OPTIONS);
            sb.AppendFormat("{0} RTSP/1.0\r\n", url);
            sb.AppendFormat("CSeq: {0}\r\n", (++seq).ToString());
            sb.AppendFormat("Authorization: Digest username=\"{0}\", realm=\"{1}\", nonce=\"{2}\", uri=\"{3}\", response=\"{4}\"\r\n", "admin", p["realm"], p["nonce"], url, re);
            sb.AppendFormat("User-Agent: {0}\r\n\r\n", Constants.USER_AGENT_HEADER);

            rtspClient.SendMessage(sb.ToString());
            response = rtspClient.ReceiveMessage();

            Console.WriteLine(response);
        }
Exemple #2
0
        /// <summary>
        /// Opens the stream.
        /// </summary>
        /// <param name="hostAddress">The host address.</param>
        /// <param name="hostPort">The host port.</param>
        /// <returns>Succeeded or failed.</returns>
        private bool OpenStream(string hostAddress, int hostPort)
        {
            if (rtspClient == null)
            {
                rtspClient = new RtspClient();

                HookClientEvents();
            }

            this.lblCurrentState.Text = "Try to connect the server...";
            this.Refresh();

            bool result = rtspClient.ConnectServer(hostAddress, hostPort);

            if (!result)
            {
                MessageBox.Show(string.Format("Could not connect the server[{0}:{1}]!", hostAddress, hostPort.ToString()), "Information",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);

                Utils.OutputMessage(false, MsgLevel.Error, "ClientForm -- OpenStream", "Could not connect the server!");

                return(false);
            }

            result = rtspClient.OpenStream(fileNameOrUrl, filePath);
            if (!result)
            {
                Utils.OutputMessage(false, MsgLevel.Error, "ClientForm -- OpenStream", "Could not open the stream!");

                rtspClient.DisconnectServer();

                return(false);
            }

            duration = rtspClient.Duration;

            Utils.OutputMessage(false, MsgLevel.Debug, "ClientForm -- OpenStream", "Open the stream successfully.");

            return(true);
        }