具体实施方式
为了克服现有技术中通过单播方式进行流媒体数据传输时给流媒体源和中间网络带来的沉重压力,本发明通过将流媒体源和接入的用户终端之间的路由装置作为流媒体源和用户终端之间信息交互的代理,并将流媒体源数据在流媒体源之外加以复制,以单播的形式实现组播的功能。
其中,本发明所提供的实现流媒体数据传输的方法,适用于在流媒体源和接入的客户端之间提供数据转发的路由装置,包括以下步骤:
步骤1、终止客户端对一流媒体源的请求指令,关联记录该流媒体源信息与该客户端信息,并分别维护到该客户端和该流媒体源的连接;
步骤2、根据所述流媒体源关联的客户端信息,对从所述流媒体源接收的数据进行复制并分别单播给所关联的客户端。
在本发明中,以路由装置预设有路由代理表来记录流媒体源信息与客户端信息为例进行说明,但可以理解,所谓路由代理表,是一种记录信息的载体,可以以列表的形式存在,也可以以程序段等形式存在。命名为路由代理表仅为说明方便而非局限。
下面通过实施例1~实施例5对本发明本发明所提供的实现流媒体数据传输的方法的具体方案进行详细描述。
实施例1:
请参考图2,本实施例1包括以下步骤:
S1-1、当接收到客户端对一流媒体源的请求指令时,终止该请求指令并维护其与所述客户端的连接;
一般来说,客户端请求一流媒体源数据时,会通过其接入的路由器向流媒体源发出请求,该请求中携带有客户端信息,以便当流媒体源可以根据该请求,向客户端返回相应的流媒体数据,并由此导致了多个用户向同一个流媒体源请求时,流媒体源要同时返回多份数据,进而造成了对流媒体源和中间网络的压力。
但在本实施例1中,由于路由装置接收到客户端的请求时即行终止该请求指令,从而保证流媒体源不会获得该客户端信息。
需要指出,在保证流媒体源不会获得该客户端的信息的同时,路由装置必须将原本流媒体源对客户端的连接维护工作转移过来,以保证从客户端角度而言,并不会发生使用感受上的差别。具体的,路由装置可以通过心跳报文来维护与所述客户端的连接:当在预设时间内接收到客户端的心跳报文时,表明连接正常,否则表明连接断开。
S1-2、识别预设的路由代理表中是否已记录该流媒体源信息;
由于路由装置中断了流媒体源与客户端之间的交流,因此必须对其加以记录,以确保从流媒体源和客户端两个方向发来的数据都能够找到下一跳路径。在本实施例1中,通过预设路由代理表来实现。
其中,该路由代理表初始化时为空,用于关联记录客户端信息和流媒体源信息。
S1-3、是则,将该客户端信息添加到路由代理表中,使之与该流媒体源信息关联,并执行步骤S1-6;
以该路由代理表为列表形式为例,关联的具体方式可以为在流媒体源信息项下添加该客户端信息,也可以是复制该流媒体源信息作为列表中的一个新项,并在其下添加该客户端信息。
该客户端信息可以为客户端的IP地址和/或端口号。
S1-4、否则,将该客户端信息和该流媒体源信息关联添加到路由代理表中;
仍以列表形式为例,关联添加的具体方式可以为新建流媒体源信息项,并在该项下添加该客户端信息。
该流媒体源信息可以为流媒体源的IP地址、端口号和/或流媒体源ID号。一般来说,一个流媒体服务器往往包括多个流媒体源,则此时,流媒体源的IP地址相同,必须再通过流媒体ID号加以区分。
S1-5、向流媒体源发送请求指令并维护与该流媒体源的连接;
由于原路由代理表中不存在相应的流媒体源信息,说明此前尚未有客户端对该流媒体源发出请求,则此时,由路由装置发出请求。具体的,向流媒体源发送请求指令可以通过以下方式实现:将客户端对所述流媒体源请求指令的源IP地址修改为本地IP地址。
与客户端类似,路由装置必须将原本客户端对流媒体源的连接维护工作转移过来,以保证从流媒体源角度而言,不会发生使用感受上的差别。具体的,路由装置可以通过心跳报文来维护与所述流媒体源的连接:当在预设时间内接收到流媒体源的心跳报文时,表明连接正常,否则表明连接断开。
从步骤S1-3至步骤S1-5可以看出,路由装置在终结客户端的请求报文后,将代替客户端向流媒体源发出请求,则流媒体源所记录的对象,仅为该路由装置。正是基于这一点,当识别路由代理表中已经存在一流媒体源信息时,说明该流媒体源已经接收到了本路由装置的请求,因此无需再次向流媒体源发出请求。显然,从流媒体源的角度来说,对于每一个路由装置,该流媒体源仅收到一次请求,而该路由装置则可能已经终结并记录了多次从客户端发出的请求。
S1-6、根据流媒体源在路由代理表中关联的客户端信息,对从流媒体源接收的数据进行复制并分别单播给该客户端;
由于流媒体源对于一个路由装置仅收到一次请求,因此流媒体源仅需要向该路由装置发送一份多媒体数据,而不必针对路由装置下的多个客户端分别发送相同的多媒体数据;针对客户端进行多媒体数据发送的工作被转移给了路由装置进行。显然,这对于流媒体源的性能要求就大大降低了,也有效的避免了流媒体源与路由装置之间中间网络的压力。
具体的,对从该流媒体源接收的数据进行复制并分别单播给客户端可以通过以下方式实现:根据流媒体源在路由代理表中关联的客户端信息对数据进行复制,将复制后数据的目的IP地址修改为相应客户端的IP地址并发送。
其中,进行数据复制的数目可根据管理员对路由装置的设置确定,只要复制得到客户端数目份数据即可。一般来说,路由装置收到流媒体源发出的数据流,如果只有一个请求客户端,路由装置可以直接修改IP地址,并将该数据源发送给该客户端;如果有两个(或以上)的客户端点播同一个流媒体源,路由器复制两份(或以上),分别单播发送给客户端。在这一过程中,路由装置本身一般不保存数据流。
需要指出,步骤S1-1至步骤S1-5与步骤S1-6并不存在严格的时序关系,即可以在步骤S1-6之前发生,也可以在步骤S1-6的同时发生。这就导致了存在两种不同的处理方式:
第一种,是从流媒体源接收到数据时,根据流媒体源当前在路由代理表中关联的客户端信息,对该数据进行复制并分别单播给相应客户端;这种情况相对简单,但对于在流媒体源数据传输期间收到客户端请求的情况,则无法进行处理;也就是说,这种处理方式下,只有步骤S1-6之前执行步骤S1-1至步骤S1-5的客户端,才能够获得复制的数据。
第二种,则是在流媒体数据传输过程中实时支持客户端变化,即无论步骤S1-1至步骤S1-5在步骤S1-6之前,或者在步骤S1-6的同时发生,都能够得到复制的数据。其具体实现方案通过下述实施例2和实施例3加以描述。
实施例2:
为了实现流媒体数据传输过程中,能够实时支持路由代理表中客户端信息的变化,本实施例2提供了以下技术方案,请参考图3,包括以下步骤:
S2-6-1、实施监测流媒体源在路由代理表中关联的客户端信息是否发生变化;该变化可以包括有新的客户端提出对该流媒体源的请求而加入,或者,原有的客户端中止了从该流媒体源接收数据的操作而退出。
S2-6-2、未发生变化,则保持当前的复制单播状态;
S2-6-3、发生变化,根据变化后的客户端信息,对接收到的数据进行复制并分别单播给客户端。
可以看出,复制的数量能够随着路由代理表中信息的变化实时更新,因此在流媒体数据传输过程中提出请求的客户端可自路由装置收到请求并处理的一刻起,就开始接收所请求的流媒体数据,当然,这时候由于流媒体数据已经传输了一段时间,因此接收到的流媒体数据往往并不是完整的数据,即客户端开始解码播放的部分可能是流媒体节目的中间部分;这与日常生活中收看电视节目类似,随时打开随时收看,但只能从电视打开时那一刻播放的节目起收看。但是这种方式下,能够随时满足客户端的收看要求。进一步的,如果给路由装置设置一个外挂数据库,用于暂时保存当前正在复制的流媒体数据,则能够实现根据客户端的请求完整发送流媒体数据的目的;该暂存的流媒体数据如果在被转发完成的一段时间内没有被其他客户端请求,将被清空。这种技术方案对本领域技术人员而言是可以实现的,不再赘述。
相应的,在流媒体数据传输过程中退出的客户端可自路由装置处理的一刻起,就不会再收到路由装置发送的流媒体数据,而路由装置也无需进行该份数据的复制工作。
总的来说,实施例2所提供的技术方案能够根据客户端情况的变化随时对复制数量进行调整。
其中,步骤S2-6-1至步骤S2-6-3所监测的是客户端的随时加入和随时退出。具体的,通过实施例1中的步骤S1-1和步骤S1-5,就能够实现在从流媒体源接收数据的过程中新客户端的随时加入;而下述实施例3所提供的方案能够在从流媒体源接收数据的过程中支持原有客户端的随时退出。
实施例3:
请参考图4,实施例3描述了一种实现流媒体数据传输的方法,在从流媒体源接收数据的过程中支持原有客户端的随时退出;具体方案为,在实施例1或实施例2的基础上,还包括以下步骤:
S3-7、路由装置监测到一客户端退出一媒体源;
可以以两种情况来举例说明:
第一种,路由装置接收到客户端对一流媒体源的退出指令;
第二种,路由装置在预设时间内未收到客户端的心跳报文,从而监测到与客户端的连接关系断开。为了实现这一方案,可由路由装置为该客户端启动一个计时器,如果计时器超时,则路由设备认为该客户端已经退出点播。具体的超时时间可由使用者根据实际需要设置。
S3-8、识别所述路由代理表中该流媒体源是否关联有其他客户端;
S3-9、是则,删除该客户端信息;
S3-10、否则,删除该客户端信息和该流媒体源信息,并向该流媒体源发送退出指令。
则当实时监测到流媒体源在路由代理表中关联的客户端减少时,将重新调整复制操作,减少复制份数。
实施例4:
从上述实施例1~实施例3可以看出,流媒体源所了解的仅仅为路由装置的信息,而客户端也仅从路由装置接收数据。但在实际应用中,往往流媒体源都需要进行客户端的注册/认证,并且只对认证通过的客户端发送流媒体数据。因此,本实施例在上述实施例1~实施例3的基础上,进一步提供了通过路由装置代理客户端进行认证的技术方案,请参考图5,包括以下步骤:
S4-1、当接收到客户端对一流媒体源的请求指令时,终止所述请求指令并维护与所述客户端的连接;
S4-2、识别预设的路由代理表中是否已记录该流媒体源信息;
S4-3-1、是则,将该客户端信息添加到路由代理表中,使之与该流媒体源信息关联;
S4-3-2、设置该客户端信息处于无效状态,即此时即使收到该流媒体源信息,也不会将该客户端纳入复制对象范围内;
S4-3-3、向流媒体源发起客户端认证请求;
S4-3-4、识别接收到的指令;
S4-3-5、接收到流媒体源发送的认证通过指令后,设置客户端信息生效,并执行步骤S4-6;
S4-3-6、当接收到流媒体源发送的认证失败指令后,删除客户端信息,结束;
S4-4-1、否则,将该客户端信息和该流媒体源信息关联添加到路由代理表中;
S4-4-2、设置该客户端信息处于无效状态,由于还未向流媒体源提出申请,因此在此阶段不会收到流媒体源数据;
S4-4-3、向流媒体源发起客户端认证请求;
S4-4-4、识别接收到的指令;
S4-4-5、接收到流媒体源发送的认证通过指令后,设置客户端信息生效,并执行步骤S4-5;
S4-4-6、当接收到流媒体源发送的认证失败指令后,删除客户端信息及流媒体源信息,结束;
S4-5、向所媒体源发送请求指令并维护与流媒体源的连接;
S4-6、根据该流媒体源在路由代理表中关联的客户端信息,对从该流媒体源接收的数据进行复制并分别单播给该客户端,结束。
可以看出,当需要进行注册时,可以按照与认证相似的方式,由路由装置终结注册报文,同时记录下客户端信息;然后向流媒体源发送注册信息,进行注册,在此不再赘述。
实施例5:
本实施例5以客户端信息为客户端的IP地址,流媒体源为视频服务器,为了说明方便起见,假定该视频服务器只有一个视频源,流媒体源信息为流媒体源的IP地址为例,对本发明所提供的实现流媒体数据传输的方法进行说明。但本领域普通技术人员可以了解,除了使用上述IP地址来区分以外,客户端信息还可以通过端口号或者端口号和IP地址的组合来区分,流媒体源信息还可以通过端口号或者流媒体源ID号或者IP地址与这两者的任意组合进行区分。
具体的,本实施例5中实现流媒体数据传输的方法过程如下:
(1)客户端请求视频服务器视频流;
客户端A向视频服务器发送请求,该客户端A的IP地址为192.168.1.2,视频服务器的IP地址为10.10.10.10;
路由器接收到该请求报文后,终止该请求报文,使该报文不会被发送到视频服务器;
路由器在其预设的路由代理表中记录该客户端A的IP地址和视频服务器的IP地址;
路由器向该视频服务器发送请求报文,该报文的源IP地址为路由器的IP地址;
客户端B向视频服务器发送请求,该客户端B的IP地址为192.168.1.3,视频服务器的IP地址为10.10.10.10;
路由器接收到该请求报文后,终止该请求报文,使该报文不会被发送到视频服务器;
路由器检查到其预设的路由代理表中已记录有该视频服务器的IP地址,因此复制该视频服务器地址项,并对应添加客户端B的IP地址;此时,该路由器不需要再次向视频服务器发送请求报文,只是单纯的添加信息。
在客户端A和客户端B的信息都被记录后,路由代理表内容如表1所示:
编号 |
视频服务器地址 |
客户端地址 |
1 |
10.10.10.10 |
192.168.1.2 |
2 |
10.10.10.10 |
192.168.1.3 |
表1
(2)视频流的转发;
视频服务器收到请求后,发送单播视频流给路由器;
路由器查看路由代理表,发现该视频源对应两个客户端;
则路由器对该视频流进行复制,将复制后数据的目的IP地址修改为相应客户端的IP地址并发送;
此后,接收到视频流的客户端进行解码,还原视频图像。
在本实施例5中,是以一个视频服务器具有一个视频源为例进行说明,但是常见的情况下,一个视频服务器一般都具有多个视频源,因此,可以在代理路由表中以视频服务器地址+视频源ID号的形式,记录流媒体源信息。
从实施例5可以看出,当客户端信息为客户端的IP地址,流媒体源信息为流媒体源的IP地址的情况下,向流媒体源发送请求指令包括将客户端对所述流媒体源请求指令的源IP地址修改为本地IP地址,路由器通过这种方式完成对客户端请求的终结,以及重新向流媒体源发送请求;对数据进行复制并分别单播给客户端包括:根据所述流媒体源在路由代理表中关联的客户端信息对所述数据进行复制,将复制后数据的目的IP地址修改为相应客户端的IP地址并发送。
从上述实施例1~实施例5可以看出,在本发明中客户端和流媒体源之间的单播关系由路由装置通过代理方式建立和维护,路由装置根据路由代理表复制单播流量并下发,降低了对流媒体源性能和中间网络带宽的要求。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序适用于在流媒体源和接入的客户端之间提供数据转发的路由装置。在执行时包括如下步骤:
步骤1、终止客户端对一流媒体源的请求指令,关联记录所述流媒体源信息与所述客户端信息,并分别维护到所述客户端和所述流媒体源的连接;
步骤2、根据所述流媒体源关联的客户端信息,对从所述流媒体源接收的进行复制并分别单播给所关联的客户端。
所述的存储介质包括:ROM/RAM、磁碟或者光盘等。
相应的,本发明还提供了实现流媒体数据传输的路由装置,下面通过实施例6~实施例10加以描述。
实施例6:
请参考图6,本实施例6所提供的实现流媒体数据传输的路由装置300,用于在流媒体源100和接入的客户端400之间提供数据转发。
其中,流媒体源100用于提供流媒体数据,用户请求的管理,以及向客户端400发送流媒体数据;如果采用集中的管理方式,可以实现对更多的客户端进行管理;比如,视频服务器、音频服务器等,都属于流媒体源100。
客户端400是音/视频解码的终端设备,比如用户的PC终端等,用于向流媒体源点播流媒体节目,接收流媒体源发送的流媒体数据并解码收看。
该路由装置300可以为路由器,其通过中间网络与流媒体源100连接,通过本地连接与接入的客户端400连接,用于提供数据传输和转发,在本实施例6中,路由装置300还用于在客户端400请求流媒体节目时,提供代理点播功能,即路由装置300终结客户端400的请求,并代替该客户端400向流媒体源100发送请求;流媒体源100发送单播流量给路由装置300,路由装置300通过替换IP地址发送给客户端400。具体实现方案为该路由装置300包括:
记录单元301,用于记录并保存客户端和流媒体源的关联信息;
客户端维护单元302,用于接收接入的客户端400对流媒体源100的请求指令,终止所述请求指令并维护与所述客户端的连接,以及触发所述记录单元301进行该关联信息的记录;其中,具体连接的维护可以通过心跳报文进行;
流媒体源维护单元303,与记录单元301连接,用于维护与记录单元301中所记录流媒体源100的连接,以及从流媒体源100接收数据,该数据为流媒体数据;
复制单播单元304,分别与记录单元301和流媒体源维护单元303连接,用于根据流媒体源100在记录单元中关联的客户端信息,对流媒体数据进行复制并分别单播给客户端400。
可以看出,本实施例6所提供的实现流媒体数据传输的装置,仅需对现有的接入路由器进行改进即可实现,简单易行。改进后的接入路由器能够以代理方式建立客户端与流媒体源之间的单播点播关系,从而降低了对流媒体源性能的要求和对中间网络的带宽压力,同时保证了服务质量。
实施例7:
在实际应用中,流媒体源维护单元303负责维护与流媒体源100的连接包括建立与流媒体源100的连接工作和维护与流媒体源100连接工作。由于可能存在多个客户端400请求一个流媒体源100的情况,因此较佳的技术方案是,在建立与该流媒体源100的连接后,再收到客户端400的请求后,不再重新请求。为实现这一方案,请参考图7,记录单元301包括:
路由代理表3011,用于保存客户端信息和流媒体源信息;
判断模块3012,用于识别路由代理表3011中是否已记录所请求的流媒体源100信息,并将判断结果通知给关联执行模块3013;
关联执行模块3013,用于将客户端信息添加到路由代理表3011中,并使之与已记录的流媒体源信息关联;以及,将客户端信息和未记录的流媒体源信息添加到所述路由代理表3011中使其互相关联,并触发流媒体维护单元303向流媒体源100发送请求指令。
具体的,以流媒体源100为视频服务器,路由装置300为接入路由器为例:当客户端A点播视频服务器的时候,客户端A会发送请求给接入路由器;接入路由器收到请求后,会发送请求给视频服务器,同时记下该客户端A的IP地址;视频服务器收到该请求后,会发送单播视频流给接入路由器;接入路由器收到该单播流会根据客户端A的IP修改视频流的目的IP;这样客户端A就会接收到该视频流。
如果客户端B也点播该视频服务器时候,客户端B向接入路由器发送请求;接入路由器发现该视频源相同,就不再新发起请求并记录下客户端B的IP地址;同时将该视频流复制一份,根据客户端B的IP修改视频流的目的IP;这样客户端B也会接收到该视频流。
实施例8:
进一步的,为了提供对于流媒体源100认证以及实时调整复制流量的支持,在上述实施例6或7的基础上,下面通过实施例8~实施例10加以描述,请参考图8。
实施例8:
为了实现对于流媒体源100认证的支持,本发明提供的实现流媒体数据传输的装置还包括与记录单元301连接的认证单元305。
该认证单元305用于将记录单元301添加的客户端信息设置为无效状态,并向流媒体源100发起客户端认证请求,以及,在接收到流媒体源100发送的认证通过指令后,设置客户端信息生效,接收到流媒体源发送的认证失败指令后,删除所述客户端信息。
具体的,认证请求中可以通过携带用户名和密码实现认证。
显然,认证通过后,在路由装置300中的客户端信息生效;如果客户端400点播的流媒体源100为已知节目源,则路由装置300直接复制一份流量给用户;如果客户端400点播一个未知视频流,则路由装置300向流媒体源100发起请求,点播视频;如果客户端400停止点播,路由装置300查看是否还有其他客户端点播,如该流媒体源100无其他用户,路由装置300向流媒体源100发起停止点播,停止该视频流。
如果未通过认证,删除相应的客户端和流媒体源信息,返回拒绝消息给客户端400。
实施例9:
为了实现对于实时调整复制流量的支持,本发明提供的实现流媒体数据传输的装置还包括与记录单元301连接的记录监测单元306,用于监测记录单元301,并在客户端信息发生变化时,触发复制单播单元304,使其根据变化后的客户端信息,对数据进行复制并分别单播给所述客户端。
通过本实施例9,能够实现对所记录客户端信息实时变化的迅速反应。
实施例10:
记录单元301的实时变化可能由很多因素导致,比如客户端400发起退出流媒体源100的请求,再比如,监测到本路由装置300与客户端400的连接关系断开。
本实施例10所提供的装置,即可实现对记录单元301的实时调整。具体为本实施例10所提供的实现流媒体数据传输的路由装置还包括:
与客户端维护单元302连接的记录控制单元307,用于监测客户端退出媒体源;其中,记录控制单元307与客户端维护单元302连接,可以监测到本路由装置300与客户端400的连接关系断开,以及监测到客户端400发起退出流媒体源100的请求。
该记录控制单元307与记录单元301连接,用于在监测到客户端400退出流媒体源100的情况下,识别记录单元301中该流媒体源100是否关联有其他客户端400,是则删除该客户端信息,否则删除该客户端信息和该流媒体源信息,并通过流媒体源维护单元304向流媒体源100发送退出指令。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。