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());

C# Video Streaming

ms.GetBuffer()返回内存流的整个缓冲区,包括任何额外未使用的部分。
您应该调用ToArray(),它只返回实际内容。

(或者,您的数据可能由于某些其他原因无效,例如sendImagereceiveImage中的问题)

图像是挑剔的东西,为了重建图像,您必须拥有包含图像的整个字节集。

我敢打赌,我的左脚鞋的问题是,当客户端对象正在接收数据,它得到它在块组成的部分图像,而不是整个图像一次。这将导致出现

这一行
pictureBox1.Image = new Bitmap(ms);

将失败,因为它根本没有整个图像的字节。

选择

  • 与其让服务器将图像推送到客户端,不如让客户端从服务器提取图像。

  • 使用现有的流机制。我个人认为,从c#手动传输视频可能比你想的要复杂得多,我谦虚地建议使用现有的组件或应用程序来传输视频,而不是自己编写。现在已经有那么多不同的选择了(wmv、Flash等等),你在重新发明一个其实不需要重新发明的轮子。