问题 来自WebSocket的图像/视频

andylsbc6

新成员
已加入
2016年2月15日
留言内容
1
编程经验
Beginner
大家好。我有一个连接到ESP8266的相机(现在使用Arducam OV2640)。我正在尝试构建一些在C#应用程序和ESP8266之间发送websocket数据的工具。该项目的主要目的是构建一个机器人,该机器人可以在机器人上查看相机并通过Websocket使用C#应用程序对其进行控制。
但是,我项目的进度是能够将命令发送给机器人以使其移动,但是从ESP8266接收数据后,我无法将数据整理成适当的视频流以在Windows上查看C#应用程序。我使用了C#位图库,但无法正常工作。任何帮助深表感谢。以下是我到目前为止所做的事情:

C#:
        public async Task receiveData()
        {
            while(true)
            {
                ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[819200]);             

                WebSocketReceiveResult result = await ws.ReceiveAsync(buffer, CancellationToken.None);
                pbVideoFeed.Image = BytesToBitmap(buffer);
                if (ws.State != WebSocketState.Open)
                {
                    break;
                }
            }
        }

        private Bitmap BytesToBitmap(ArraySegment<byte> buffer)
        {
            MemoryStream stream = null;
            byte[] image_data = new byte[409600];
            Bitmap resize_img = new Bitmap(pbVideoFeed.Width, pbVideoFeed.Height);
            Graphics graphic = Graphics.FromImage(resize_img);

            image_data = buffer.ToArray();
            try
            {
                stream = new MemoryStream(image_data);
                Bitmap result = new Bitmap(stream);
                graphic.InterpolationMode = InterpolationMode.High;
                graphic.DrawImage(result, new Rectangle(0, 0, pbVideoFeed.Width, pbVideoFeed.Height));

                graphic.Dispose();

                return new Bitmap((Image)resize_img);
                //return new Bitmap((Image)new Bitmap(stream));
            }
            catch (ArgumentException ex)
            {
                throw ex;
            }
            finally
            {
                stream.Close();
            }
        }
 
最佳 底部