基于P2P技术的直播时移系统及其方法转让专利

申请号 : CN201010127346.X

文献号 : CN101795297B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘怀宇欧阳定恒

申请人 : 北京天天宽广网络科技有限公司

摘要 :

本发明基于P2P技术的直播时移系统及其方法,该系统包括设置在服务器端的编码服务器、直播服务器和控制服务器;该方法包括:编码服务器将接收到直播视频数据流分割为固定大小的直播视频数据包,然后为每个直播视频数据包添加直播频道信息和时间信息;并将编码后的直播视频数据包分发给直播服务器,并向控制服务器发出当前控制信息;直播服务器持续从编码服务器获得直播视频数据包;客户端申请收看视频数据时,先向控制服务器发送视频请求,控制服务器将视频数据的存储信息返回给客户端,客户端通过建立的数据链路获得视频数据。本发明的服务器端和客户端同时能够支持基于P2P技术的直播时移功能;可以支持大规模并发应用。

权利要求 :

1.一种基于P2P技术的直播时移系统,包括设置在服务器端的编码服务器、直播服务器和控制服务器;其特征在于,

编码服务器:用于从直播信号源接收经过直播视频数据流,将直播视频数据流分拆为固定大小的直播视频数据包,并为每个直播视频数据包中增加频道号和时间信息;

直播服务器:用于直播和存储某个频道的直播视频数据包;并向多个客户端同时提供直播视频,或提供直播时移视频;

控制服务器:用于处理客户端发出的视频请求,为客户端提供视频数据的存储信息;

该控制服务器设置有直播信息列表,直播时移信息列表,每个直播频道的节目单;直播信息列表中包含直播频道与该直播频道的服务器信息,以及当前收看该直播频道的客户端的信息列表;当客户端停止收看直播视频时,控制服务器将清除直播信息列表中该客户端的记录;直播时移信息列表中包含直播频道与存储了该直播频道视频数据的直播服务器,以及客户端的信息列表,只要直播服务器或客户端存储有视频数据,则控制服务器将直播服务器或客户端的记录保留在直播时移信息列表中。

2.一种基于P2P技术的直播时移方法,其特征在于,包括以下步骤:

1)服务器端的编码服务器从直播视频数据源接收直播视频数据流,首先将直播视频数据流分割为固定大小的直播视频数据包,然后为每个直播视频数据包添加直播频道信息和时间信息;

编码服务器将编码后的直播视频数据包分发给直播服务器,并向控制服务器发出当前编码的直播频道、当前接收直播视频数据包的直播服务器信息、以及编码重启或编码故障控制信息;

2)服务器端的直播服务器建有一个内存缓冲区,服务器端的内存缓冲区大小设置为存储固定时间长度的直播视频数据包;直播服务器持续从编码服务器获得直播视频数据包,并写入该服务器端的内存缓冲区,当直播服务器的内存缓冲区被占满后,时间最早的直播视频数据包被丢弃,空余出的存储缓冲区被用来放置时间最新的直播视频数据包;

直播服务器同时建有一个磁盘存储空间,直播服务器将放置到服务器端内存缓冲区的直播视频数据包,按照规定的时间间隔写入在磁盘存储空间中,并且在写入磁盘缓冲区之前,清除每个单独直播视频数据包的直播频道信息和时间信息,将把一个时间间隔写磁盘存储空间的所有直播视频数据包合并为一个直播视频数据文件;将直播视频数据文件的频道信息和时间信息作为视频数据文件的文件名称,并将该视频数据文件的频道信息和时间信息提交给控制服务器;该频道信息和时间信息作为该视频数据文件的唯一标识信息;

直播服务器使用内存缓冲区中的直播视频数据包提供P2P直播服务,或使服务器端的内存缓冲区中的直播视频数据包提供直播服务器的内存缓冲区时间长度范围之内的直播时移服务,或用磁盘存储空间上存储的直播视频内容提供超过直播服务器的内存缓冲区时间长度的直播时移服务;

3)客户端申请收看视频数据时,客户端首先向服务器端的控制服务器发送视频请求,视频请求中包含了频道信息和时间信息;根据客户端请求的视频开始时间以及直播服务器的内存缓冲区大小,控制服务器将视频数据的存储信息返回给客户端,客户端按照存储信息与直播服务器或其他客户端建立数据链路,通过建立的数据链路获得视频数据。

3.如权利要求2所述的方法,其特征在于,所述步骤3)根据客户端请求的视频开始时间以及直播服务器的内存缓冲区大小,控制服务器将视频数据的存储信息返回给客户端,客户端按照存储信息与直播服务器或其他客户端建立数据链路,通过建立的数据链路获得视频数据;具体包括以下三种情况:情况(1)客户端申请的直播视频的播放起始时间为当前时间:

控制服务器首先计算当前时间与客户请求的直播视频起始时间的差,若差值为0,则客户端的请求为直播视频请求,控制服务器查询直播信息列表,并将当前发布直播频道的直播服务器和当前收看直播频道的其他客户端的地址信息列表发送给客户端,客户端与列表中的直播服务器以及当前接收直播视频数据包的其他客户端建立数据链接,接收直播视频数据包;

客户端内建有一个内存缓冲区,一个磁盘缓冲区,并建有一个对照表;客户端在接收直播视频数据包时,将直播视频数据包放入客户端的内存缓冲区内,同时将直播视频数据包写入磁盘缓冲区;每个直播视频数据包写入磁盘缓冲区后,客户端在对照表中增加一条记录,记录直播视频数据包的频道信息、时间信息和在磁盘缓冲区内的存储信息;

