资源描述:
《多媒体网络通信技术大作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、多媒体网络通信技术大作业电信1203朱银啸01212093103091、题目:基于局域网的可视对讲系统设计2、系统开发环境与工具:(1)、硬件环境:实验室局域网(2)、软件环境:WindowsXP操作系统(3)、开发工具:自己熟悉的面向对象的网络通信编程工具与平台,相关音频、视频编码与传输协议类库3、要求与评分标准:(1)要求:在以上硬软件环境下,利用合适的开发工具,设计一套可视对讲软件,实现局域网内两台计算机之间的可视对讲功能,要求音视频信号连续性、实时性较好,满足正常交流需要。(2)评分标准
2、系统原理分析(20分)1.系统原理概述(10分)2.关键技术分析(10分)系统总体方案设计(30分)1.按模块化设计要求画系统结构图(15分)2数据流分析(15分)系统具体设计(30分)呼叫处理模块流程图与关键代码(6分)音视频采集与播放模块流程图与关键代码(6分)音视频处理(编解码)模块流程图与关键代码(6分)音视频封包与解析模块流程图与关键代码(6分)音视频发送与接收模块流程图与关键代码(6分)系统测试与评价(20)实现语音通信(6分)实现视频通信(6分)实现音视频同步(8分)代码客户端请求
3、连接线程(呼叫处理)关键代码如下:DWORDWINAPIConnectThreadFunc(LPVOIDpParam){CChatRoomDlg*pChatRoom=(CChatRoomDlg*)pParam;ASSERT(pChatRoom!=NULL);pChatRoom->m_ConnectSock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(pChatRoom->m_ConnectSock==INVALID_SOCKET){AfxMessageB
4、ox(_T("新建Socket失败!"));returnFALSE;}CStringstrServIp;pChatRoom->GetDlgItemText(IDC_IP_ADDR,strServIp);intiPort=pChatRoom->GetDlgItemInt(IDC_CONNECT_PORT);if(iPort<=0
5、
6、iPort>65535){AfxMessageBox(_T("请输入合适的端口:1-65535"));goto__Error_End;}charszIpAddr[16]
7、={0};USES_CONVERSION;strcpy_s(szIpAddr,16,T2A(strServIp));sockaddr_inserver;server.sin_family=AF_INET;server.sin_port=htons(iPort);server.sin_addr.s_addr=inet_addr(szIpAddr);if(connect(pChatRoom->m_ConnectSock,(structsockaddr*)&server,sizeof(structso
8、ckaddr))==SOCKET_ERROR){AfxMessageBox(_T("连接失败,请重试!"));goto__Error_End;}pChatRoom->ShowMsg(_T("系统信息:连接服务器成功!"));while(TRUE){if(SOCKET_Select(pChatRoom->m_ConnectSock)){TCHARszBuf[MAX_BUF_SIZE]={0};intiRet=recv(pChatRoom->m_ConnectSock,(char*)szBuf,MA
9、X_BUF_SIZE,0);if(iRet>0){pChatRoom->ShowMsg(szBuf);}else{pChatRoom->ShowMsg(_T("聊天服务器已停止,请重新进行连接!"));break;}}Sleep(500);}__Error_End:closesocket(pChatRoom->m_ConnectSock);returnTRUE;}//捕获窗口BOOLVideoCapture::Initialize(){chardevname[128]={0},devversio
10、n[128]={0};intindex=0;BOOLret=TRUE,ret1=TRUE,ret2=TRUE,ret3=TRUE;TRACE("VideoCapture::Initialize");//创建一个AVICap捕获窗口m_capwnd=capCreateCaptureWindow("Capture",WS_POPUP,0,0,1,1,0,0);if(!m_capwnd){returnFALSE;}//connectcallbackfunctionsret=capSetUserDa