一种基于 BitTorrent 的客户端及其视频点播方法 【技术领域】
本发明涉及流媒体技术领域,尤其是涉及一种基于 BitTorrent 的 P2P 点播系统和方法。 背景技术
利用 P2P 技术实现大规模的点播和直播服务基本涵盖了 P2P 视频应用最主流的两 个方向,它们分别面向着不同的市场和受众群。 然而用户的需求是多方面的,因此这两 个方向其实都有着很大的市场空间。 由于 P2P 点播比 P2P 直播在用户自由度以及视频资 源的可选择方面显著加强,因此从某种层面上说点播实现的难度更大一些。
现 在 诸 多 传 统 的 p2p 视 频 开 发 商 也 都 推 出 了 各 自 的 点 播 服 务, pplive, ppstream,迅雷看看, qqlive 等,但是由于点播当中的高度交互性需求,使得实现的复杂 程度较高。
经过几年的发展 BitTorrent 协议在世界各地爱好者的努力下逐步完善,它的优势 是如果有多个下载者并发的下载同一个文件,那么每个下载者也同时为其它下载者上传 文件,这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的增长。 这是 因为大量的负载被均衡到整个系统中,所以提供源文件的机器的负载只有少量增长。 发明内容
本发明是鉴于上述技术问题而产生的。 本发明的一个目的是提出一种基于 BitTorrent 的客户端及其视频点播方法。
在一个方面中,根据本发明的基于 BitTorrent 的 P2P 客户端包括 :会话管理模 块,用于对点击链接的频道信息中的 torrent 文件进行解码并在网络中搜寻拥有该 torrent 文件内容的连接对象 ;内容获取模块,用于与拥有 torrent 文件内容的连接对象相连并获 取数据内容 ;以及播放模块用于播放下载就绪的内容。
在这个方面中,其中会话管理模块进一步包括 :解码单元,用于对 torrent 文件 进行解码以获得 torrent 内容,其中该 torrent 内容包括 n 个文件块 ;文件管理单元,用于 根据所述 n 个文件块来划分相应视频大小的镜像空间并对应编号 ;以及启动下载单元, 用于执行各个文件块的启动下载。
在这个方面中,其中内容获取模块进一步包括 :libtorrent 节点选择接口,用于 筛选拥有各个文件块的连接对象 ;libtorrent 的上传下载接口,用于从连接对象获取相应 的数据块 ;以及填充单元,用于将获取的数据块填充到在相应编号的镜像空间上。
在这个方面中,其中连接对象是 SP 和 / 或其他客户端。
在另一个方面中,根据本发明的基于 BitTorrent 的客户端视频点播方法包括步 骤 :A、对点击链接的频道信息中的 torrent 文件进行解码并在网络中搜寻拥有该 torrent 文 件内容的连接对象 ;B、与拥有 torrent 文件内容的连接对象相连并获取频道内容 ;以及 C、播放下载就绪的内容。在这个方面中,其中步骤 A 进一步包括步骤 :A1、解码单元对 torrent 文件进行 解码以获得 torrent 内容,其中该 torrent 内容包括 n 个文件块 ;A2、文件管理单元根据所 述 n 个文件块来划分相应视频大小的镜像空间并对应编号 ;以及 A3、启动下载单元执行 各个文件块的启动下载。
在这个方面中,其中步骤 B 进一步包括步骤 :B1、 libtorrent 节点选择接口筛选 拥有各个文件块的连接对象 ;B2、 libtorrent 的上传下载接口从连接对象获取相应的数据 块 ;以及 B3、填充单元将获取的数据块填充到在相应编号的镜像空间上。
在这个方面中,其中连接对象是 SP 和 / 或其他客户端。
本发明基于成熟的 bittorrent 协议,能够迅速搭建起性能优异的整个 p2p 平台,而 不需要考虑到底层的数据传输细节,并且相对公开的 bittorrent 协议及用户基数能够提高 用户体验。 附图说明 结合随后的附图,从下面的详细说明中可显而易见的得出本发明的上述及其他 目的、特征及优点。 在附图中 :
图 1 示出了根据本发明的基于 BitTorrent 的客户端所应用的 P2P 系统的示意图 ; 图 2 示出了根据本发明的基于 BitTorrent 的客户端的详细方框图 ; 图 3 示出了根据本发明的基于 BitTorrent 的客户端的子方框图 ; 图 4 示出了根据本发明的基于 BitTorrent 的客户端的另一子详细方框图 ; 图 5 示出了根据本发明的基于 BitTorrent 的客户端视频点播方法的流程图 ; 图 6 示出了根据本发明的基于 BitTorrent 的客户端视频点播方法的子流程图 ; 图 7 示出了 torrent 文件内容的示例 ; 图 8 示出了根据本发明的基于 BitTorrent 的客户端视频点播方法的另一子流程图。 具体实施方式
为了更全面地理解本发明及其优点,下面结合附图及具体实施例对本发明做进 一步详细地说明。
首先,参考图 1,对根据本发明的基于 BitTorrent 的客户端所应用的 P2P 系统进 行详细的说明。
如图 1 所示,该系统包括客户端 (TelePlayer)、控制中心 (Control Center) 服务 器、多个 TS(Tracker) 服务器、以及多个 SP 服务器。
客户端用于输入频道信息,从相对空闲的 SP 服务器或者其他客户端获取片源播 放。 随后对此进行详细地说明。
控制中心服务器用于根据客户端输入的频道信息和记载在数据库中的各个 TS 的 负载信息,向客户端分配相对闲置的 TS 服务器,从而使得系统能够支持多 Tracker 服务 器,不会因为系统的用户扩张而引起 Tracker 服务器的瓶颈问题。
多个 TS 服务器中的相对闲置的 TS 服务器用于根据从客户端发送而来的频道信 息,查找拥有该节目且处于相对空闲的 SP 服务器,并将 SP 服务器列表返回给客户端。此外,在 TS 服务器的负载发生变化时要向控制中心服务器汇报自己的负载信息,并以此 作为分配 Tracker 服务器的依据。
多个 SP 服务器中的相对空闲的 SP 服务器用于向相连的客户端提供片源。
下面,参考图 2,对根据本发明的基于 BitTorrent 的客户端进行更详细地说明。
如图 2 所示,根据本发明的基于 BitTorrent 的客户端包括会话管理模块、内容获 取模块、以及播放模块。
会话管理模块用于对点击链接的频道信息中的 torrent 文件进行解码并在整个 p2p 网络中搜寻拥有 torrent 文件内容的连接对象。 其中该连接对象是 SP 和 / 或其它客户端。
具体地说,如图 3 所示,会话管理模块包括 :解码模块、文件管理模块、启动 下载模块。
解码单元对 torrent 文件进行解码以获得 torrent 内容,其中该 torrent 内容包括 n 个文件块。 此外,优选地,将 torrent 内容按序排列到命令执行队列中。
文件管理单元根据各个文件块信息划分相应视频大小的镜像空间并对应编号。
启动下载单元执行各个文件块的启动下载。
内容获取模块与拥有 torrent 文件的连接对象相连,并获取频道内容。
具体地说,如图 4 所示,内容获取模块包括 :
libtorrent 节点选择接口用于筛选拥有该区块的连接对象。
libtorrent 的上传下载接口用于从连接对象获取相应的数据块 ;
填充单元用于将获取的数据块填充到相应编号的镜像空间上。
播放模块用于播放下载就绪的内容。
接下来,结合 2-4,并且参考图 5,对根据本发明的基于 BitTorrent 的客户端视频 点播流程进行详细地说明。 应该注意的是客户端既可以从 SP 服务器获取数据,也可以从 其它客户端获取数据。
如图 5 所示,该方法包括步骤 :
步骤 A :通过点击链接获得点播频道信息。 其中链接例如为 http://ip/x.torrent ? id = 24&&genre = MTV&&content。 频道信息为 torrent 格式,例如上述链接示例中的 id = 24&&genre = MTV&&content 即为频道信息,并且其中 x.torrent 文件存储在相应 SP 服 务器中, ip 是存储 x.torrent 文件的 SP 服务器的地址。
步骤 B :会话管理模块对频道信息中的 torrent 文件进行解码并在整个网络中搜 寻拥有 torrent 文件内容的连接对象。 其中该连接对象是 SP 和 / 或其它客户端。
具体地说,如图 6 所示,该步骤进一步包括 :
步骤 B1 :解码单元对 torrent 文件进行解码以获得 torrent 内容,其中该 torrent 内 容包括 n 个文件块。 此外,优选地,将 torrent 内容按序排列到命令执行队列中。
具体地说,根据点播频道信息中的 ip( 存储 x.torrent 文件的 SP 服务器的地址 ) 获 得 torrent 文件,对该 torrent 文件进行解码以获得 torrent 文件内容,并将其排列到命令执 行队列中。
图 7 给出了 torrent 文件内容的示例。如图 7 所示,该 torrent 文件内容包括 Tracker 信息、发布者信息、以及 Info 结构,其中 Info 结构进一步包括块信息和文件块 1、文件块 2、......、文件块 n。 其中各文件块结构包含如下子项 :Piece length( 块长度 )、Name( 文件名 )、 Length( 文件大小 )、以及 Md5,其中 Piece length 是整数,用于表示每块的大 小。 Name 是字符串,用于表示文件名。 Length 是整数,用于表示文件大小。 Md5 用 于表示文件的 md5 值,其包含 32 个字符。
当然, torrent 文件的格式并不局限于此,而是可根据需要而采用任何适当的格 式。
步骤 B2 :文件管理单元根据各个文件块信息划分相应视频大小的镜像空间并编 号,如下所示。
镜像块 1 镜像块 2 镜像块 3 ......
镜像块 n步骤 B3 :启动下载单元执行各个文件块的启动下载。
具体地说,会话管理模块指示命令执行队列顺序启动加载各文件块 (1 ~ n) 内 容,并且根据各文件块的信息开始在整个网络中搜寻下载该块。 应该注意的是启动下载 并在网络中搜索该块为本领域普通技术人员所公知的技术,因此在这里不再详述。
步骤 C :内容获取模块与拥有各个 torrent 文件块的连接对象相连,并获取频道 内容。 也就是说,客户端与 TS 发回的拥有该频道内容的 SP 和 / 或其它客户端的地址相 连,并获取频道内容。 应该注意的是 TS 发回拥有该频道内容的 SP 和 / 或其它客户端的 地址为本领域普通技术人员所公知的技术,因此在这里不再详述。
具体地说,如图 5 所示,该步骤进一步包括 :
步骤 C1 :libtorrent 节点选择接口筛选拥有该区块的 SP 和 / 或其他客户端 ;
步骤 C2 :libtorrent 的上传下载接口从连接对象获取相应的数据块 ;
步骤 C3 :填充单元将获取的数据块填充到在步骤 B2 所划分的相应编号的镜像 空间上。
步骤 D :播放模块播放下载就绪的视频内容。
通过上述可知,本发明的优点是传输模块基于成熟的 bittorrent 协议完成的,能 够迅速搭建起性能优异的整个 p2p 平台,而不需要考虑到底层的数据传输细节,减少开 发周期过长的风险 ;并且拥有跨平台的特性,便于移植到各种终端 ( 机顶盒等 ) ;相对公 开的 bittorrent 协议及用户基数能够提高用户体验。
此外,对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。 因 此,具有更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实 施例。 因此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围 的情况下,可对其做出各种修改。