客户端在将直播视频数据包写入磁盘缓冲区时,使用与直播服务器存储直播视频数据相同的命名规则,并在后面增加包的序号;客户端在将直播视频数据包写入磁盘缓冲区时还要对每个直播视频文件进行校验,并将校验结果放在直播视频文件后面,当其他客户端从该客户端接收直播视频数据文件时,如果校验结果与直播视频文件的校验结果不同,则丢弃该直播视频文件;

客户端将直播视频数据文件写入磁盘缓冲区中后的存储情况提交给控制服务器;

当客户端停止收看直播视频时,客户端中断所有直播视频数据包的传输数据链路,清除客户端的内存缓冲区内的直播视频数据包,删除对照表;

情况(2)客户端申请的直播视频的播放起始时间小于当前时间,大于当前时间减去直播服务器的内存缓冲区的时间长度数值的时间:控制服务器首先计算当前时间与客户请求的直播视频的播放起始时间的差,如果请求的直播视频的播放起始时间小于当前时间,并且大于当前时间减去直播服务器内存缓冲区的时间长度数值;则控制服务器判断该请求是一个直播服务器内存缓冲区范围内的直播时移视频请求;客户端申请的直播视频数据包存在于直播服务器的内存缓冲区中,并且当前收看相同频道的其他客户终端中存储了这些直播视频数据包;控制服务器查询直播信息列表,然后将当前直播该频道的直播服务器和当前收看该直播频道的其他客户端的连接信息发送给客户端,客户端与该直播服务器和其他客户端建立数据链接,获得时移时间小于直播服务器的内存缓冲区的时间长度数值的直播时移视频数据包;

客户端在收看时移时间小于直播服务器的内存缓冲区的时间长度数值的直播时移视频时,也建立内存缓冲区、磁盘缓冲区和对照表,并与所述情况(1)中的客户端一样完成文件存储工作、文件校验工作和存储信息提交工作;

情况(3)客户端申请的直播视频的播放起始时间小于当前时间减去直播服务器的内存缓冲区数值的时间:

控制服务器计算当前时间与客户请求的直播视频的播放起始时间的差,如果请求的直播视频的播放起始时间小于当前时间减去直播服务器内存缓冲区的时间长度数值;则控制服务器判断该请求是一个直播服务器内存缓冲区范围外的直播时移视频请求;客户端申请的直播视频数据包只存在于直播服务器的磁盘存储区中和存储了这些直播视频文件的其他客户终端磁盘缓冲区中;控制服务器查询直播时移信息列表,然后将存储了这些直播视频文件的直播服务器和其他客户端的连接信息发送给客户端,客户端与上述服务器和其他客户端建立数据链接,获得时移时间大于60分钟的直播时移视频数据包;

客户端在收看时移时间大于60分钟的直播时移视频时,也建立内存缓冲区、磁盘缓冲区;客户端的内存缓冲区、磁盘缓冲区的工作原理与(1)中描述的客户端的工作相同,区别是客户端收看的是时移时间大于直播服务器的内存缓冲区的时间长度数值的直播时移视频,直播视频数据是以直播视频文件方式传输;当该客户端收看直播时移视频时,客户端与情况(1)中的客户端一样完成文件存储工作、文件校验工作和存储信息提交工作;

客户端按照文件方式下载相应的直播视频文件,在播放的同时,将直播视频文件存储在磁盘缓冲区内;当该客户端停止收看直播时移视频时,客户端向控制服务器提交存储信息。

说明书 :

基于P2P技术的直播时移系统及其方法

技术领域

[0001] 本发明属于网络视频传输及应用技术领域,特别涉及一种将P2P技术与直播时移技术相结合的视频传输技术。

背景技术

