公开/公告号CN102497433A
专利类型发明专利
公开/公告日2012-06-13
原文格式PDF
申请/专利权人 乐视网信息技术(北京)股份有限公司;
申请/专利号CN201110423174.5
申请日2011-12-16
分类号
代理机构北京驰纳智财知识产权代理事务所(普通合伙);
代理人谢亮
地址 100026 北京市朝阳区光华路4号东方梅地亚中心C座8层
入库时间 2023-12-18 05:25:47
法律状态公告日
法律状态信息
法律状态
2023-09-01
专利权的保全 IPC(主分类):H04L29/08 专利号:ZL2011104231745 申请日:20111216 授权公告日:20150415 登记生效日:20230811 解除日:
专利权的保全及其解除
2015-04-15
授权
授权
2012-07-18
实质审查的生效 IPC(主分类):H04L29/08 申请日:20111216
实质审查的生效
2012-06-13
公开
公开
技术领域
本发明涉及互联网视频技术领域,更具体地,涉及一种网页FLASH PLAYER实现P2P的系统和方法 。
背景技术
近年来,互联网视频业务发展迅速,越来越多的网民在专业的视频网站上长时间收看高清影视剧等视频内容。现有的互联网视频业务基本上是由互联网视频网站的服务器保存视频文件并以流媒体的形式将视频内容实时传送给用户端设备,用户通过本地设备的FLASH PLAYER在网页上播放和观赏相应的视频流。然而,视频流量的急速增加,给视频网站后端服务器带来巨大的压力,视频网站运营商只能被动地通过不停地增加服务器设备来减轻压力,也大大增加了运营成本。
P2P技术是将客户端节点(下文称为peer节点)视为对等节点,允许peer节点相互之间进行通信,peer节点可以从其他对等节点上下载数据,也可以将自身拥有的数据上传到其他peer节点。由此,可以在很大程度上缓解网站后端服务器的流量压力,并且充分利用了peer节点之间的带宽资源。然而,现有技术中还没有将P2P传输应用到互联网的在线视频播放的先例。
发明内容
基于现有互联网视频网站的上述需求,本发明提供了一种网页FLASH PLAYER实现P2P的系统和方法。用户在网页上是通过Flash Player收看视频的,本发明基于FLASH PLAYER实现peer节点之间的P2P通信和视频内容的P2P传输,从而最大限度利用了大量peer节点之间的带宽而降低了视频网站服务器的流量压力。
首先,介绍一下实现本发明所涉及的两个重要概念:一为组播,即把信息同时传递给一组目的地址。二为RTMFP,RTMFP是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。用Adobe AIR框架开发的程序也可以用此协议来发布直播、实时信息。RTMFP的数据在终端用户之间流动,而不是和服务器,因此很适合于大范围的部署。RTMFP因为采用了UDP也提升了传送的速度。UDP是Internet上一种更有效传送音频视频的方法,虽然会有一些丢包,错包。RTMFP有两个特性可以帮助解决一些连接错误:(1)快速连接恢复:连接在意外情况下将快速恢复。例如,一个无线连接掉线了,一旦重连,它将迅速拥有所有的传送能力;(2)IP动态化:一个活动的网络会话将以PEER来标识,即使它变了一个IP,也可以保持原来的会话。例如,一个笔记本在一个新的无线网络环境下获得了一个新IP地址,它将立刻继续刚才的会话。
本发明提供一种网页FLASH PLAYER实现P2P的系统,包括服务器侧系统和客户端节点,其特征在于,
所述服务器侧系统包括:流媒体服务器,用于存储和向客户端节点传输媒体文件数据;以及P2P服务器,用于存储各客户端节点信息;
所述客户端节点从所述流媒体服务器下载媒体文件数据,也可以通过FLASH PLAYER与其它客户端节点进行媒体文件数据传输。
优选地,若干个所述客户端节点组成一个P2P组,P2P组内的客户端节点可以进行消息和媒体文件数据的传输。进一步优选地,所述客户端节点通过IP组播或手动添加与所述P2P组内的其它客户端节点建立连接并向其它客户端节点分发消息。
优选地,所述媒体文件被划分为若干个分块,所述客户端节点可以从服务器侧系统下载和存储至少一个所述分块,并且,所述客户端可以从其它客户端节点下载或向其它客户端分发所述分块。进一步优选地,所述客户端节点向所述P2P服务器上报自身所存储的所述分块,并且可以向所述P2P服务器请求自身所需要的分块;所述P2P服务器向发起请求的客户端节点返回存储有该节点所需要的分块的客户端节点地址;所述发起请求的客户端节点建立与所述被返回的客户端节点地址的连接并取得所述所需要的分块。
优选地,客户端节点通过Action Script语言编程基于RTMFP实现消息和媒体文件的数据传输。
本发明进一步提供了一种网页FLASH PLAYER实现P2P的方法,其特征在于,包括以下步骤:
客户端节点与服务器侧系统建立连接;
所述客户端节点加入P2P组;
所述客户端与所述P2P组内的其它客户端节点建立连接并向其它客户端节点分发消息;
所述客户端从所述服务器侧系统下载媒体文件数据,也可以通过FLASH PLAYER与所述其它客户端节点进行媒体文件数据传输。
优选地,所述方法进一步包括:将所述媒体文件划分为若干个分块,所述客户端节点从服务器侧系统下载和存储至少一个所述分块;所述客户端可以从其它客户端节点下载或向其它客户端分发所述分块。进一步优选地,所述客户端节点向所述服务器侧系统上报自身所存储的所述分块,并且可以向所述服务器侧请求自身所需要的分块;所述服务器侧系统向发起请求的客户端节点返回存储有该节点所需要的分块的客户端节点地址;所述发起请求的客户端节点建立与所述被返回的客户端节点地址的连接并取得所述所需要的分块。
优选地,所述客户端节点通过Action Script语言编程基于RTMFP实现消息和媒体文件的数据传输。
本发明建立基于P2P架构的互联网在线视频系统,将各客户端节点视为对等节点,使客户端节点之间可以相互传输媒体文件数据,利用了客户端节点之间的带宽资源,相比传统的互联网视频业务的网络架构,缓解了视频网站服务器的流量压力,提高了视频传输效率,改善了用户体验。
附图说明
图1是本发明实施例的系统架构示意图;
图2是本发明实施例的peer节点传输数据示意图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合具体实施方式并配合附图详予说明。
图1是本发明实施例的系统架构示意图。本发明须采用Adobe公司的Flash Player 10.1作为终端播放器,在作为客户端节点的各个peer节点10均安装Flash Player 10.1,并且基于上述RTMFP协议让使用Adobe Flash Player的peer节点之间进行直接通信。FMS4 20与Stratus 30构成服务器侧系统。其中,FMS4 20作为流媒体服务器,用于存储和向客户端节点传输媒体文件数据;Stratus 30为P2P服务器,存储各个peer节点10的信息等。如图1中的箭头所示,各peer节点10可以从所述流媒体服务器FMS4 20下载媒体文件数据,也可以通过FLASH PLAYER与其它客户端节点进行媒体文件数据传输。
图2是peer节点之间传输数据示意图。如图2所示,peer节点A、B、C是组成一个P2P组的三个节点,P2P组内的peer节点可以进行消息和媒体文件数据的传输。节点间数据传输的过程为:
a. 一个完整的媒体文件被划分为6块,并被编号为1-6;
b. peer节点A从服务器侧系统的流媒体服务器下载了第2、第3块,peer节点B从服务侧系统下载了第5、第6块,peer节点C从服务侧系统下载了第1、第4块;
c. peer节点A将自身存储的第2、第3块分发给peer节点B、C,同理,peer节点B将自身存储的第5、第6块分发给peer节点A、C,peer节点C将自身存储的第1、第4块分发给peer节点A、B;
d. peer节点之间的数据传输完成后,A、B、C各自均存储了完整的文件。
下面结合图1-2介绍本发明的网页FLASH PLAYER实现P2P的方法。Adobe的Flash Player 10.1+ FMS4+Stratus架构,并不直接支持P2P(包括消息分发、分布式存储),需要在Peer节点上使用Action Script语言编程基于RTMFP实现消息和媒体文件的P2P数据传输。
1. 与服务器侧系统建立连接
建立一个新的连接类对象netConn,并调用其connect()成员函数与服务侧建立连接,并获取Key:
netConn.connect( “rtmfp://stratus.adobe.com/my-developer-key” );
2. 加入P2P组
编写类如下列程序,将该Peer节点加入P2P对等网络组:
a. 新建立将要加入的P2P组的描述符:
groupSpec:GroupSpecifier = new GroupSpecifier(“GroupName”);
b. 设置P2P组的属性,允许分发,允许服务侧系统在P2P分发过程中起协助作用:
groupSpec.postingEnabled = true;
groupSpec.serverChannelEnabled = true;
c. 加入该P2P组:
netGroup=newNetGroup(netConn,groupSpec.groupspecWithAuthorizations() );
3. 与组内的其他Peer节点建立连接:
有两种方式可以将该Peer节点与组内的其他Peer节点联系在一起:
a. IP组播发现:
GroupSpecifier.ipMulticastMemberUpdatedEnabled = true;
GroupSpecifier.addIPMulticastAddress(address:String);
b. 手动添加:
NetGroup.addNeighbor(peerID:String);
4. 向其他Peer节点分发消息
例如,向组内的Peer节点分发消息“Hi,All!”,编程实现如下:
varmsg:Object = new Object();
msg.text = “Hi, All!”;
msg.sender = netConn.nearID;
netGroup.post (msg);
5. 在上述基础上,可以进一步实现文件的分布式存储和P2P传输。即peer节点从所述服务器侧系统下载媒体文件数据,也可以通过FLASH PLAYER与所述其它peer节点进行媒体文件数据传输。Peer节点之间的媒体文件分块传输过程如下:
1)Peer节点A向Stratus 30上报自身存储的文件分块1和5:
NetGroup.addHaveObjects( 1, 5 );
2)Peer节点B想要分块5,向Stratus 30发起请求:
NetGroup.addWantObjects( 5 );
3)Stratus 30向Peer节点B返回Peer节点A的地址,Peer节点B与Peer节点A建立通信,Peer节点A将分块5写入Peer节点B。
综上所述,本发明建立基于P2P架构的互联网在线视频系统,将各客户端节点视为对等节点,使客户端节点之间可以相互传输媒体文件数据,利用了客户端节点之间的带宽资源,相比传统的互联网视频业务的网络架构,缓解了视频网站服务器的流量压力,提高了视频传输效率,改善了用户体验。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
机译: 在网页上实现p2p通信的方法。
机译: “在网页上实现p2p视频通信的方法”。
机译: 在网页上实现P2P视频通信的方法