发明内容
有鉴于此,本发明的目的在于提供一种视频点播方法、一种视频点播系统、一种视频点播服务器和一种视频点播终端,能够解决现有技术中存在的组播时延长的问题,并能够降低服务器负担,降低对终端的要求。
为了达到上述目的的第一个方面,本发明提供了一种视频点播方法,该方法包含以下步骤:
A、视频点播服务器接收到来自视频点播终端的点播请求后,响应该请求,以单播方式向视频点播终端发送点播的节目数据,视频点播终端接收所述单播的节目数据并播放;
B、视频点播服务器为点播相同的所述节目数据的视频点播终端建立组播,以组播方式发送所述节目数据,并将所述组播信息通知给所述点播相同节目的视频点播终端;
C、接收到组播信息的视频点播终端根据该组播信息接收所述组播的节目数据并存储;
D、当视频点播终端接收的所述单播的节目数据与该视频点播终端中存储的所述组播的节目数据重合后,视频点播服务器停止以单播方式向视频点播终端发送节目数据,视频点播终端读取所述存储的组播节目数据并播放。
较佳地,所述步骤B包括:
B1、视频点播服务器判断当前是否存在发送所述节目数据的组播,如果是,执行步骤B2;否则执行所述步骤B3;
B2、视频点播服务器将所述组播的信息通知给该组播对应的视频点播终端;
B3、视频点播服务器建立组播发送所述节目数据,然后执行步骤B2。
较佳地,所述步骤B3中进一步包括:视频点播服务器存储所建立的组播信息;
所述步骤B1中,视频点播服务器根据存储的组播信息执行所述判断步骤。
较佳地,所述存储的组播信息包括:包括节目的ID号、组播的时间标记和组播地址;
则所述步骤B2中,通知给视频点播终端的组播信息为:组播地址。
较佳地,所述组播的时间标记为:该组播所对应单播中最早开始的单播的开始时间;或为:在该组播所对应单播中最早开始的单播的开始时间之后预先设定延迟时间的时刻。
较佳地,所述步骤B3之前进一步包括:
B30、视频点播服务器判断是否可以建立组播,如果是执行所述步骤B3;否则直接结束该流程。
步骤B1中所述的判断步骤可以为:
B11、视频点播服务器判断在该时刻之前预先设定的时间之内是否存在发送所述节目数据的组播;
步骤B30中所述的判断步骤为:
B301、视频点播服务器判断在该时刻之前预先设定的时间之内是否存在针对所述节目数据的单播,如果是,在步骤B3之后执行的步骤B2中,所述的组播对应的视频点播终端为所述视频点播终端和所述存在的针对所述节目数据的单播对应的视频点播终端。
步骤B1中所述的判断步骤还可以为:
B12、视频点播服务器判断在该时刻所在的预先设定的时间跨度内,是否存在发送所述相同节目数据的组播;
步骤B30中所述的判断步骤为:
B302、视频点播服务器判断在该时刻所在的预先设定的时间跨度内,针对所述节目数据的单播数量是否达到或超过了预先设定的最小单播数量,如果是,在步骤B3之后执行的步骤B2中,所述的组播对应的视频点播终端为所述视频点播终端和所述针对所述节目数据的单播对应的视频点播终端。
较佳地,步骤A中进一步包括:视频点播服务器记录所述单播信息;
则步骤B30中,视频点播服务器根据所述记录的单播信息判断是否可以建立组播。
较佳地,所述步骤D为:
视频点播终端确定出自身接收的所述单播的节目数据和自身中存储的所述组播的节目数据重合后,向视频点播服务器发送中止单播请求,然后读取所述存储的组播节目数据并播放。
较佳地,所述视频点播终端确定自身接收的所述单播的节目数据和自身中存储的所述组播的节目数据重合的方法为:
将节目数据划分为块,并为每块设置块号,当视频点播终端识别出所存储的组播节目数据中存在与当前接收的单播节目数据的块号相同时,确定出自身接收的单播节目数据和自身中存储的组播节目数据重合;
或为:所述节目数据中包括时间信息,当视频点播终端识别出所存储的组播节目数据中存在与当前接收的单播节目数据包括相同时间信息时,确定出自身接收的单播节目数据和自身中存储的组播节目数据重合。
较佳地,所述步骤D为:
视频点播服务器根据向视频点播终端以单播形式和组播形式发送数据的时间,确定出视频点播终端接收的单播节目数据和该视频点播终端中存储的组播节目数据重合后,停止所述的以单播方式向视频点播终端发送节目数据。
为达到上述目的的第二个方面,本发明提供了一种视频点播系统,该系统包括:
该视频点播系统包括视频点播服务器和视频点播终端;其中,
视频点播服务器用于根据来自视频点播终端的点播请求向其以单播形式发送对应节目数据;和发送组播节目数据,并将确定的所述视频点播终端加入的组播信息发送给视频点播终端;和根据接收单播节目数据和组播节目数据的视频点播终端所接收的数据重合的信息,停止向视频点播终端发送单播节目数据;
视频点播终端用于根据用户的点播请求向视频点播服务器发送点播请求,接收并播放视频点播服务器以单播方式发送的节目数据;和根据来自视频点播服务器的组播信息接收组播节目数据;和根据自身以单播方式接收的节目数据和以组播方式接收的节目数据重合的信息,读取存储的组播节目数据并播放。
为达到上述目的的第三个方面,本发明提供了一种视频点播服务器,该服务器包括通讯模块、决策模块和存储模块;其中,
通讯模块用于接收来自终端点播请求,响应该请求读取并以单播方式发送存储模块中的对应节目数据,并将点播请求传送给决策模块;和将来自决策模块的组播信息发送给终端,并根据来自决策模块的发起组播的信息从存储模块中读取并以组播方式发送对应的节目数据,以及根据来自终端的中止请求停止读取和发送对应的节目数据;
决策模块用于根据来自通讯模块的点播请求确定是否将终端加入已有的组播,或是否需要发起组播,并根据确定出的将终端加入已有组播的信息或发起组播的信息,将组播信息发送给通讯模块;和将发起的组播的信息存储在存储模块;
存储模块,用于存储节目数据和组播信息。
进一步地,所述决策模块可以用于根据向同一视频点播终端发送单播节目数据的时间和组播节目数据的时间,确定终端接收的单播节目数据和组播节目数据的视频点播终端所接收的数据是否重合,并将确定出的重合的信息发送给通讯模块;
则所述通讯模块进一步用于接收来自决策模块的所述重合的信息,并根据该重合的信息停止以单播方式发送存储模块中的对应节目数据。
为达到上述目的的第四个方面,本发明提供了一种视频点播终端,该终端包括通讯模块、播放控制模块和存储模块;其中,
通讯模块用于接收来自服务器的单播节目数据并将单播节目数据传送给播放控制模块,以及根据来自服务器的组播信息接收组播节目数据并存储到存储模块中;并用于将用户发起的点播请求和来自播放控制模块的中止单播请求发送给服务器;
播放控制模块用于接收来自通讯模块的单播节目数据并进行解码播放;或根据确定出的单播节目数据中止的信息读取存储模块中存储的组播节目数据并进行节目播放;
存储模块用于存储组播节目数据。
所述终端中可以进一步包括:
判断模块,用于判断所的接收的单播节目数据和存储模块中存储的组播节目数据是否重合,并将确定出的单播节目数据和组播节目数据重合的信息发送给播放控制模块和通讯模块;
所述播放控制模块进一步用于根据来自判断模块的所述重合的信息停止播放所述单播节目数据,读取存储模块中存储的组播节目数据并播放;
所述通讯模块进一步用于根据来自判断模块的所述重合的信息向视频点播服务器发送中止单播请求。
从以上方案可以看出,本发明中通过视频点播服务器接收到来自视频点播终端的点播请求后,以单播形式向终端发送所点播的节目数据,达到了对终端点播请求的即时响应;此后,服务器为多个点播相同节目数据的终端建立组播组,并向所述多个终端以组播方式发送所述相同的节目数据,终端接收以组播方式发送的节目数据并存储;当终端接收的服务器以单播方式发送的节目数据与终端存储的服务器以组播方式发送的节目数据重合时,服务器停止以单播方式向终端发送节目数据,从而又通过组播向多个终端发送数据而降低了对资源的占用。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本发明的主要思想是,视频点播服务器,以下简称服务器,接收到来自视频点播终端,以下简称终端,的点播请求后,立即以单播形式向终端发送所点播的节目数据,以达到即时响应;此后,服务器为多个点播相同节目数据的终端建立组播组,并向所述多个终端以组播方式发送所述相同的节目数据,终端接收以组播方式发送的节目数据并存储;当终端接收的服务器以单播方式发送的节目数据与终端存储的服务器以组播方式发送的节目数据重合时,服务器停止以单播方式向终端发送节目数据,从而又通过组播向多个终端发送数据而降低了对资源的占用。
本发明的总体流程如图2所示,包括以下步骤:
步骤201、服务器接收到来自终端的点播请求后,响应该请求,以单播方式向终端发送点播的节目数据,终端接收所述单播的节目数据并播放;
步骤202、服务器为点播相同的所述节目数据的终端建立组播,以组播方式发送所述节目数据,并将所述组播信息通知给所述点播相同节目的终端;
步骤203、接收到组播信息的终端根据该组播信息接收所述组播的节目数据并存储;
步骤204、当终端接收的所述单播的节目数据与该终端中存储的所述组播的节目数据重合后,服务器停止以单播方式向终端发送节目数据,终端读取所述存储的组播节目数据并播放。
为了降低服务器的负担,在上述步骤202中,服务器可以根据预先设定的条件建立组播,该条件可以是在一定时间跨度T内对同一节目发起单播达到或超过了最小单播数量N;该条件还可以是在当前单播之前的T′时间内没有组播,但存在针对相同节目的单播;该条件也可以只是没有针对相同节目的组播。
另外,为了保证终端在接收组播节目数据一段时间后,可以停止接收单播节目数据,在建立组播后,以组播方式发送的节目数据进度需要与该组播对应的单播中最早开始的单播的进度同步或稍快于该单播的进度。
在步骤204中,确定终端接收的单播的节目数据与终端中存储的组播的节目数据是否重合,可以由终端来执行,则终端根据接收的节目数据信息确定出节目数据重合后,需要通知服务器停止以单播方式向该终端发送节目数据;也可以是由服务器来执行,则服务器根据发送的节目进度确定出终端以两种方式接收的节目数据重合后,停止以单播方式向该终端发送数据。
以下通过具体实施例对本发明进行详细说明。
在本发明的第一实施例中,服务器预先设定建立组播的时间跨度T和最小单播数量N。其中,时间跨度T可以根据服务器的能力、网络状况以及终端的存储能力确定,如果服务器的能力较强,网络状况较好,则可以将时间跨度设置的小一些,这样对于终端存储能力的要求就低;如果终端的存储能力较强,则可以将时间跨度设置的大一些。而最小单播数量N,则根据组播和单播的资源耗费情况确定,最小单播数量应该满足在这个值N时,组播的代价和N个单播的代价近似相等,或组播的代价稍小于N个单播的代价,该值的范围可以为10至100。
在确定了建立组播的时间跨度T和最小单播数量N后,本发明具体实施例中终端与服务器交互的流程如图3所示,具体包括以下步骤:
步骤301、终端选择节目后,利用IP网络向服务器发送点播请求。
步骤302、服务器接收到点播请求后,响应该请求,以单播方式向上述终端发送对应节目数据,并记录该单播信息。
这里,在终端点播一个节目后,服务器可以通过几个单播分别发送不同类型的数据内容进行响应,例如音频和视频分别通过两个单播发送给用户,此时可以将这几个单播作为一个整体,本发明中所提及的单播都是针对这个整体而言;类似地,后续的组播,服务器也可以通过几个组播分别发送不同类型的数据内容,但本发明所提及的组播都是针对这几个组播的整体而言。
本步骤中,记录的单播信息包括:节目的ID号,单播的时间标记,单播的目的地址等。其中,单播的时间标记可以是该单播开始的时间。
步骤303、服务器判断当前时间所在的时间跨度内是否有对应节目的组播存在,如果有则执行步骤304;否则执行步骤306;
步骤304、服务器将该组播的地址发送给终端,通知终端加入该组播接收节目数据,并在上述记录的单播信息中将该单播标识为已加入组播;
步骤305、终端根据接收的组播地址加入对应的组播接收组播节目数据,然后执行步骤308;
步骤306、服务器判断是否可以建立组播,即统计当前时间所在的时间跨度内所记录的未被标识为已加入组播的单播数量,并判断该数量是否达到预先设定的最小单播数量N,如果是执行步骤307;否则执行步骤312;
步骤307、服务器建立组播发送数据,将该组播的地址发送给该时间跨度内所记录的未被标识为已加入组播的单播对应的终端,并记录该组播信息,将加入该组播的单播标识为已加入组播,然后执行步骤305;
本步骤中,服务器建立组播时,该组播所发送节目数据的起始点需要根据该组播中最早开始的单播的发送进度确定,可以与该最早开始的单播发送进度相同,也可以该最早开始的单播当前所发送进度之后预先设定的延迟时间t所对应的节目数据开始发送。该延迟时间t的大小的设定可以根据网络情况和响应速度进行,能够保证终端接收的组播节目数据比同时接收的单播节目数据晚即可。
另外,本步骤中所记录的组播信息包括节目的ID号、组播的时间标记、和组播地址。其中,组播的时间标记可以是该组播组中最早开始的单播的开始时间。
步骤308~309、终端识别出所接收的单播节目数据和最早接收并存储的组播节目数据重合后,读取存储的对应进度的组播节目数据进行播放,并向服务器发送中止单播请求。
本步骤中,终端识别单播节目数据和组播节目数据是否重合,可以有两种方式,下面分别说明。
一种方式为将节目分块的方式。该方式中,服务器将节目数据划分成多块,块的大小以每块能够在较短时间内传输完毕,保证用户点播后,收看节目时等待第一块传输完毕的时间较短,可以及时的响应用户点播请求为尺度,并将每一节目块按顺序连续地设置块号,在发送节目数据时,将块号设置在节目块的头部与节目块一起发送。则终端在判断出存储的组播节目块的块号存在与当前接收的单播节目块的块号相同时,确定出单播节目数据与组播节目数据重合。
另一种方式为根据音视频数据编码中的时间信息(time_code)识别的方式。该方式中,当节目数据以MPEG-4或H.264编码时,终端可以根据视频对象组(GOP)头中的time_code信息来确定单播节目数据与存储的组播节目数据是否重合;当节目数据以MPEG-2或AVS编码时,终端可以根据图组头中的time_code信息来确定单播节目数据与存储的组播节目数据是否重合。具体为当终端确定出存储的组播节目中存在time_code与当前接收的单播节目的time_code相同的节目数据时,确定出单播节目数据与组播节目数据重合。
本步骤中读取对应进度的组播节目数据,可以是在识别出重合后,即读取重合的组播节目数据开始播放;也可以是在完成当前节目块、或视频对象组、或图组的播放后,读取存储的组播节目数据中的下一个对应的节目块、或视频对象组或图组进行播放,此后顺序播放存储的组播节目数据。
此外,如果在本步骤之前,终端识别出用户中途停止播放,则停止播放单播节目数据,通知服务器停止单播,并退出组播。服务器接收到停止单播通知后,停止以单播方式向终端发送节目数据。
步骤310、服务器接收到来自终端的中止单播请求后,停止向终端发送单播节目数据,并删除该单播信息,然后执行步骤313。
步骤311、终端在用户中途中止播放或完成所点播节目的播放后,退出组播。
步骤312、终端在用户中途中止播放或完成所点播的节目数据的播放后,通知服务器停止单播,服务器接收到该通知后,停止向终端发送该单播节目数据,并删除该单播信息,然后结束该流程。
步骤313、服务器在完成组播节目数据的播放后,删除该组播信息。
以上是本实施例中终端与服务器交互的流程,通过该流程交互的服务器和终端的内部组成如图4所示。在图4中,服务器41与终端42之间通过IP网络43进行连接;服务器41中具体包括通信模块411、决策模块412和存储模块413;终端42中具体包括通讯模块421、播放控制模块422、存储模块423和判断模块424。
其中,服务器内部各模块之间交互的流程如图5所示,包括以下步骤:
步骤501、服务器的通讯模块接收到来自终端的点播请求后,将该请求传送给决策模块。
步骤502、决策模块响应该请求,以单播方式向上述终端发送对应的节目数据,并将该单播信息记录在存储模块中。
步骤503、决策模块查询存储模块中是否存储有在当前时间所在的预先设定的时间跨度T内针对该节目的组播,如果是执行步骤504;否则执行步骤505。
步骤504、决策模块通过通讯模块向终端发送消息通知上述终端加入该组播,并将存储模块中存储的该单播信息标记为已加入组播,然后执行步骤508。
步骤505、决策模块查询存储模块中记录的针对该节目未标记为已加入组播的单播信息,并判断这些单播的数量是否达到或超过预先设定的最小单播数量N,如果是则执行步骤506;否则执行步骤508。
步骤506、决策模块建立组播,通过通讯模块向上述未标记为已加入组播的单播信息对应的终端发送该组播地址,通知加入该组播接收节目数据,并将这些单播信息标记为已加入组播。
步骤507、决策模块将该组播信息存储到存储模块中。
步骤508、通讯模块在接收到终端发送的中止单播的信息后,将该信息转发给决策模块。
步骤509、决策模块根据接收的中止单播的信息停止向对应终端发送单播节目数据,并将该单播信息从存储模块中删除。
步骤510、决策模块在确定出单播或组播节目数据发送完成后,停止向对应终端发送单播或组播节目数据,并将对应的单播或组播信息从存储模块中删除。
终端内部的处理流程如图6所示,具体包括以下步骤:
步骤601、终端的判断模块接收到用户的点播请求后向通讯模块发送点播请求。
步骤602、通讯模块将点播请求通过IP网络发送给服务器。
步骤603、通讯模块在接收到服务器以单播形式发送的节目数据后,将接收的节目数据传送给播放控制模块。
步骤604、播放控制模块根据接收的单播形式的节目数据进行播放。
步骤605、通讯模块在接收到来自服务器的加入组播的通知后,加入对应组播接收节目数据,并将接收的组播节目数据存储到存储模块中。
步骤606、判断模块判断以单播形式接收的节目数据和以组播形式接收的节目数据是否重合,如果重合执行步骤607;否则执行步骤612。
步骤607、判断模块通过通讯模块向服务器发送中止点播请求,并将上述重合的信息发送给播放控制模块。
步骤608、播放控制模块读取存储的组播节目数据并顺序播放。
步骤609、播放控制模块判断是否接收到了用户的中止播放请求,如果是,则执行步骤611,退出组播,然后结束该流程;否则,执行步骤610,判断是否完成了节目的播放,如果是返回执行步骤611;否则返回执行步骤609。
步骤612、判断模块判断是否接收到了用户的中止播放请求,如果是执行步骤613,通过通讯模块向服务器发送中止单播请求,并通知播放控制模块停止播放节目数据,然后结束该流程;否则执行步骤614,判断是否完成了节目的播放,如果是返回执行步骤613;否则返回执行步骤612。
下面再以应用本实施例的一种案例进一步对本实施例进行说明。
如图7所示,本实施例的一种案例所基于的系统包括服务器41、IP网络43、终端4201、4202......420n。其中,服务器中包括有CPU、硬盘、网卡、内存和点播软件服务端。终端中包括有CPU、硬盘、网卡、内存和点播软件客户端,显示卡等设备。服务器的网卡为通讯模块,硬盘为存储模块,服务器点播软件为决策模块;CPU与内存为运行所需环境。终端的网卡作为通讯模块,点播软件客户端为判断模块,硬盘为存储模块,显示卡等显示设备作为播放控制模块。
假设一个节目时长100分钟,预先设定的时间跨度T为10分钟,最小单播数量N为10。终端1最先在10:00进行节目点播,服务器向它发送单播节目数据,并存储这个单播的信息。终端1在不考虑延迟的情况下,等待时间为0。此后分别有8个终端加入点播同一个节目,他们的处理与终端1相同。终端10在10:03又点播了这个节目,服务器立即发送单播数据给它并存储这个单播的信息,做到点播的立即响应。然后点播软件客户端确定出此前10分钟内的点播节目数量已经为10个,故建立组播发送数据,并将这些点播终端对应的单播信息标记为已加入组播。发现这十个节目的点播最早的终端1已经播放到3分钟,由于考虑网络延迟,从第四分钟节目的内容开始发送组播数据,将组播信息记录下来,其组播时间标记为10:00即第一个单播的发起时间,并通知所有终端加入组播接收数据。考虑处理的延迟,假设终端1接收到的组播数据为从第4分10秒开始的节目数据,终端1此后同时接收组播和单播数据,并将接收到的组播数据存储到硬盘中;当到10:04:10时终端发现接收的单播节目数据与存储的组播节目数据已经重合,通知服务器不再发送单播节目数据,服务器中止发网终端1的单播数据并将这个单播的信息从存储模块中删除;而终端1开始从硬盘中读取存储的组播节目数据进行播放。10:07:10时服务器发往所有的终端1到10的单播全部中止,所有点播节目通过一个组播发送。当10:09有一个终端11点播节目时,服务器先通过单播发送数据到终端11并存储这个单播的信息,同时服务器通知终端加入组播接收组播数据,将这个单播的信息设置为已加入组播,终端11加入接收组播数据并将接收到的组播数据存储到硬盘中。当到10:13:10时终端11发现点单播数据与组播内容重合通知服务器中止单播的发送数据并删除这个单播的信息,然后该终端11开始从硬盘中读取存储的组播数据,并播放。当10:11终端12发起点播请求时,服务器立即响应以单播方式向终端12发送节目数据,同时查找10分钟内是否有组播,确定出没有,同时查找10分钟未标记为已加入组播的单播的信息,此时也没有,故服务器将不通知终端12加入组播,直到到达建立新组播的条件并且该终端满足加入该新组播的条件为止。
|
单播 |
组播 |
分片组播 |
本发明所举案例 |
响应时间 |
0 |
5分钟(可选择) |
60秒(可选择) |
0 |
最小用户数服务器负担(单播) |
0 |
0 |
0 |
0 |
最小用户数服务器负担(组播)(单倍速率) |
0 |
20 |
14 |
0 |
最大用户数服务器负担(单播) |
N(点播数量决定) |
0 |
0 |
90 |
最大用户数服务器负担(组播) |
0 |
20 |
14 |
10 |
终端带宽要求(播放速度倍数) |
1 |
1 |
14 |
2 |
平均负担 |
N/2单播 |
20组播 |
14组播 |
45单播或5组播 |
服务器负担 |
大 |
大 |
小 |
小 |
网络拥塞概率 |
大 |
中 |
中 |
小 |
网络利用灵活性 |
灵活 |
固定 |
固定 |
灵活 |
表1
表1通过上述应用了本发明的情形与现有技术的单播、组播和分片组播的各种性能分析对比说明了本发明的有益效果。
从表1中可以看出利用传统组播方式需要很长的响应时间,若减小到两秒则分别需1800倍个单播放速度组播或420倍播放速度组播,更可怕的时后者需要终端的接收带宽为420倍的节目播放速度,即1Mbps的MPEG-4节目要420Mbps的带宽。传统单播的方式在多终端点播时对服务器的性能和带宽要求过高。采用本发明的方法即实现了单播的即时响应,又克服了传统单播实现VOD的对服务器过高的要求,同时也克服传统组播方式在无人点播时还需占用大量带宽和响应速度慢的缺陷。
以上是对本发明方法第一实施例的说明,在第一实施例中,发起组播的条件为在一定的时间跨度T内单播的数量达到或超过最小单播数量N个,并且由终端对接收的单播节目数据和组播节目数据是否重合进行判决。在本发明中,发起组播的条件也可以是在当前单播之前的建立组播时间门限T′时间内没有针对相同节目的组播,但存在针对相同节目的单播,下面通过第二实施例对这种情况进行说明。
在本发明的第二实施例中,预先在服务器中设定建立组播时间门限T′的值,该值可以根据节目长度确定,例如可以为节目长度的1/20至1/5之间的值,或者可以为预先确定的值,例如为5至20之间的值。
本实施例中,服务器与终端交互的流程如图8所示,该流程与第一实施例中服务器与终端的交互流程基本相同,区别仅在于:在步骤803中,服务器根据存储的组播信息判断在当前时间之前的T′时间内是否有发送上述节目数据的组播,如果是执行步骤804;否则执行步骤806。在步骤806中,服务器根据存储的单播信息判断是否有与当前单播针对相同节目数据的其他单播,如果是执行步骤807;否则执行步骤812。在步骤807中,服务器将组播地址发送给当前单播和服务器中记录的与当前单播节目数据相同其他单播对应的终端。
服务器内部处理的流程与第一实施例中基本相同,区别仅在于上述服务器与终端交互流程中所提及的判断内容不同。而终端内部处理的流程在本实施例中与第一实施例相同,这里不再详细说明。
在本发明中,发起组播的条件也可以是在当前单播之前没有针对相同节目的组播,下面通过第三实施例对这种情况进行说明。
本实施例中,服务器与终端交互的流程如图9所示,该流程与第一实施例中服务器与终端的交互流程也基本相同,区别仅在于:在步骤902中,可以不记录单播信息;在步骤903中,服务器判断是否已存在针对相同节目的组播,如果是执行步骤904,由于在步骤902中可以不记录单播信息,在步骤904中也可以不执行标记单播信息的步骤;否则直接执行步骤906。在步骤906中,服务器建立组播,将该组播地址发送给终端,并记录该组播信息,然后执行步骤905,步骤905与步骤305相同。此后的步骤907至步骤912与步骤308至步骤313基本相同,区别在于,在步骤909和步骤911中可以不删除单播信息。
在本实施例中,服务器内部处理的流程与第一实施例中基本相同,区别仅在于上述服务器与终端交互流程中所提及的判断内容不同。而终端内部处理的流程在本实施例中与第一实施例相同,这里不再详细说明。
在本发明中,对以单播和组播两种方式接收相同节目的终端在何时停止接收单播节目数据,也可以由服务器控制来实现。下面通过第四实施例来详细说明。
本发明的第四实施例可以基于上述第一至第三实施例中的任意一个,区别在于,在上述三个实施例的流程中,在通知终端加入组播的同时,即上述步骤304、307、804、807、904和步骤906中,服务器进一步读取该组播开始的时间Tg,该组播开始的时间为对应所有单播中最早开始的时间,并读取加入该组播的各个终端的单播开始时间Ts,服务器为每个终端计算停止发送单播节目数据时间Tstop,Tstop=Ts-Tg。则终端侧不执行判断单播节目数据和组播节目数据是否重合的步骤,而只是根据来自服务器侧的信息接收和存储节目数据,并在单播节目数据停止后读取最先接收的组播节目数据播放。而在服务器侧根据为终端计算的Tstop,在该时间到达后,停止向该终端发送单播节目数据。
本实施例中服务器内部的处理流程如图10所示,其中步骤1001和步骤1002与步骤501和步骤502相同。在步骤1003、决策模块判断是否已有终端可以加入的组播,如果是执行步骤1004;否则执行步骤1005。
步骤1004、决策模块通过通讯模块向终端发送消息通知上述终端加入该组播,并根据该组播的开始的时间和该终端单播开始的时间计算Tstop,然后执行步骤1008。
步骤1005、决策模块判断是否可以建立组播,如果是则执行步骤1006;否则执行步骤1007。
步骤1006、决策模块建立组播,将该组播信息存储到存储模块中,通过通讯模块发送组播节目数据,并通知对应终端加入该组播接收节目数据,然后分别为这些终端计算Tstop。
步骤1007、决策模块在达到了为终端计算的时间Tstop或在通过通讯模块接收到了来自终端的中止单播请求后,停止向终端发送单播节目数据,并删除该单播信息。
步骤1008、决策模块在确定出单播或组播节目数据发送完成后,停止向对应终端发送单播或组播节目数据,并将对应的单播或组播信息从存储模块中删除。
终端内部的处理流程如图11所示,其中步骤1101至步骤1105与图6中的步骤601至步骤605相同。区别在于,在步骤1105后,执行1106:播放控制模块判断是否接收到了用户的中止点播请求,如果是执行步骤1107,通过通讯模块向服务器发送中止点播请求,并停止播放,然后结束该流程;否则,执行步骤1108,播放控制模块在识别出单播节目数据已经结束接收,并且节目未播放完成后,顺序读取存储模块中存储的组播节目数据进行播放。
在本实施例中,由于直接由服务器决定停止向终端发送单播节目数据的时机,减少了终端与服务器之间的交互,节约了网络资源,并降低了终端的负担。
以上是对本发明方法具体实施例的详细说明。下面再对本发明的系统、服务器和终端的各组成部分及连接关系进行详细说明。
图4已经示出了本发明的系统,其中主要包括服务器41和终端42,在服务器41和终端42的通信过程中可以通过IP网络43进行。
其中,服务器41用于根据来自终端的点播请求向其以单播形式发送对应节目数据;和根据确定出的存在该终端可以加入的组播的信息,或根据确定出的为该单播建立对应组播的信息,将对应组播地址发送给终端;和根据确定的建立组播的信息发送组播节目数据;和根据来自终端的中止单播信息,或根据确定出的同时接收单播节目数据和组播节目数据的终端所接收的数据重合的信息,停止向终端发送单播节目数据。
终端42用于根据用户的点播请求向服务器发送点播请求,接收并播放服务器以单播方式发送的节目数据;和根据来自服务器的组播地址接收和存储服务器以组播方式发送的节目数据;和根据用户的中止播放请求或确定出的以单播方式接收的节目数据和以组播方式接收的节目数据重合的信息,向服务器发送中止单播信息;或进一步根据确定出的以单播方式接收的节目数据和以组播方式接收的节目数据重合的信息,顺序播放存储的组播节目数据。
服务器41中具体又可以包括通讯模块411、决策模块412、存储模块413。
其中,通讯模块411用于将服务器中的决策模块412、存储模块413和IP网络43连接,将通过IP网络43接收的信息传送给对应的决策模块412或存储模块413,以及将来自服务器中决策模块412、存储模块413的信息通过IP网络发送给终端。具体包括:接收终端通过IP网络43发送的点播请求,响应该请求以单播方式读取存储模块中的对应节目数据,将该单播信息记录到存储模块中,并将点播请求传送给决策模块;和将来自决策模块的组播信息通过IP网络43发送给终端,并根据来自决策模块412的发起组播的信息从存储模块413中读取并以组播方式发送对应的节目数据,以及根据来自终端的中止请求或来自决策模块的停止请求,停止读取和发送对应的节目数据。
决策模块412用于根据来自通讯模块412的点播请求确定是否将终端加入已有的组播,或是否需要发起组播,并根据确定出的将终端加入已有组播的信息或发起组播的信息,将组播信息发送给通讯模块412;和将发起的组播的信息存储在存储模块;或进一步用于根据向每个用户所发送的单播和组播的时间信息确定停止单播,并将确定的停止单播的停止请求发送给通讯模块421。
存储模块413,用于存储节目数据、单播信息及组播信息。
终端42中主要包括通讯模块421、播放控制模块422、存储模块423和判断模块424。
通讯模块421用于接收来自服务器的单播节目数据并将单播节目数据传送给播放控制模块,以及根据来自服务器的组播信息接收组播节目数据并存储到存储模块中;将用户发起的点播请求发送给服务器;根据用户发起的中止请求或根据来自判断模块的接收的单播节目数据和组播节目数据重合的信息向服务器发送中止单播请求;和根据来自用户的中止点播请求停止接收组播数据。
播放控制模块422用于接收来自通讯模块的单播节目数据并进行解码播放;根据来自判断模块的单播节目数据与组播节目数据重合的信息停止播放单播节目数据,并读取存储模块中存储的组播节目数据进行解码播放,或根据确定出的单播节目数据中止的信息读取存储模块中存储的组播节目数据并进行节目播放。
存储模块423主要用于存储组播节目数据。
判断模块424,用于确定所的接收的单播节目数据和存储模块中存储的组播节目数据是否重合,并将确定出的单播节目数据和组播节目数据重合的信息发送给播放控制模块和通讯模块。当由服务器确定停止向终端发送单播节目数据的情况下,终端中可以不包括判断模块424。
如图12所示,为终端播放控制的示意图,其中当图中所示开关121处于当前位置时,表示播放控制模块对单播节目数据进行解码播放,并将接收的组播节目数据存储到存储模块中。当图中所示开关连接存储模块和播放控制模块时,表示播放控制模块停止接收单播节目数据,而读取存储模块中存储的组播节目数据并解码播放。
可以理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。