论文部分内容阅读
随着网络接入带宽的逐渐改善,许多领域的应用都希望能够嵌入实时通信功能。但目前国内外通信应用都使用私有的通信标准,无法实现跨终端通信,如微信、Skype等。谷歌开源WebRTC(Web Real-Time Communication)技术是为了统一互联网通信标准,并解决移动端因硬件资源不足导致的抖动、延时和CPU占用率高等问题。因此,本课题采用WebRTC技术在Android平台设计并实现了跨应用终端的音视频实时通信系统。本文主要研究内容及工作如下:(1)研究WebRTC技术原理及主要结构。分析并研究了音视频编解码器的原理性能后,分别选用iSAC和VP8作为音视频编解码器;深入分析UDP和RTP/RTCP原理及结构,结合UDP在实时通信场合中的优势,及RTP在处理丢包、乱序及音视频同步方面的特点,最后选用两者作为本系统的传输层协议。(2)完成服务器的设计与搭建。根据需求在Ubuntu平台上搭建服务器。首先是房间服务器,它能够维护通话并管理通话人员的加入与退出;其次是信令服务器,客户端建立通信前需要进行信令交互,信令服务器则起到了信令传递的作用;最后针对现在复杂的网络情况,分析了不同类型的NAT及其穿透方案,并在此基础上搭建了能够实现NAT穿透功能的STUN/TURN/ICE服务器。(3)设计并实现客户端各个模块功能。在Ubuntu平台搭建WebRTC安卓端的下载编译环境,下载编译WebRTC安卓端底层源码。通过对底层源码封装及调用实现了客户端的音视频采集及传输功能。为了弥补UDP通信的丢包问题,引入NACK机制;同时还嵌入了带宽自适应功能以适应不断变换的网络带宽。(4)对主要功能进行测试并收集分析主要数据。分别对同一应用和不同应用之间的音视频通信功能进行测试。测试结果表明,本系统具有跨应用终端的特点,系统可以根据网络条件的不同动态调节帧率。通话时丢包率基本保持在6%-7%之间,CPU占用率为10%左右,延时时间基本处于80ms左右。本文设计的基于WebRTC的音视频通信系统模块分工明确、易于维护、可扩展性强。同时引入NACK丢包重传功能,有效减少了实时通信场合中数据包的丢失。本课题的研究成果对于音视频实时通信的设计具有实际应用价值。