Ejemplo n.º 1
0
        private void DoSetting(Socket web_client, string[] routePathParams)
        {
            if (routePathParams.Length < 4)
            {
                return;
            }

            // /setting/padding/0/left/right
            int previewOutputChannel = int.Parse(routePathParams[3]) - 1;
            int paddingLeft          = int.Parse(routePathParams[4]);
            int paddingRight         = int.Parse(routePathParams[5]);

            ConsoleService.GetInstance().LogMsg("DoSetting previewOutputChannel " + previewOutputChannel +
                                                " paddingLeft " + paddingLeft +
                                                " paddingRight " + paddingRight, LogType.Log);

            PreviewImageService.GetInstance().SetScreenPadding(previewOutputChannel, paddingLeft, paddingRight);


            //报文头部
            string head = Header();

            byte[] headBytes = Encoding.UTF8.GetBytes(head);
            web_client.Send(headBytes);

            byte[] result = Encoding.ASCII.GetBytes("SUCCESS");
            web_client.Send(result);
            web_client.Close(10);
            web_client.Dispose();
        }
Ejemplo n.º 2
0
        public static PreviewImageService GetInstance()
        {
            lock (lockObj)
            {
                if (instance == null)
                {
                    instance = new PreviewImageService();
                }
            }

            return(instance);
        }
Ejemplo n.º 3
0
        private void DoPreview(Socket web_client, string[] routePathParams)
        {
            if (routePathParams.Length < 4)
            {
                return;
            }

            try
            {
                //预监路径输出路数索引
                string previewOutputChannel = routePathParams[2];

                Console.WriteLine("Data Request previewOutputChannel :" + previewOutputChannel);

                //报文头部
                string head      = Header();
                byte[] headBytes = Encoding.UTF8.GetBytes(head);
                web_client.Send(headBytes);

                //根据预监输出图像路数索引值去预监图像服务查找图像数据
                while (web_client.Connected)
                {
                    Bitmap screenPreviewBitmap = PreviewImageService.GetInstance().GetScreenPreviewBitmap(int.Parse(previewOutputChannel));
                    lock (screenPreviewBitmap)
                    {
                        if (screenPreviewBitmap == null)
                        {
                            web_client.Close();
                            return;
                        }

                        EncoderParameters encoderParameters = new EncoderParameters(1);
                        EncoderParameter  encoderParameter  = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 50L);
                        encoderParameters.Param[0] = encoderParameter;

                        MemoryStream ms = new MemoryStream();

                        screenPreviewBitmap.Save(ms, GetImageCodecInfo(ImageFormat.Jpeg), encoderParameters);

                        byte[] screenBitmapBytes = ms.GetBuffer();
                        ms.Close();
                        ms.Dispose();

                        byte[] payloadarray = Encoding.ASCII.GetBytes(PayloadHeader(screenBitmapBytes.Length));
                        web_client.Send(payloadarray);
                        //图像数据
                        web_client.Send(screenBitmapBytes);
                    }

                    Thread.Sleep(1000 / Program.frame);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("处理http请求断开" + Environment.NewLine + "\t" + ex.Message);
            }
            finally
            {
                web_client.Close(10);
                web_client.Dispose();

                ConsoleService.GetInstance().LogMsg("web_client.Close ", LogType.Log);
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            ConsoleService.GetInstance().Init();
            ConsoleService.GetInstance().LogMsg(" Start Mjpeg Server", LogType.Log);

            string configXml = "./AppScreensSettings.xml";

            if (args.Length >= 7)
            {
                port          = int.Parse(args[0]);
                gridX         = int.Parse(args[1]);
                gridY         = int.Parse(args[2]);
                previewWidth  = int.Parse(args[3]);
                previewheight = int.Parse(args[4]);
                frame         = int.Parse(args[5]);
                configXml     = args[6];

                ConsoleService.GetInstance().LogMsg(" Start Mjpeg Server args " + args[0] + " " +
                                                    args[1] + " " +
                                                    args[2] + " " +
                                                    args[3] + " " +
                                                    args[4] + " " +
                                                    args[5] + " " +
                                                    args[6], LogType.Log);
            }
            else
            {
                //warnning
                ConsoleService.GetInstance().LogMsg(" Start Mjpeg Server without args ", LogType.Log);
            }

            ConsoleService.GetInstance().LogMsg(" XmlDocument load " + configXml, LogType.Log);

            try
            {
                var xmlDoc = new XmlDocument();
                xmlDoc.Load(configXml);
                XmlElement  root = xmlDoc.DocumentElement;
                XmlNodeList xmlScreenNodeList = root.SelectNodes("/AppSettings/Screes/Screen");
                foreach (XmlNode screenNode in xmlScreenNodeList)
                {
                    XmlNode curXmlNode = screenNode.FirstChild;
                    string  id         = curXmlNode.InnerText;
                    curXmlNode = curXmlNode.NextSibling;

                    string x = curXmlNode.InnerText;
                    curXmlNode = curXmlNode.NextSibling;

                    string y = curXmlNode.InnerText;
                    curXmlNode = curXmlNode.NextSibling;

                    string width = curXmlNode.InnerText;
                    curXmlNode = curXmlNode.NextSibling;

                    string height = curXmlNode.InnerText;

                    RestfulScreenData screenData = new RestfulScreenData();
                    screenData.id           = id;
                    screenData.x            = x;
                    screenData.y            = y;
                    screenData.width        = width;
                    screenData.height       = height;
                    screenData.paddingRight = "0";
                    screenData.paddingLeft  = "0";
                    screenNodeList.Add(screenData);
                }

                //启动预监服务器
                mjpegServer = new MjpegServer(port);
                mjpegServer.Start();

                ConsoleService.GetInstance().LogMsg(" Start PreviewImageService", LogType.Log);

                //启动预监画面服务
                PreviewImageService.GetInstance().Init(screenNodeList);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);

                ConsoleService.GetInstance().LogMsg("Start Error " + e.Message, LogType.Error);
            }

            string cmd = Console.ReadLine();

            while (!cmd.Equals("bye"))
            {
                cmd = Console.ReadLine();
            }
        }