p2p在线高清视频点播系统的设计与实现_第1页
p2p在线高清视频点播系统的设计与实现_第2页
p2p在线高清视频点播系统的设计与实现_第3页
p2p在线高清视频点播系统的设计与实现_第4页
p2p在线高清视频点播系统的设计与实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

p2p在线高清视频点播系统的设计与实现

随着科学技术的日新月异,手机已经发生了无数的变化。由于手机视频技术在手机平台上的应用速度较慢,手机处理能力受到限制,手机视频视频的视频质量仍然无法像pc平台那样实现高分辨率。目前手机视频播放主要还是基于J2ME技术、Symbian平台、Android平台等来实现。最近几年,P2P(Peer-to-Peer)又成为因特网上的一个热点,P2P是因特网的一种应用模式,其意思是指网络上的任何设备(包括大型机、PC机、PDA、手机、机顶盒等等)都可以平等地直接进行连接并进行协作,相比当前因特网上的主流应用模式C/S或者B/S而言,P2P具有自己鲜明的特点和优势。P2P流媒体播放技术在PC端已经得到了广泛的应用,而在手机客户端,由于受制于2.5G网络带宽的限制,这仍然是一片空白。在3G网络日趋成熟,无线带宽逐步提高的今天,基于P2P技术的应用程序部署在手机客户端已经不再是天方夜谭。借助Android操作系统以及3G网络的支持,开发一个P2P在线高清视频点播系统具有广阔的应用前景。1android环境Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android是一个分层的环境,构建在Linux内核的基础上,它包括丰富的功能。Android包括一个构建在WebKit基础上的可嵌入浏览器,Android提供多种连接选项,包括WiFi、蓝牙和通过蜂窝连接的无线数据传输(如GPRS、EDGE和3G)。Android运行在Linux内核上。Android应用程序是用Java编程语言编写的,它们在一个虚拟机(VM)中运行。每个Android应用程序都在DalvikVM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中,如图1所示。2p2p技术特点近几年,P2P(Peer-to-Peer)成为因特网上的一个热点。P2P是因特网的一种应用模式,其意思是指网络上的任何设备(包括大型机、PC机、PDA、手机、机顶盒等等)都可以平等地直接进行连接并进行协作。P2P节点不依赖中心节点而是依靠网络边缘节点,实现自组织与对等协作的资源发现和共享,因此拥有自组织、可扩展性、鲁棒性、容错性以及负载均衡等优点。P2P技术被广泛应用于文件共享、网络视频、网络电话等领域,以分布式资源共享和并行传输的特点,为用户提供了更多的资源、更高的可用带宽以及更好的服务质量。目前P2P流媒体关键技术主要包括文件定位技术、节点的选择、容错机制、安全机制等。3流观看技术模块该系统意在实现手机终端上进行高清视频的在线点播,主要任务包括实现P2P网络服务的架设、实现P2P服务器的架设、实现视频源服务器的架设、实现P2P种子服务器的架设、实现Android平台的JXTA技术、实现Android平台的视频流播放技术、实现Android平台的视频播放与控制技术。(1)系统的功能如下:1)初始化P2P网络,自动搜索P2P集合点。2)读取集合点节点列表。3)读取播放列表。4)通过播放列表种子服务器搜索片源种子。5)在集合点中搜索片源种子。6)连接片源种子节点,请求传输。7)种子节点接到请求,进行握手,握手完成后开始传输数据。8)数据缓冲完成后开始播放影片。(2)系统的功能模块如图2所示。(3)开发环境1)操作系统:MicrosoftWindowsXPProfessional。2)程序语言:Android,Java。3)开发包:JDK1.6,AndroidSDK1.5,JXTA。4)IDE:Eclipse3.5.1,ADTplugin。4系统总体流程该系统主要通过JXTA协议,构建一个P2P网络,在网络中设置有若干个PC机节点和手机节点,每个节点中都有共享文件,任意节点可通过P2P网络集合点访问其他节点的共享资源。系统启动时首先进行初始化,初始化过程会检查缓存情况、启动JXTA网络连接,启动之后将搜索JXTA网络集合点RDV,读取集合点上的Peer列表。待初始化完毕之后,系统等待用户的视频点播请求,点播之后系统向集合点请求资源,集合点将相应的节点列表反馈给请求节点,接到反馈的节点列表之后,系统向相应的节点发送文件传输请求,经握手后即开始传输数据,传输过程将检查缓存情况,待缓存完毕之后即可开始播放视频,系统的主要流程如图3所示。该系统的P2P网络主要由3个部分组成,分别是Android平台节点、PC平台节点和Peer集合点,其中Peer集合点负责收集和发送节点列表信息,起到一个系统调度的作用,各节点可以通过集合点获取存在的节点列表,通过该列表,即可对该对等网络中的任意节点进行访问,接收和发送数据,该系统的整体结构示意图如图4所示。5功能菜单设计播放器由播放功能单元和功能菜单组成,播放器可以实现视频播放功能,功能菜单作为播放功能的辅助选项可以让用户选择播放文件、查看系统状态、进行系统设置、进行P2P聊天等功能。系统主界面如图5所示,顶端为标题栏,紧接着视频播放窗口和播放器控制按钮,最下方为Menu功能菜单。5.1actity接口播放器的主控界面如图6所示,该播放器主要通过调用AndroidAPI中的MediaPlayer类来实现,首先要在Activity里创建SurfaceView,这个View与控制SurfaceView的SurfaceHolder对象,搭配MediaPlayer的SetDisplay()方法来制定要将图像显示于指定的SurfaceView之上。要在Activity里面配置SurfaceView,必须让Activity实现SurfaceHolder.Callback接口,在Activity当中覆盖surfaceChanged()与surfaceDestroyed()方法。主程序构建了MediaPlayer()对象,通过MediaPlayer.setDisplay(SurfaceHolder)方法,让MediaPlayer播放影片时,将图像显示在指定的SurfaceView中,播放器主要方法的相关代码如下:5.2生成主题函数Menu功能菜单如图5所示,实现Menu功能菜单主要通过手机接口的MenuShotcut,也就是所谓的MenuKey。程序除了默认覆盖的OnCreat之外,还需要另外新建两个类函数:onCreatoptionsMenu()与onOptionsItemSelected(),前者为创建Menu菜单的项目,后者是处理菜单被选择运行后的时间处理。以下是onCreatoptionsMenu()与onOptionsItemSelected()的源代码:5.3方便用户选择用户表信息该系统的播放列表界面如图7所示,该界面展现了当前读取的XML文件中的播放列表信息,方便用户进行选择。该播放列表主要通过AlertDialog.Builder方法类来实现,通过加载读取的XML文件,就可以把信息显示于屏上。播放列表的AlertDialog.Builder调用方法,相关代码如下:5.4基于adpertsing的请求支持该程序主要用于对网络上的Peer节点进行搜索,维护一个节点列表。该搜索程序通过JXTA对等机发现协议(PDP)进行节点搜索,PeerDiscoveryProtocol(PDP)定义了发现其他Peer和资源的协议,该协议包括两个方面,一方面用于请求获得其他Peer的Advertisement;另一方面用于相应其他Peer的这种请求。Peers给所有已知的Peer和RendezvousPeer发送一个DiscoveryQueryMessage,RendezvousPeer对discovery请求进行处理,并返回一个DiscoveryResponseMessage,其中包含它缓存中的advertisement。另外,它还把这个请求广播给所有知道的Peer,收到请求的Peer搜索本地缓存寻找匹配的advertisement,如果找到,就直接给最初的请求方发送一个DiscoveryResponseMessage。该程序运行在一个线程(Thread)中,在该线程中,执行一个循环,每隔60*1000毫秒获取一次节点列表。节点搜索线程代码如下:5.5pipewelling东南角文件发送的实现是利用P2PSocket编写的程序,可以在任意Peer之间对等地传输文件。该程序通过JXTA管道绑定协议,由Pipe向远程Peer发送文件,文件将以流的形式传递,通过PipeMsgEvent实现PipeMsgListener,每次当有消息传送到管道的时候,事件将被捕获。通过doFileListRequest处理共享文件列表的请求,向对方发送包含共享文件名的列表的消息。在一个线程中执行一个循环,同过JXTA网络进行文件资源广播,如果得到回应就进行资源请求确认,确认完成之后调用this.socketService.sendFile()函数发送当前文件资源,文件发送循环程序的相关代码如下:5.6基于约束的pla网络节点列表收集主要完成启动并初始化JXTA网络,形成一个网络集合点RendezvousPeer,集合点服务的主要功能是允许Peer向网络上的其他Peer传播消息。该集合点可以监听到所有相邻网络请求连接的Peer节点,包括PC机模拟节点和Android手机节点,通过一个节点列表对当前节点的信息进行维护,接收节点的连接与退出请求。该结合点类的设计主要是通过集合点协议RVP(RendezvousProtocol),简单Peer运用该协议同集合点相连接,由集合点代表自己向其他Peer传播消息。RVP的实现扮演双重角色,为传播消息提供了统一的API,该功能不依赖Peer是否配置成集合点。节点收集类PeerDroid_RDV的相关代码如下:6androidi视频技术的实现虽然在PC机上JXTA可以完美运行,但要把JXTA平台完全移植到Android上并不是一件容易的事情。PeerDroid框架将JXTA中专门用于移动开发的JXME平台完美的移植到了Android平台。本系统借助PeerDroid搭建一个JXTA网络,一个虚拟PC机节点,一个Android节点,实现了Android和PC节点之间互传文件。通过AndroidAPI实现了视频的播放与控制。最后,将Android视频播放器与PeerDroid进行整合,通过点播请求传输文件,然后播放视频。借助3G网络,Android未来的市场占有率将望超过Symbian平台。文件接收的实现通过J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论