頻聊天軟件客戶端
)新建一個工程命名為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話通一樣的視頻聊天軟件有了網絡視頻就可以在千裡之外和家人進行可視通訊了上面的示例程序還有很多地方需要改進的比如視頻的壓縮可以用其它視頻壓縮編碼器進行壓縮這裡只講了傳輸圖像並沒有聲音再改一下就才能傳輸音視頻了有興趣的朋友不妨自己動手去試一試
From:http://tw.wingwit.com/Article/program/Delphi/201311/24738.html