[0002] 直播视频技术的应用已经非常广泛,电视就是一种被广泛应用的直播视频技术。直播视频技术特点是时效性,错过时间就无法收看到直播视频内容。对于希望收看直播视频内容,时间又无法保证的客户,要么等待重新直播视频内容,要么使用点播方式收看视频内容。但是直播视频内容是否重播,是否能够成为点播视频内容,以及点播视频内容的上线时间都无法确定。为了满足客户需求,出现了存储直播视频内容的技术,这种存储可以在服务器上实现,也可以通过客户端的存储设备实现。
[0003] 客户端实现方式,就是在客户端上配置存储设备,客户按照喜好设定需要存储的频道、存储的开始时间、结束时间等信息。这种方式的缺点是,客户端上的存储设备容量有限,只能存储一定数量的视频内容,并且存储设备在同一时间段内,一般只能存储一个频道的直播视频内容。当客户需要存储多个频道的直播视频内容,或者需要存储长时间的直播视频内容时,客户端存储设备就无法满足需求。另外,这种方式最大的问题是,客户需要按照节目单预先设定节目录制的频道和时间,对于突发事件,事先没有节目单,客户预先不知道直播视频内容的开始时间,也就没有办法设定存储信息,存储工作就无法进行。
[0004] 服务器端实现方式,就是在服务器上配置存储设备,存储所有频道的直播视频内容。当客户需要当前时间之前的某个频道的直播视频内容时,客户端向服务器发送请求,请求中包含了频道信息,直播视频数据的起始时间信息,例如当前时间为2009年12月15日12时0秒,客户请求收看频道A,起始时间为2009年12月1日11时35秒的直播视频数据,服务器收到客户端的请求后,查询频道A,起始时间2009年12月1日11时35秒的直播视频内容存储位置,服务器从直播视频内容存储位置上获得直播视频数据,并将直播视频数据发送给客户端,对于客户来说,就像是收看到经过时间移动后的直播视频内容,这种技术称之为直播时移技术。
[0005] 由于服务器端存储能力非常强,可以存储所有直播频道的全部直播视频内容,这样就可以满足客户对于不特定直播视频内容的收看需求。
[0006] 为了与直播视频区别,后面将时移后的直播视频统一称为直播时移视频。
[0007] 服务器存储的直播时移技术也已经比较成熟,名称为一种具有时移功能的直播服务器及实现方法的中国专利(公开号CN 101207795A,简称参考专利1)公开了一个非常具有代表性的服务器存储的直播时移技术。在该专利中,通过改造直播服务器,为直播服务器添加存储功能,这样直播服务服务器也可以作为时移服务器使用。在存储过程中,改造后的直播服务器在接收到直播视频源后,一边发布直播视频数据,一边存储直播视频数据,并给存储的直播视频数据加上视频属性和时间信息,这样就可以按照频道和时间信息索引为客户提供直播时移视频服务了。
[0008] 在已经公开的资料中,直播时移技术(包括参考专利1所涉及的技术在内)都是采用单播方式进行直播视频内容的传输,这种单播方式就是每个客户端与服务器建立一个数据通路,服务器资源占用数量与客户端数量线性相关,当客户端数量急剧增长时,服务器资源也呈现线性增长,这种单播方式不利于大规模应用。
[0009] 目前,P2P技术已经被广泛应用于视频传输业务中,名称为点对点流媒体通讯系统及其超级节点资源的配置方法的中国专利(公开号CN 101075954A简称参考专利2)就是一种非常具有代表性P2P视频传输技术方法。在参考专利2中,描述了一种基于P2P技术的,流媒体传输系统的实现方法。这种技术可以用于点播和直播业务中。
[0010] 在已经公开的P2P直播技术资料中,通常服务器端内存缓冲区时间长度数值为秒级别,一般150秒以内,因为内存缓冲的长度会影响客户终端的直播视频的播放时间延迟,时间延迟的增加将影响客户的观看效果。

发明内容

[0011] 本发明的目的是为克服已有直播时移技术的不足之处,提出一种基于P2P技术的直播时移系统及其方法,通过对服务器端和客户端进行改造,并在服务器端和客户端增加了P2P机制,使得服务器端和客户端同时能够支持基于P2P技术的直播时移功能;可以支持大规模并发应用。
[0012] 本发明提出的一种基于P2P技术的直播时移系统,包括设置在服务器端的编码服务器、直播服务器和控制服务器;其特征在于,
[0013] 编码服务器:用于从直播信号源接收经过直播视频数据流,将直播视频数据流分拆为固定大小的直播视频数据包,并为每个直播视频数据包中增加频道号和时间信息;
[0014] 直播服务器:用于直播和存储某个频道的直播视频数据包;并向多个客户端同时提供直播视频,或提供直播时移视频;
[0015] 控制服务器:用于处理客户端发出的视频请求,为客户端提供视频数据的存储信息;该控制服务器设置有直播信息列表,直播时移信息列表,每个直播频道的节目单;直播信息列表中包含直播频道与当前直播该直播频道的服务器,以及当前收看该当直播频道的客户端的信息列表;当客户端停止收看直播视频时,控制服务器将清除直播信息列表中该客户端的记录;直播时移信息列表中包含直播频道与存储了该直播频道视频数据的直播服务器,以及客户端的信息列表,只要直播服务器或客户端存储有视频数据,则控制服务器将直播服务器或客户端的记录保留在直播时移信息列表中。
[0016] 本发明还提出一种基于P2P技术的直播时移方法,其特征在于,包括以下步骤:
[0017] 1)服务器端的编码服务器从直播视频数据源接收直播视频数据流,首先将直播视频数据流分割为固定大小的直播视频数据包,然后为每个直播视频数据包添加直播频道信息和时间信息;
[0018] 编码服务器将编码后的直播视频数据包分发给直播服务器,并向控制服务器发出当前编码的直播频道、当前接收直播视频数据包的直播服务器、以及编码重启或编码故障控制信息;
[0019] 2)服务器端的直播服务器建有一个内存缓冲区,服务器端的内存缓冲区大小设置为存储固定时间长度的直播视频数据包;直播服务器持续从编码服务器获得直播视频数据包,并写入该服务器端的内存缓冲区,当直播服务器的内存缓冲区被占满后,时间最早的直播视频数据包被丢弃,空余出的存储缓冲区被用来放置时间最新的直播视频数据包;
[0020] 直播服务器同时建有一个磁盘存储空间,直播服务器将放置到服务器端内存缓冲区的直播视频数据包,按照规定的时间间隔写入在磁盘存储空间中,并且在写入磁盘缓冲区之前,清除每个单独直播视频数据包的直播频道信息和时间信息,将把一个时间间隔写磁盘存储空间的所有直播视频数据包合并为一个直播视频数据文件;将直播视频数据文件的频道信息和时间信息作为视频数据文件的文件名称,并将该视频数据文件的频道信息和时间信息提交给控制服务器;该频道信息和时间信息作为该视频数据文件的唯一标识信息;
[0021] 直播服务器使用内存缓冲区中的直播视频数据包提供P2P直播服务,或使服务器端的内存缓冲区中的直播视频数据包提供直播服务器的内存缓冲区时间长度范围之内的直播时移服务,或用磁盘存储空间上存储的直播视频内容提供超过直播服务器的内存缓冲区时间长度的直播时移服务。
[0022] 3)客户端申请收看视频数据时,客户端首先向服务器端的控制服务器发送视频请求,视频请求中包含了频道信息和时间信息;根据客户端请求的视频开始时间以及直播服务器的内存缓冲区大小,控制服务器将视频数据的存储信息返回给客户端,客户端按照存储信息与直播服务器或其他客户端建立数据链路,通过建立的数据链路获得视频数据[0023] 本发明的技术特点及有益效果:
[0024] 本发明采用在服务器端实现方式,通过对服务器端和客户端进行改造,并在服务器端增加了P2P机制,使得服务器端和客户端同时能够支持基于P2P技术的直播时移功能;可以支持大规模并发应用。
[0025] 本发明在编码服务器上进行了改造,在编码服务器增加了数据分拆程序,直播视频内容以数据流的形式从信号源发送到编码服务器上,编码服务器将直播视频数据流分拆为固定大小的直播视频数据包,并为每个数据包添加包头信息,这些信息包括频道号,时间信息等。编码服务器将编码后的直播视频数据包按照时间顺序发送给直播服务器。
[0026] 本发明在直播服务器上进行了改造,在直播服务器上增加了存储空间,直播服务器在直播视频数据的同时,将直播视频内容存储在直播服务器的存储空间内。本发明修改了直播服务器的缓冲区大小,在存储时,首先清除掉每个直播视频数据包的包头信息,将直播视频数据存储的时间间隔长的直播视频数据组合为一个视频文件,利用频道号和时间信息作为该视频文件的名称。
[0027] 本发明在客户端上进行了改造,在客户端上设置了内存缓冲区和磁盘缓冲区。客户端在接收直播视频数据的同时,将直播视频数据分别写入客户端的内存缓冲区和磁盘缓冲区。由于在客户端上,预留了磁盘存储空间。当客户端收看直播或直播时移视频内容时,接收到的视频数据会存储在磁盘存储空间上,并且客户端自动上报视频内容的存储情况(不论是直播视频数据,还是直播时移视频数据),这样客户端既可以支持P2P直播业务,也可以支持P2P直播时移业务。
[0028] 本发明的这种基于P2P技术的直播时移方法与已有的参考专利2基于P2P技术的点播和直播方法存在本质区别。本发明基础是基于P2P的直播技术,同时在基于P2P的直播技术基础上增加了服务器和客户端的存储功能,这样就可以提供基于P2P的直播时移技术。同时本发明也采用了基于P2P的点播技术,但是将这些点播技术用于直播时移技术中。
[0029] 本发明将P2P技术应用到服务器直播时移技术中,P2P技术利用已经在线的客户端的多余资源为新上线客户端提供视频传输服务,这样就可以大大减少对于服务器资源的占用。实现了服务器直播时移技术支持大规模并发的要求。

