C# Video Streaming
本文关键字:Streaming Video | 更新日期: 2023-09-27 18:07:20
我正在尝试用视频流做一个应用程序,到目前为止,我只能从服务器向客户端发送一个图像。当我尝试在客户端发送不止一个图像时,我收到以下错误:"参数无效。"在pictureBox1。Image = new Bitmap(ms);客户端代码:
while((data = cliente.receiveImage()) != null)
{
ms = new MemoryStream(data);
pictureBox1.Image = new Bitmap(ms);
ms.Close();
}
服务器端代码(此代码连续重复):
servidor.sendImage(ms.GetBuffer());
ms.GetBuffer()
返回内存流的整个缓冲区,包括任何额外未使用的部分。
您应该调用ToArray()
,它只返回实际内容。
(或者,您的数据可能由于某些其他原因无效,例如sendImage
或receiveImage
中的问题)
图像是挑剔的东西,为了重建图像,您必须拥有包含图像的整个字节集。
我敢打赌,我的左脚鞋的问题是,当客户端对象正在接收数据,它得到它在块组成的部分图像,而不是整个图像一次。这将导致出现
这一行pictureBox1.Image = new Bitmap(ms);
将失败,因为它根本没有整个图像的字节。
选择与其让服务器将图像推送到客户端,不如让客户端从服务器提取图像。
使用现有的流机制。我个人认为,从c#手动传输视频可能比你想的要复杂得多,我谦虚地建议使用现有的组件或应用程序来传输视频,而不是自己编写。现在已经有那么多不同的选择了(wmv、Flash等等),你在重新发明一个其实不需要重新发明的轮子。