我创建了一个简单的网络服务器,以每秒25帧的速度向客户端发送网络摄像头的小图像(~0.5mb)。但是,在执行时,我注意到一个相当大的延迟(估计在LAN上2秒),并且当通过任务管理器检查带宽使用时,我使用100%的100 mbps带宽。我是C#/ .NET的新手,并不太清楚为什么/如何发生这种情况。这是主服务器循环:
image = grabBitmapBlocking();
// Console.WriteLine("FPS: " + Aruco.FpsCounter.CalculateFrameRate());
//image.RotateFlip(RotateFlipType.RotateNoneFlipX);
// save it to jpeg using quality options
m.Position = 10;
image.Save(m, myImageCodecInfo, myEncoderParameters);
// Send the length as a fixed length string
m.Position = 0;
m.Write(Encoding.ASCII.GetBytes((m.Length - 10).ToString("d8") + "\r\n"), 0, 10);
Console.WriteLine("sent " + m.Length + " bytes or " + m.Length / 1e6 + " megabytes");
// send the jpeg image
serv.SendToAll(m);
// Empty the stream
m.SetLength(0);
// remove the image from memory
image.Dispose();
image = null;
任何人都可以向我提出可能的问题吗?
答案 0 :(得分:-1)
从检查数学开始:
以25帧/秒的速度向客户端发送网络摄像头的小图像(~0.5mb)
那是25x0.5兆字节= 12.5兆字节。这需要大约125兆比特的带宽。
我利用了100 mbps带宽的100%。
正如数学表明的那样,你需要更多。有一个原因是视频流被编码而不是作为各种位图发送。
我是C#/ .NET的新手,并不太清楚为什么/如何发生这种情况。
你想要的是一个视频流,它是用视频编解码器编码的 - 这意味着那些移动很少的图像就像SMALL一样。