




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
武漢理工大學(xué)多媒體通信技術(shù)實(shí)驗(yàn)報(bào)告學(xué)號(hào):0121109310216班級(jí):電信1102班姓名:戴曉云指導(dǎo)老師:王緒國(guó)實(shí)驗(yàn)?zāi)康?1)了解多媒體通信原理(2)了解視頻音頻通信TCP/IP與UDP通信協(xié)議(3)掌握網(wǎng)絡(luò)通信平臺(tái)開發(fā)2.實(shí)驗(yàn)內(nèi)容 在以上硬軟件環(huán)境下,利用合適的開發(fā)工具,設(shè)計(jì)一套可視對(duì)講軟件,實(shí)現(xiàn)局域網(wǎng)內(nèi)兩臺(tái)計(jì)算機(jī)之間的可視對(duì)講功能,要求音視頻信號(hào)連續(xù)性、實(shí)時(shí)性較好,滿足正常交流需要。3.軟件設(shè)計(jì)框圖4.實(shí)驗(yàn)步驟4.1建立視頻聊天軟件服務(wù)器(1)新建一個(gè)工程,命名為Project1.dpr,并把VFW.PAS加到USE中(2)在Form1上放置一個(gè)Tpanel控件,該控件用于顯示視頻。之后再放置兩個(gè)Tbutton控件,一個(gè)caption為"開始",另一個(gè)Name為"停止",放置一個(gè)UDP組件,這里用indy的IdUDPClient用來傳輸視頻,如圖示:(3)定義全局變量CapWnd:THandle;//定義捕捉窗句柄CapParms:TcaptureParms;//用于設(shè)置設(shè)備屬性的結(jié)構(gòu)變量BMPINFO:TBitmapInfo;//BMP圖像信息(4)編碼事件代碼開始按鈕代碼:CapWnd:=capCreateCaptureWindow('我的窗口',WS_VISIBLEorWS_CHILD,//窗口樣式0,//X坐標(biāo)0,//Y坐標(biāo)panel1.Width,//窗口寬panel1.Height,//窗口高panel1.handle,//窗口句柄0);//通常為0ifCapWnd=0thenexit;//定義幀捕捉回調(diào)函數(shù)CapSetCallbackOnFrame(CapWnd,FrameCallBack);CapParms.dwRequestMicroSecPerFrame:=1;CapParms.fLimitEnabled:=FALSE;CapParms.fCaptureAudio:=FALSE;CapParms.fMCIControl:=FALSE;CapParms.fYield:=TRUE;CapParms.vKeyAbort:=VK_ESCAPE;CapParms.fAbortLeftMouse:=False;CapParms.fAbortRightMouse:=FALSE;//讓設(shè)置生效CapCaptureSetSetup(capWnd,@CapParms,sizeof(TCAPTUREPARMS));CapPreviewRate(capWnd,33);//設(shè)置預(yù)覽視頻的頻率CapCaptureSequenceNoFile(capWnd);//如果要捕捉視頻流,則要使用函數(shù)來指定不生成文件,不然會(huì)自動(dòng)生成AVI文件CapDriverConnect(CapWnd,0);//連接攝像頭設(shè)備,第二個(gè)參數(shù)是個(gè)序號(hào),當(dāng)系統(tǒng)中裝有多個(gè)顯示驅(qū)動(dòng)程序時(shí),其值分別依次為0到總個(gè)數(shù)如果有多個(gè)攝像頭,那么就是0->1->2capGetVideoFormat(capWnd,@BMPINFO,sizeof(TBitmapInfo));//取得視頻圖像數(shù)據(jù)頭CapPreviewScale(capWnd,TRUE);//是否縮放CapOverlay(capWnd,true);//指定是否使用疊加模式,true為使用,否則為falseCapPreview(capWnd,true);回調(diào)函數(shù)代碼:varhd:Thandle;jpg:TJpegImage;memStream:TMemoryStream;Bitmap:TBitmap;begin//將數(shù)據(jù)顯在Image,Bitmap:=TBitmap.Create;Bitmap.Width:=BMPINFO.bmiHeader.biWidth;//NewsizeofBitmapBitmap.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);//發(fā)送數(shù)據(jù)memStream:=TMemoryStream.Create;jpg:=TJpegImage.Create;jpg.Assign(Bitmap);jpg.CompressionQuality:=10;//jpg壓縮質(zhì)量jpg.JPEGNeeded;jpg.Compress;jpg.SaveToStream(memStream);jpg.Free;//因?yàn)閁DP數(shù)據(jù)包有大小限制,這里如果超出部分,就沒有傳輸,完全可以發(fā)幾次發(fā)出去Form1.IdUDPClient1.BroadcastEnabled:=true;//用廣播功能ifmemStream.Size>Form1.IdUDPClient1.BufferSizethen//向192.168.0.X網(wǎng)段廣播,端口9001Form1.IdUDPClient1.SendBuffer('55',9001,memStream.Memory^,Form1.IdUDPClient1.BufferSize)elseForm1.IdUDPClient1.SendBuffer('55',9001,memStream.Memory^,memStream.Size);memStream.Free;Bitmap.Free;End;停止代碼:capCaptureAbort(CapWnd);//停止捕捉capDriverDisconnect(CapWnd);//將捕捉窗同驅(qū)動(dòng)器斷開
4.2建立視頻聊天軟件客戶端3.2.1新建一個(gè)工程,命名為Project2.dpr3.2.2在程序窗口Form2上放置一個(gè)image控件,該控件用于接收的圖像內(nèi)容,再放置一個(gè)Tbutton控件,caption為"接收",,放置一個(gè)UDPServer組件,這里用indy的IdUDPServer用來接收網(wǎng)絡(luò)視頻,如圖示:接收按鈕代碼:IdUDPServer1.DefaultPort:=9001;//接收端口IdUDPServer1.Active:=true;//啟用IdUDPServer1的UDPRead事件代碼:varjpg:TJpegImage;begintryjpg:=TJpegImage.Create;jpg.LoadFromStream(Adata);Image1.Picture.Bitmap.Assign(jpg);jpg.Free;exceptend;end;視頻的傳輸是壓縮成JPG進(jìn)行傳輸?shù)?,服?wù)器端和接收端都用到了jpeg單元,所以u(píng)se中都要加入jpeg。完整的視頻聊天軟件客戶端代碼:unitUnit2;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,IdBaseComponent,IdComponent,IdUDPBase,IdUDPServer,ExtCtrls,jpeg,IdSocketHandle;typeTForm1=class(TForm)Image1:TImage;IdUDPServer1:TIdUDPServer;Button1:TButton;procedureButton1Click(Sender:TObject);procedureIdUDPServer1UDPRead(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);private{Privatedeclarations}public{Publicdeclarations}end;varForm1:TForm1;implementation{$R*.dfm}procedureTForm1.Button1Click(Sender:TObject);beginIdUDPServer1.DefaultPort:=9001;//接收端口IdUDPServer1.Active:=true;//啟用end;procedureTForm1.IdUDPServer1UDPRead(Sender:TObject;AData:TStream;ABinding:TIdSocketHandle);varjpg:TJpegImage;begintryjpg:=TJpegImage.Create;jpg.LoadFromStream(Adata);Image1.Picture.Bitmap.Assign(jpg);jpg.Free;exceptend;end;end.在機(jī)上運(yùn)行視頻聊天軟件服務(wù)器程序,點(diǎn)開始就開始進(jìn)行視頻的傳輸了,在網(wǎng)絡(luò)上(網(wǎng)段為192.168.0.X,根據(jù)你的網(wǎng)絡(luò)設(shè)置IP地址,我這用的局域網(wǎng)測(cè)試)的任何一臺(tái)機(jī)上運(yùn)行視頻聊天軟件客戶端點(diǎn)接收都能接收到視頻了。如果要接收的視頻內(nèi)容清晰點(diǎn),可以設(shè)置jpg.Compressi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全培訓(xùn)聯(lián)系方式填寫課件
- 安全培訓(xùn)職責(zé)劃分課件
- 2025年南平市供電服務(wù)有限公司招聘52人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(新)
- 2025湖南紅花園投資開發(fā)有限公司招聘10人模擬試卷及1套完整答案詳解
- 2025湖北恩施州來鳳縣星熠文化科技有限責(zé)任公司招聘8人考前自測(cè)高頻考點(diǎn)模擬試題及完整答案詳解
- 2025廣東佛山市三水海江昇平建設(shè)工程有限公司第一批招聘企業(yè)工作人員擬聘用人員(第一批)模擬試卷及完整答案詳解
- 安全培訓(xùn)考核表課件
- 2025年合肥綜合性國(guó)家科學(xué)中心大健康研究院招聘4人模擬試卷及答案詳解(名校卷)
- 安全培訓(xùn)考核管理平臺(tái)課件
- 2025年江西農(nóng)商聯(lián)合銀行金融科技人才招聘25人考前自測(cè)高頻考點(diǎn)模擬試題參考答案詳解
- 粉紅絲帶課件
- 看守所干警日常管理制度
- 2025年共青團(tuán)員必背的100個(gè)重點(diǎn)知識(shí)匯編
- 【《離心泵葉輪的水力設(shè)計(jì)過程案例綜述》2200字】
- 胃手術(shù)并發(fā)癥及處理
- 2025年新聞宣傳、新聞采編專業(yè)及理論知識(shí)考試題(附含答案)
- 2025至2030 中國(guó)熱成型鋼(PHS)行業(yè)現(xiàn)狀調(diào)查與前景策略研究報(bào)告
- 執(zhí)法監(jiān)督培訓(xùn)課件
- 股權(quán)投資基金培訓(xùn)課件
- 千川投手培訓(xùn)課件
- 2025年中國(guó)注塑機(jī)熔膠筒螺桿市場(chǎng)調(diào)查研究報(bào)告
評(píng)論
0/150
提交評(píng)論