Delphi 如何使用Indy TCPServer/Client将转换为位图的视频发送到客户端?

Delphi 如何使用Indy TCPServer/Client将转换为位图的视频发送到客户端?,delphi,video-streaming,delphi-7,indy,Delphi,Video Streaming,Delphi 7,Indy,顺便说一句,我很抱歉我的英语不好。 我想使用Indy在客户机和服务器之间创建一个流式视频系统。在这个场景中,网络摄像头与步进电机通过usb端口直接连接到服务器。然后服务器进行录制,并使用socket将已捕获的图像发送到客户端,在本例中,我使用Indy TCPSocket。该系统类似于闭路电视系统。换句话说,这个系统是单向通信。我所做的编码是使用以下代码将视频转换为位图: procedure TFormHome.Timer1Timer(Sender: TObject); begin Video

顺便说一句,我很抱歉我的英语不好。 我想使用Indy在客户机和服务器之间创建一个流式视频系统。在这个场景中,网络摄像头与步进电机通过usb端口直接连接到服务器。然后服务器进行录制,并使用socket将已捕获的图像发送到客户端,在本例中,我使用Indy TCPSocket。该系统类似于闭路电视系统。换句话说,这个系统是单向通信。我所做的编码是使用以下代码将视频转换为位图:

procedure TFormHome.Timer1Timer(Sender: TObject);
begin
  VideoGrabber.GetBitmap(FormStream.Image1.Picture.Bitmap);
end;
但我仍然不知道如何将图像连续传输到客户端,以便客户端接收到的图像转换为运动图像。因为我知道图像不能直接发送,必须转换为字节数组

也许您可以向我展示使用Indy TCPServer/client向客户端发送位图图像的示例脚本


谢谢。

您的位图位于
TBitmap
对象中。最简单的解决方案是使用
TBitmap.SaveToStream()
将其保存到
TStream
,然后使用Indy的
TIdIOHandler.Write(TStream)
TIdIOHandler.ReadStream()
方法将其传输到
TBitmap
对象中。最简单的解决方案是使用
TBitmap.SaveToStream()
将其保存到
TStream
,然后使用Indy的
TIdIOHandler.Write(TStream)
TIdIOHandler.ReadStream()
方法将其传输。

OK。我试试看。。谢谢你的回答^^@nurettin您正在实现一个实际的HTTP服务器吗?如果只发送没有HTTP头的原始JPEG数据来将数据描述为JPEG,web浏览器将不知道如何将JPEG显示为JPEG。@RemyLebeau哦,我明白了,我不知道他们在响应图片mime类型时需要HTTP头(不认为出于某种原因需要)。很酷,谢谢。@Remylebau是的,这很有效。谢谢你的时间!好啊我试试看。。谢谢你的回答^^@nurettin您正在实现一个实际的HTTP服务器吗?如果只发送没有HTTP头的原始JPEG数据来将数据描述为JPEG,web浏览器将不知道如何将JPEG显示为JPEG。@RemyLebeau哦,我明白了,我不知道他们在响应图片mime类型时需要HTTP头(不认为出于某种原因需要)。很酷,谢谢。@Remylebau是的,这很有效。谢谢你的时间!