




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学多媒体通信技术实验报告学号:0121109310216班级:电信1102班姓名:戴晓云指导老师:王绪国实验目的(1)了解多媒体通信原理(2)了解视频音频通信TCP/IP与UDP通信协议(3)掌握网络通信平台开发2.实验内容 在以上硬软件环境下,利用合适的开发工具,设计一套可视对讲软件,实现局域网内两台计算机之间的可视对讲功能,要求音视频信号连续性、实时性较好,满足正常交流需要。3.软件设计框图4.实验步骤4.1建立视频聊天软件服务器(1)新建一个工程,命名为Project1.dpr,并把VFW.PAS加到USE中(2)在Form1上放置一个Tpanel控件,该控件用于显示视频。之后再放置两个Tbutton控件,一个caption为"开始",另一个Name为"停止",放置一个UDP组件,这里用indy的IdUDPClient用来传输视频,如图示:(3)定义全局变量CapWnd:THandle;//定义捕捉窗句柄CapParms:TcaptureParms;//用于设置设备属性的结构变量BMPINFO:TBitmapInfo;//BMP图像信息(4)编码事件代码开始按钮代码:CapWnd:=capCreateCaptureWindow('我的窗口',WS_VISIBLEorWS_CHILD,//窗口样式0,//X坐标0,//Y坐标panel1.Width,//窗口宽panel1.Height,//窗口高panel1.handle,//窗口句柄0);//通常为0ifCapWnd=0thenexit;//定义帧捕捉回调函数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;//让设置生效CapCaptureSetSetup(capWnd,@CapParms,sizeof(TCAPTUREPARMS));CapPreviewRate(capWnd,33);//设置预览视频的频率CapCaptureSequenceNoFile(capWnd);//如果要捕捉视频流,则要使用函数来指定不生成文件,不然会自动生成AVI文件CapDriverConnect(CapWnd,0);//连接摄像头设备,第二个参数是个序号,当系统中装有多个显示驱动程序时,其值分别依次为0到总个数如果有多个摄像头,那么就是0->1->2capGetVideoFormat(capWnd,@BMPINFO,sizeof(TBitmapInfo));//取得视频图像数据头CapPreviewScale(capWnd,TRUE);//是否缩放CapOverlay(capWnd,true);//指定是否使用叠加模式,true为使用,否则为falseCapPreview(capWnd,true);回调函数代码:varhd:Thandle;jpg:TJpegImage;memStream:TMemoryStream;Bitmap:TBitmap;begin//将数据显在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);//发送数据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;//用广播功能ifmemStream.Size>Form1.IdUDPClient1.BufferSizethen//向192.168.0.X网段广播,端口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);//将捕捉窗同驱动器断开
4.2建立视频聊天软件客户端3.2.1新建一个工程,命名为Project2.dpr3.2.2在程序窗口Form2上放置一个image控件,该控件用于接收的图像内容,再放置一个Tbutton控件,caption为"接收",,放置一个UDPServer组件,这里用indy的IdUDPServer用来接收网络视频,如图示:接收按钮代码: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进行传输的,服务器端和接收端都用到了jpeg单元,所以use中都要加入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.在机上运行视频聊天软件服务器程序,点开始就开始进行视频的传输了,在网络上(网段为192.168.0.X,根据你的网络设置IP地址,我这用的局域网测试)的任何一台机上运行视频聊天软件客户端点接收都能接收到视频了。如果要接收的视频内容清晰点,可以设置jpg.Compressi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 爆破安全培训试题及答案
- 膀胱肿瘤考试题及答案
- 安全作业考试题库及答案
- 安全员试题及答案
- 安全管理试题及答案
- 中国受辱课件在线观看
- 顾客为先的培训课件
- 群发中暑急救培训课件
- 村医死因培训课件
- 原谅的幼儿绘本课件
- Unit 3 Same or Different?Section A 课件 人教版英语八年级上册
- 【课件】新高三启动主题班会:启航高三逐梦未来
- 长鑫存储在线试题及答案
- 小学劳动教育校本课程开发实践与研究
- 森林草原防火 无人机巡查技术规范 编制说明
- 2025-2030中国发泡聚苯乙烯泡沫行业市场现状供需分析及投资评估规划分析研究报告
- 不寐的中医护理常规
- 《能源的科普讲解》课件
- 天一大联考·天一小高考2024-2025学年(下)高三第四次考试政治试题及答案
- 2025年安庆桐城经开区建设投资集团有限公司招聘12人笔试参考题库附带答案详解
- 2025-2030中国药食同源行业市场运行分析及市场前景预测研究报告
评论
0/150
提交评论