用Delphi开发视频聊天软件
http://tech.ddvip.com 2006年08月01日 社区交流
本文详细介绍用Delphi开发视频聊天软件
回调函数代码:
var hd:Thandle;
jpg:TJpegImage;
memStream :TMemoryStream;
Bitmap:TBitmap;
begin //将数据显在Image,
Bitmap:=TBitmap.Create;
Bitmap.Width :=BMPINFO.bmiHeader.biWidth;
// New size of Bitmap
Bitmap.Height:=BMPINFO.bmiHeader.biHeight;
hd:= DrawDibOpen; DrawDibDraw(hd,Bitmap.canvas.handle,0,0,_
BMPINFO.BmiHeader.biwidth,BMPINFO.bmiheader.biheight,_
@BMPINFO.bmiHeader,lpVHdr^.lpData,0,0,BMPINFO.bmiHeader.biWidth,_
BMPINFO.bmiHeader.biheight,0);
DrawDibClose(hd); //发送数据
memStream := TMemoryStream.Create;
jpg := TJpegImage.Create;
jpg.Assign(Bitmap);
jpg.CompressionQuality := 10; //jpg压缩质量
jpg.JPEGNeeded;
jpg.Compress;
jpg.SaveToStream(memStream);
jpg.Free; //因为UDP数据包有大小限制,这里如果超出部分,就没有传输,完全可以发几次发出去
Form1.IdUDPClient1.BroadcastEnabled:=true;//用广播功能
if memStream.Size>Form1.IdUDPClient1.BufferSize then
//向192.168.0.X网段广播,端口 9001
Form1.IdUDPClient1.SendBuffer('192.168.0.255',9001,memStream.Memory^,Form1.IdUDPClient1.BufferSize) else Form1.IdUDPClient1.SendBuffer('192.168.0.255',9001,memStream.Memory^,memStream.Size);
memStream.Free;
Bitmap.Free;
End;
停止代码:
capCaptureAbort(CapWnd); //停止捕捉 capDriverDisconnect(CapWnd); //将捕捉窗同驱动器断开
责编:豆豆技术应用