用Delphi开发视频聊天软件
http://tech.ddvip.com 2006年08月01日 社区交流
本文详细介绍用Delphi开发视频聊天软件
3.2建立视频聊天软件客户端

3.2.1新建一个工程,命名为Project2.dpr
3.2.2在程序窗口Form2上放置一个image控件,该控件用于接收的图像内容,再放置一个Tbutton控件,caption为"接收",,放置一个UDPServer组件,这里用indy的IdUDPServer用来接收网络视频,如图示:
接收按钮代码:
IdUDPServer1.DefaultPort:=9001; //接收端口 IdUDPServer1.Active:=true; //启用
IdUDPServer1的UDPRead事件代码:
var jpg:TJpegImage;begin try jpg := TJpegImage.Create; jpg.LoadFromStream(Adata); Image1.Picture.Bitmap.Assign(jpg); jpg.Free; exceptend;end;
视频的传输是压缩成JPG进行传输的,服务器端和接收端都用到了jpeg单元,所以use中都要加入jpeg。
完整的视频聊天软件客户端代码:
unit Unit2;
interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, ExtCtrls,jpeg,IdSocketHandle;
type TForm1 = class(TForm) Image1: TImage;
IdUDPServer1: TIdUDPServer;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure IdUDPServer1UDPRead(Sender: TObject;
AData: TStream; ABinding: TIdSocketHandle);
private { Private declarations }
public
{
Public declarations
}
end;
var Form1: TForm1;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.DefaultPort:=9001; //接收端口
IdUDPServer1.Active:=true; //启用
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject;AData: TStream; ABinding: TIdSocketHandle);
var jpg:TJpegImage;
begin
try
jpg := TJpegImage.Create;
jpg.LoadFromStream(Adata);
Image1.Picture.Bitmap.Assign(jpg);
jpg.Free;
except
end;
end;
end.
好了,到这里程序代码也就写完了。在机上运行视频聊天软件服务器程序,点开始就开始进行视频的传输了,在网络上(网段为192.168.0.X,根据你的网络设置IP地址,我这用的局域网测试)的任何一台机上运行视频聊天软件客户端点接收都能接收到视频了。
如果要接收的视频内容清晰点,可以设置jpg.CompressionQuality:=10;(这个值可以是从1至100,数值越大,图像越清晰,当然传输的速度会越慢了,图像越清晰,数据包就会越大,如果超出了UDP包限制,看到图像就不完整了)

视频聊天软件服务器

聊天软件客户端
四、结束语
在这里,我把自己的一些经验和代码拿出来与大家一起分享,请高手不要扔鸡蛋啊,我真的是花了不少力气的!看了这篇文章后,相信你也可以自己动手做一个网络视频聊天软件,也可以做个类似MSN、QQ、E话通一样的视频聊天软件,有了网络视频就可以在千里之外和家人进行可视通讯了。上面的示例程序还有很多地方需要改进的,比如视频的压缩可以用其它视频压缩编码器进行压缩,这里只讲了传输图像,并没有声音,再改一下就才能传输音视频了,有兴趣的朋友不妨自己动手去试一试。
责编:豆豆技术应用