附图说明

[0030] 图1为本发明的系统结构框图。

具体实施方式

[0031] 本发明提出的基于P2P技术的直播时移系统及其方法结合附图及实施例详细说明如下:
[0032] 本发明的基于P2P技术的直播时移系统,如图1所示,包括设置在服务器端的编码服务器、直播服务器和控制服务器;其中:编码服务器:用于从直播信号源接收经过直播视频数据流,将直播视频数据流分拆为固定大小的直播视频数据包(例如360KByte大小的直播视频数据包),并为每个直播视频数据包中增加频道号和时间信息;
[0033] 直播服务器:用于直播和存储某个频道的直播视频数据包;并向多个客户端同时提供直播视频,或提供直播时移视频;
[0034] 控制服务器:用于处理客户端发出的视频请求,为客户端提供视频数据的存储信息;该控制服务器设置有直播信息列表,直播时移信息列表,每个直播频道的节目单;直播信息列表中包含直播频道与当前直播该直播频道的服务器,以及当前收看该直播频道的客户端的信息列表;当客户端停止收看直播视频时,控制服务器将清除直播信息列表中该客户端的记录;直播时移信息列表中包含直播频道与存储了该直播频道视频数据的直播服务器,以及客户端的信息列表,只要直播服务器或客户端存储有视频数据,则控制服务器将直播服务器或客户端的记录保留在直播时移信息列表中。
[0035] 本发明提出的一种基于P2P技术的直播时移方法,其特征在于,包括以下步骤:
[0036] 1)服务器端的编码服务器从直播视频数据源接收直播视频数据流,首先将直播视频数据流分割为固定大小的直播视频数据包(例如分成360K的数据包,该数据包的数值是根据宽带用户带宽数值选取的一个经验值),然后为每个直播视频数据包添加直播频道信息和时间信息(其中直播频道ID是频道的唯一标识符,不能重复使用;时间信息可以是当前绝对时间(例如2009年12月15日9点45分23秒21毫秒),也可以使用相对时间,(在标记时间信息时,在本实施例中使用绝对时间。不论使用绝对时间还是相对时间,通过简单的换算,两种时间信息可以相互转换);还可以根据数据包所代表的时间长度规定时间精度(例如精确到秒级,也可以精确到毫秒级);
[0037] (本发明将直播视频数据流分割成小数据包的方式,一方面有利于使用P2P协议传输直播视频数据;另一方面,由于每个直播视频数据包都带有频道信息和时间信息,并且时间信息精确到秒级,这样就便于在客户端,客户通过对播放进度条的操作进行类似视频播放的拖拽、暂停等功能。)
[0038] 编码服务器将编码后的直播视频数据包分发给直播服务器,并向控制服务器发出当前编码的直播频道、当前接收直播视频数据包的直播服务器、以及编码重启或编码故障等控制信息;
[0039] 2)服务器端的直播服务器建有一个内存缓冲区,服务器端的内存缓冲区大小设置为存储固定时间长度的直播视频数据包(例如本实施例中可设置为60分钟,则服务器端的内存缓冲区数值=60分钟*60秒*视频码流,该服务器端的内存缓冲区大小数值是根据直播服务器性能、直播服务器磁盘存储空间的性能,以及宽带用户带宽数值选取的一个经验值);直播服务器持续从编码服务器获得直播视频数据包,并写入该服务器端的内存缓冲区,当直播服务器的内存缓冲区被占满后,时间最早的直播视频数据包被丢弃,空余出的存储缓冲区被用来放置时间最新的直播视频数据包(即该服务器端的内存缓冲区使用先进先出原则进行管理);
[0040] 直播服务器同时建有一个磁盘存储空间,直播服务器将放置到服务器端内存缓冲区的直播视频数据包,按照规定的时间间隔写入在磁盘存储空间中(例如本实施例中服务器端的内存缓冲区大小为存储60分钟的直播视频数据包,因此将写磁盘存储空间的时间间隔设置为60分钟),并且在写入磁盘缓冲区之前,清除每个单独直播视频数据包的直播频道信息和时间信息,将把一个时间间隔写磁盘存储空间的所有直播视频数据包合并为一个直播视频数据文件(例如本实施例中将60分钟长的直播视频数据包合并为一个时间长度为60分钟的直播视频数据文件);将直播视频数据文件的频道信息和时间信息(可选该直播视频数据文件的开始、结尾和中间任意一个时间点,本实施例选取开始时间点为时间信息)作为视频数据文件的文件名称(例如CCTV1频道,2009年12月2日18点的视频文件,可以命名为CCTV1T2009120218),并将该视频文件的频道信息和时间信息提交给控制服务器;该频道信息和时间信息作为该视频文件的唯一标识信息(服务器磁盘存储空间非常大,理论上可以存储所有的直播视频内容);
[0041] 直播服务器使用内存缓冲区中的直播视频数据包提供P2P直播服务,或使服务器端的内存缓冲区中的直播视频数据包提供直播服务器的内存缓冲区时间长度范围之内(在60分钟之内)的直播时移服务,或用磁盘存储空间(可以是内存,也可以是磁盘)上存储的直播视频内容提供超过直播服务器的内存缓冲区时间长度的(例如超过60分钟)直播时移服务。
[0042] 3)客户端申请收看视频数据时,客户端首先向服务器端的控制服务器发送视频请求,视频请求中包含了频道信息和时间信息(默认情况下视频请求中的时间为当前时间,客户也可以设定直播视频流的播出起始时间);根据客户端请求的视频开始时间以及直播服务器的内存缓冲区大小,控制服务器将视频数据的存储信息返回给客户端,客户端按照存储信息与直播服务器或其他客户端建立数据链路,通过建立的数据链路获得视频数据;
[0043] 上述工作具体分为以下三种情况:
[0044] 情况(1)客户端申请的直播视频的播放起始时间为当前时间:
[0045] 控制服务器首先计算当前时间与客户请求的直播视频起始时间的差,若差值为0,则客户端的请求为直播视频请求,控制服务器查询直播信息列表,并将当前发布直播频道的直播服务器和当前收看直播频道的其他客户端的地址信息列表发送给客户端,客户端与列表中的直播服务器以及当前接收直播视频数据包的其他客户端建立数据链接,接收直播视频数据包;
[0046] 客户端内建有一个内存缓冲区,一个磁盘缓冲区,并建立一个对照表(本实施例的客户端的内存缓冲区的时间长度数值为150秒,磁盘缓冲区数值为1GB(GB=1000000000byte,byte中文名称是字节,是计算机通用词语;该数值是根据大量用户的平均剩余磁盘空间数值选取的经验值);客户端在接收直播视频数据包时,将直播视频数据包放入客户端的内存缓冲区内,同时将直播视频数据包写入磁盘缓冲区(客户端的内存缓冲区和磁盘缓冲区均采用先进先出原则);每个直播视频数据包写入磁盘缓冲区后,客户端在对照表中增加一条记录,记录直播视频数据包的频道信息、时间信息和在磁盘缓冲区内的存储信息;
[0047] 客户端在将直播视频数据包写入磁盘缓冲区时,使用与直播服务器存储直播视频数据相同的命名规则,并在后面增加包的序号,例如CCTV1频道,2009年12月2日18点开始的第一个直播视频数据包,则对应的存储在可以命名为CCTV1T2009120218000001,第二个直播视频数据包命名为CCTV1T2009120218000002,以此类推;
[0048] 客户端在将直播视频数据包写入磁盘缓冲区时还要对每个直播视频文件进行校验,并将校验结果放在直播视频文件后面,当其他客户端从该客户端接收直播视频数据文件时,如果校验结果与直播视频文件的校验结果不同(说明直播视频数据被修改了),则丢弃该直播视频文件(该工作是为了保证直播视频文件不被篡改,保证直播视频数据传输的安全性);
[0049] 客户端将直播视频数据文件写入磁盘缓冲区中后的存储情况提交给控制服务器;
[0050] 当客户端停止收看直播视频时,客户端中断所有直播视频数据包的传输数据链路,清除客户端的内存缓冲区内的直播视频数据包,删除对照表。
[0051] 情况(2)客户端申请的直播视频的播放起始时间小于当前时间,大于当前时间减去直播服务器的内存缓冲区的时间长度数值(例如60分钟)的时间:
[0052] 控制服务器首先计算当前时间与客户请求的直播视频的播放起始时间的差,如果请求的直播视频的播放起始时间小于当前时间,并且大于当前时间减去直播服务器内存缓冲区的时间长度数值,例如客户请求的直播视频的播放起始时间为2009年12月11日17点01分45秒,当前时间为2009年12月11日17点25分40秒,当前时间减去直播服务器的缓冲区的时间长度数值,为2009年12月11日16点25分40秒,客户请求的直播视频的播放起始时间2009年12月11日17点01分45秒小于当前时间,但大于当前时间减去直播服务器的内存缓冲区的时间长度数值后得到的时间2009年12月11日16点25分40秒;
则控制服务器判断该请求是一个直播服务器内存缓冲区范围内的直播时移视频请求;客户端申请的直播视频数据包存在于直播服务器的内存缓冲区中,并且当前收看相同频道的其他客户终端中存储了这些直播视频数据包;控制服务器查询直播信息列表,然后将当前直播该频道的直播服务器和当前收看该直播频道的其他客户端的连接信息发送给客户端,客户端与上述服务器和其他客户端建立数据链接,获得时移时间小于直播服务器的内存缓冲区的时间长度数值的直播时移视频数据包;
[0053] 客户端在收看时移时间小于直播服务器的内存缓冲区的时间长度数值的直播时移视频时,也建立内存缓冲区、磁盘缓冲区和对照表。客户端的内存缓冲区、磁盘缓冲区和对照表的工作原理与情况(1)中描述的客户端的工作相同,区别是该客户端收看的是直播时移视频,与情况(1)中客户端收看的直播视频有一个时间差值。当该客户端收看直播时移视频过程中,客户端与情况(1)中的客户端一样完成文件存储工作、文件校验工作和存储信息上报工作。
[0054] 情况(3)客户端申请的直播视频的播放起始时间小于当前时间减去直播服务器的内存缓冲区数值(例如60分钟)的时间
[0055] 控制服务器计算当前时间与客户请求的直播视频的播放起始时间的差,如果请求的直播视频的播放起始时间小于当前时间减去直播服务器内存缓冲区的时间长度数值,例如客户请求的直播视频的播放起始时间为2009年12月10日17点30分45秒,当前时间为2009年12月11日17点25分40秒,当前时间减去直播服务器的缓冲区的时间长度数值60分钟,为2009年12月11日16点25分40秒,客户请求的直播视频的播放起始时间2009年12月10日17点30分45秒小于当前时间减去直播服务器的内存缓冲区的时间长度数值后得到的时间2009年12月11日16点25分40秒;则控制服务器判断该请求是一个直播服务器内存缓冲区范围外的直播时移视频请求;客户端申请的直播视频数据包只存在于直播服务器的磁盘存储区中和存储了这些直播视频文件的其他客户终端磁盘缓冲区中;
控制服务器查询直播时移信息列表,然后将存储了这些直播视频文件的直播服务器和其他客户端的连接信息发送给客户端,客户端与上述服务器和其他客户端建立数据链接,获得时移时间大于直播服务器的内存缓冲区的时间长度数值的直播时移视频数据包;
[0056] 客户端在收看时移时间大于直播服务器的内存缓冲区的时间长度数值的直播时移视频时,也建立内存缓冲区、磁盘缓冲区。客户端的内存缓冲区、磁盘缓冲区的工作原理与(1)中描述的客户端的工作相同,区别是客户端收看的是时移时间大于直播服务器的内存缓冲区的时间长度数值的直播时移视频,直播视频数据是以直播视频文件方式传输,而不是直播视频数据包。当该客户端收看直播时移视频时,客户端与(1)中的客户端一样完成文件存储工作、文件校验工作和存储信息上报工作。
[0057] 客户端按照文件方式下载相应的直播视频文件,在播放的同时,将直播视频文件存储在磁盘缓冲区内。当该客户端停止收看直播时移视频时,客户端向控制服务器提交存储信息。
[0058] 上述情况(3)与P2P点播技术相似,但是在本发明中,客户时间上看的是一个直播视频流,只是将直播视频进行了时间移动,这是本发明与P2P点播技术的根本区别。
[0059] 本发明提出一种基于P2P技术的直播时移系统及其方法的实施例。该系统包括设置在服务器端的编码服务器、直播服务器、控制服务器。该方法包括以下步骤:
[0060] 1)编码服务器从直播源获得直播视频数据流,并将直播视频数据流分割为360K大小的直播视频数据包,为每个直播视频数据包添加频道信息和时间信息。然后将这些直播视频数据包按照时间顺序发送给直播服务器。
[0061] 2)直播服务器建有一个能够存储60分钟直播视频数据包的内存缓冲区。内存缓冲区大小计算方式为:设直播视频码流为400Kbits,每秒为400Kbit,时间长度60分钟=3600秒,则内存缓冲区数值=60分钟*60秒*400K/8,除8是因为计算出的数据时按照bit为单位的,存储上一般按照byte作为单位的,1byte=8bits。视频码流直播服务器从编码服务器接收到直播视频数据包,按照时间先后顺序放入内存缓冲区中,并按照60分钟时间间隔,每隔60分钟将内存缓冲区中的直播视频数据包合并存储到磁盘空间中。直播服务器的内存缓冲区按照先进先出原则,当直播服务器的内存缓冲区存放满后,丢弃时间最早的直播视频数据包,空余出的直播服务器的内存缓冲区用于存放时间最新的直播视频数据包。直播服务器的内存缓冲区可以存储时间长度60分钟的直播视频数据包,因此每隔60分钟,直播服务器的内存缓冲区中的直播视频数据包与前一个60分钟的直播视频数据包没有重复的,在每个60分钟结束时,直播服务器将内存缓冲区中直播视频数据包的频道信息和时间信息删除,将直播服务器的内存缓冲区中的所有直播视频数据包按照时间顺序合并为一个的直播视频文件,使用直播频道信息和时间信息为该直播视频文件命名,例如CCTV1T2009122018表示CCTV1频道在2009年12月20日18点的直播视频文件。由于服务器的存储资源非常大,理论上可以存储所有频道的所有直播视频内容。
[0062] 直播服务器向控制服务器提交当前直播的频道信息和存储的直播文件信息。
[0063] 客户端要收看直播视频时,首先向控制端发送直播视频请求。本系统中,客户端可以根据需要选择收看那个时间点的直播视频,可以是当前时间,也可以当前时间以前的某个时间点开始的直播视频。
[0064] 客户端发送的直播视频请求中包含了频道信息和直播视频的时间信息。
[0065] (1)控制服务器接收到客户端发送的直播视频请求,首先计算当前时间与客户请求的直播视频起始时间的差,若差值为0,则客户端的请求为直播视频请求,控制服务器查询直播信息列表,并将当前发布该直播频道的直播服务器和当前收看该直播频道的其他客户端的地址信息列表发送给客户端,客户端与列表中的直播服务器以及当前接收直播视频数据包的其他客户端建立数据连接,接收直播视频数据包。直播服务器的查询过程,直播数据的分发过程与已经公开的P2P直播技术相似,区别在于,客户请求的直播视频起始时间可以是当前时间,也可以是当前时间以前的某个时间点。
[0066] 客户端在开始接收直播视频数据包之前,先建立一个内存缓冲区和一个磁盘缓冲区,并建立一个对照表。客户端的内存缓冲区的时间长度数值为150秒,设直播视频码流为400Kbits,内容缓冲区容量=时间长度150秒*码流400Kbits/8,除以8是因为客户端的内存缓冲区单位为byte,而乘积的结果为bits,1byte=8bits。磁盘缓冲区数值为1GB(该数值是根据大量用户的平均剩余磁盘空间数值选取的经验值),按照直播视频码流为400Kbits,约可以存储1000000*8/400/3600=5.5小时的直播视频数据包。
[0067] 客户端在接收直播视频数据包时,一边放入客户端的内存缓冲区内,一边将直播视频数据包写入磁盘缓冲区。客户端的内存缓冲区和磁盘缓冲区都是用先进先出原则。在将直播视频数据包写入磁盘缓冲区时,使用与直播服务器存储直播视频数据相同的命名规则,并在后面增加包的序号,例如CCTV1频道,2009年12月2日18点开始的第一个直播视频数据包,则对应的存储文件名为CCTV1T2009120218000001,第二个直播视频数据包命名为CCTV1T2009120218000002,以此类推。其中CCTV1T2009120218与直播服务器每隔60分钟存储的直播视频文件的名称相同,后面的000001,000002为按照时间顺序的序号。
[0068] 每个直播视频数据包写入磁盘缓冲区后,客户端在对照表中增加一条记录,记录了直播视频数据包的频道信息、时间信息和在磁盘缓冲区内的存储信息。
[0069] 考虑到直播视频数据包的安全性,客户端上的每个直播视频文件都要进行校验,并将校验结果存放在直播视频文件中,当其他客户端从该客户端接收直播视频数据文件时,如果计算的校验结果与直播视频文件中的校验结果相同,就可以使用;如果校验结果不同,说明直播视频数据损坏或被修改了,则丢弃该直播视频文件。该工作是为了保证直播视频文件篡改,保证了直播视频数据传输的安全性。
[0070] 客户端将直播视频数据文件写入磁盘缓冲区中后,立即将存储情况提交给控制服务器。
[0071] 当客户端停止收看直播视频时,客户端中断所有直播视频数据包的传输数据链路,清除客户端的内存缓冲区内的直播视频数据包,删除对照表。
[0072] (2)控制服务器计算当前时间与客户请求的直播视频的播放起始时间的差,如果请求的直播视频的播放起始时间小于当前时间,并且大于当前时间减去直播服务器内存缓冲区的时间长度数值60分钟,例如客户请求的直播视频的播放起始时间为2009年12月11日17点01分45秒,当前时间为2009年12月11日17点25分40秒,当前时间减去直播服务器的缓冲区的时间长度数值60分钟,为2009年12月11日16点25分40秒,客户请求的直播视频的播放起始时间2009年12月11日17点01分45秒小于当前时间,但大于当前时间减去直播服务器的内存缓冲区的时间长度数值60分钟后得到的时间2009年12月11日16点25分40秒,控制服务器判断该请求是一个直播服务器内存缓冲区范围内的直播时移视频请求;客户端申请的直播视频数据包存在于直播服务器的内存缓冲区中,并且当前收看相同频道的其他客户终端中也存储了这些直播视频数据包;控制服务器查询直播信息列表,然后将当前直播该频道的直播服务器和当前收看该直播频道的其他客户端的连接信息发送给客户端,客户端与上述服务器和其他客户端建立数据链接,获得时移时间小于60分钟的直播时移视频数据包。
[0073] 客户端在收看时移时间小于60分钟的直播时移视频时,也建立内存缓冲区、磁盘缓冲区和对照表。客户端的内存缓冲区的时间长度数值为150秒,磁盘缓冲区数值为1Gbyte。客户端在接收直播视频数据包时,一边放入客户端的内存缓冲区内,一边将直播视频数据包写入磁盘缓冲区。客户端的内存缓冲区和磁盘缓冲区都是用先进先出原则。
[0074] (对于直播服务器,由于客户端申请的直播视频数据在直播服务器的内存缓冲区中,只是视频的起始时间移动了,因此只需要在直播服务器的内存缓冲区中找到对应时间点的直播视频数据包的起始位置,然后按照时间顺序发送直播视频数据包流。
[0075] 对于其他客户端,其他客户端当前收看该直播视频内容,并保存了直播视频存储的对照表,因此其他客户端从对照表中找到对应的直播视频数据包文件的存储位置,然后按照时间顺序传送直播视频数据包。)
[0076] 客户端在接收直播服务器和其他客户端传送来的直播视频数据包的时候,也要将接收到的直播视频数据包以按顺序存储到磁盘缓冲区中,此时的文件命名规则是频道信息+按照是时移前的原始时间作为时间信息+数据包序号,例如,当前时间为2009年12月20日18点30分0秒,客户端当前收看的是2009年12月20日18点0分0秒的直播时移视频内容。时移时间为30分钟。直播视频数据包按照时移前的时间进行命名,例如第一个数据包文件名称为CCTV1T2009122018000001。
[0077] 客户端当前收看的每个直播视频数据包写入磁盘缓冲区后,客户端在对照表中增加一条记录,记录了直播视频数据包的频道信息、时间信息和在磁盘缓冲区内的存储信息。
[0078] (考虑到直播视频数据包的安全性)客户端上的每个直播视频文件都要进行校验,并将校验结果存放在直播视频文件中,当其他客户端从该客户端接收直播视频数据文件时,如果计算的校验结果与直播视频文件中的校验结果相同,就可以使用;如果校验结果不同(说明直播视频数据损坏或被修改了),则丢弃该直播视频文件(该工作是为了保证直播视频文件篡改,保证了直播视频数据传输的安全性)。
[0079] 客户端将直播视频数据文件写入磁盘缓冲区中后,立即将存储情况提交给控制服务器。当客户端停止收看直播视频时,客户端中断所有直播视频数据包的传输数据链路,清除客户端的内存缓冲区内的直播视频数据包,删除对照表。
[0080] (3)控制服务器计算当前时间与客户请求的直播视频的播放起始时间的差,如果请求的直播视频的播放起始时间小于当前时间减去直播服务器内存缓冲区的时间长度数值60分钟,例如客户请求的直播视频的播放起始时间为2009年12月10日17点30分45秒,当前时间为2009年12月11日17点25分40秒,当前时间减去直播服务器的内存缓冲区的时间长度数值60分钟,为2009年12月11日16点25分40秒,客户请求的直播视频的播放起始时间2009年12月10日17点30分45秒小于当前时间减去直播服务器的内存缓冲区的时间长度数值60分钟后得到的时间2009年12月11日16点25分40秒,控制服务器判断出该请求是一个直播服务器内存缓冲区范围外的直播时移视频请求。客户端申请的直播视频数据包只存在于直播服务器的磁盘存储区中和存储了该直播视频文件的其他客户终端磁盘缓冲区中。控制服务器查询直播时移信息列表,然后将存储了这些直播视频文件的直播服务器和其他客户端的连接信息发送给客户端,客户端与上述服务器和其他客户端建立数据链接,获得时移时间大于60分钟的直播时移视频数据包。
[0081] 客户端在收看时移时间大于60分钟的直播时移视频时,也建立内存缓冲区、磁盘缓冲区(但是不需要建立对照表)。客户端的内存缓冲区的时间长度数值为150秒,磁盘缓冲区数值为1GB。客户端在接收直播视频数据包时,一边放入客户端的内存缓冲区内,一边将直播视频数据包写入磁盘缓冲区。客户端的内存缓冲区和磁盘缓冲区都是用先进先出原则。
[0082] (对于直播服务器,由于客户端申请的直播视频数据在存储空间中,通过将频道信息、直播时移视频时间信息与文件名进行对照,找到包含有直播时移视频数据包的文件,将文件按照时间顺序传送给客户端。
[0083] 对于其他客户端,其他客户端中存储了直播时移视频数据包,通过将频道信息、直播时移视频时间信息与磁盘缓冲区中的文件名对比,找到相应的直播时移视频数据包文件,将文件按照时间顺序传送给客户端。)
[0084] 客户端在接收直播服务器和其他客户端传送来的直播视频数据包的时候,也要将接收到的直播视频数据包以按顺序存储到磁盘缓冲区中,此时的文件命名规则是频道信息+按照是时移前的原始时间作为时间信息+数据包序号,例如,当前时间为2009年12月20日18点0分0秒,客户端当前收看的是2009年12月19日18点0分0秒的直播时移视频内容。时移时间为24小时。直播视频数据包按照时移前的时间进行命名,例如第一个数据包文件名称为CCTV1T2009121918000001。
[0085] (考虑到直播视频数据包的安全性)客户端上的每个直播视频文件都要进行校验,并将校验结果存放在直播视频文件中,当其他客户端从该客户端接收直播视频数据文件时,如果计算的校验结果与直播视频文件中的校验结果相同,就可以使用;如果校验结果不同(说明直播视频数据损坏或被修改了),则丢弃该直播视频文件(该工作是为了保证直播视频文件篡改,保证了直播视频数据传输的安全性)。
[0086] 客户端将直播视频数据文件写入磁盘缓冲区中后,将存储情况提交给控制服务器。
[0087] 当客户端停止收看直播视频时,客户端中断所有直播视频数据包的传输数据链路,清除客户端的内存缓冲区内的直播视频数据包。
[0088] 上述第(3)种方式与P2P点播技术非常相似,但是在本发明中,客户时间上看的是一个直播视频流,只是将直播视频进行了时间移动,这是本发明与P2P点播技术的根本区别。