频聊天软件客户端
)新建一个工程命名为Projectdpr
)在程序窗口Form上放置一个image控件该控件用于接收的图像内容再放置一个Tbutton控件caption为接收放置一个UDPServer组件这里用indy的IdUDPServer用来接收网络视频如图示
接收按钮代码
IdUDPServerDefaultPort:=; //接收端口 IdUDPServerActive:=true; //启用
IdUDPServer的UDPRead事件代码
var jpg:TJpegImage;begin try jpg := TJpegImageCreate; jpgLoadFromStream(Adata); ImagePictureBitmapAssign(jpg); jpgFree; exceptend;end;
视频的传输是压缩成JPG进行传输的服务器端和接收端都用到了jpeg单元所以use中都要加入jpeg
完整的视频聊天软件客户端代码
unit Unit;
interfaceuses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls IdBaseComponent IdComponent IdUDPBase IdUDPServer ExtCtrlsjpegIdSocketHandle;
type TForm = class(TForm) Image: TImage;
IdUDPServer: TIdUDPServer;
Button: TButton;
procedure ButtonClick(Sender: TObject);
procedure IdUDPServerUDPRead(Sender: TObject;
AData: TStream; ABinding: TIdSocketHandle);
private { Private declarations }
public
{
Public declarations
}
end;
var Form: TForm;
implementation{$R *dfm}procedure TFormButtonClick(Sender: TObject);
begin
IdUDPServerDefaultPort:=; //接收端口
IdUDPServerActive:=true; //启用
end;
procedure TFormIdUDPServerUDPRead(Sender: TObject;AData: TStream; ABinding: TIdSocketHandle);
var jpg:TJpegImage;
begin
try
jpg := TJpegImageCreate;
jpgLoadFromStream(Adata);
ImagePictureBitmapAssign(jpg);
jpgFree;
except
end;
end;
end
好了到这里程序代码也就写完了在机上运行视频聊天软件服务器程序点开始就开始进行视频的传输了在网络上(网段为X根据你的网络设置IP地址我这用的局域网测试)的任何一台机上运行视频聊天软件客户端点接收都能接收到视频了
如果要接收的视频内容清晰点可以设置jpgCompressionQuality:=;(这个值可以是从至数值越大图像越清晰当然传输的速度会越慢了图像越清晰数据包就会越大如果超出了UDP包限制看到图像就不完整了)
视频聊天软件服务器
聊天软件客户端
四结束语
在这里我把自己的一些经验和代码拿出来与大家一起分享请高手不要扔鸡蛋啊我真的是花了不少力气的!看了这篇文章后相信你也可以自己动手做一个网络视频聊天软件也可以做个类似MSNQQE话通一样的视频聊天软件有了网络视频就可以在千里之外和家人进行可视通讯了上面的示例程序还有很多地方需要改进的比如视频的压缩可以用其它视频压缩编码器进行压缩这里只讲了传输图像并没有声音再改一下就才能传输音视频了有兴趣的朋友不妨自己动手去试一试