在快速频道切换时预先发送加入组播请求的方法和系统技术领域
本发明涉及通信领域,具体涉及一种在快速频道切换时预先发送加入组播
请求的方法和系统。
背景技术
数字视频编码技术普遍采用帧间编码来提高压缩率,这就导致解码端必须
接收到I帧(Intra Frame,帧内编码帧)才能开始正确显示视频画面。在IPTV
中倾向于采用组播技术传输直播码流,所有终端都共同接收同样的一路码流。
当终端进行频道切换时,其开始接收直播码流的时刻是随机的,通常需要等待
一段时间才能接收到I帧并显示视频画面,这严重影响了IPTV的频道切换速度。
已经有多种快速频道切换(Fast Channel Change,FCC)方案用于提升IPTV
的频道切换速度,目前的主流方案是采用快速频道切换服务器(Fast Channel
Change Server,FCC Server或FCC服务器)对频道码流进行缓存,在频道切换
时采用单播方式向终端快速发送以I帧开头的码流,终端接收后迅速解码显示
视频画面,随后FCC Server停止发送单播码流,终端开始使用组播码流进行解
码。
在上述方案中,FCC Server停止发送单播码流和终端开始使用组播码流解
码的切换(后续简称为“单播与组播切换”)时机非常关键,过早切换可能接收
不到足够的单播数据,无法与组播数据衔接,导致终端播放的视频画面受损影
响用户体验;而过晚切换虽然不必担心单播与组播数据的衔接,但FCC Server
要发送较长时间的单播码流,无形中浪费了FCC Server的处理能力,增加了部
署成本。
本文随后部分将支持快速频道切换的终端称为快速频道切换客户端(Fast
Channel Change Client,FCC Client或FCC客户端),在不致引起混淆的情况下
直接简称为“客户端”,与此对应,快速频道切换服务器可被简称为“服务器”。
目前,可以由服务器以较高速度发送单播码流,在单播码流与组播码流同
步(即实现衔接)时通知客户端请求加入组播组,客户端在接收到组播码流之
后通知服务器停止发送单播码流。在实际的IPTV承载网中,数据设备处理加
入组播组的请求需要消耗一定的时间,这就意味着客户端从发送加入组播请求
到接收到组播码流之间存在延时间隔,这个时间短则300ms,长则700ms甚至
更长,而上述切换机制并未考虑这个时间开销,则在单播与组播码流同步之后
服务器还要继续发送数百毫秒的单播码流直到客户端真正收到组播码流,这显
然浪费了服务能力。
在IETF(Internet Engineering Task Force互联网工程任务组)草案
draft-ietf-avt-rapid-acquisition-for-rtp-17中,服务器可以计算出客户端请求加入
组播组的最早时间并传递给客户端,客户端可以参考这个数据自行确定请求加
入组播组的时间,至于如何得到“请求加入组播组的最早时间”的数据以及客
户端如何使用这个数据,该文档并未给出实质性的说明。
发明内容
有鉴于此,本发明的主要目的在于提供一种在快速频道切换时预先发送加
入组播请求的方法和系统,以缩短服务器发送单播码流的时间,节约处理能力。
为达到上述目的,本发明的技术方案是这样实现的:
在快速频道切换时预先发送加入组播请求的方法,该方法包括:
搜集数据设备处理加入组播请求的处理时间开销,计算单播与组播码流同
步的时间,计算客户端预先发出加入组播请求的时刻。
所述搜集方法为以下至少之一;并且在获得多个不同的数值时,采用包括
取最小值或平均值在内的统计学方法得到单一的数值,作为组播请求处理延时:
实时统计;客户端在正常工作时,计算其自身每次从发送加入组播请求到
接收到组播码流之间的时间间隔;
实验分析;使用支持组播功能的网络主机进行实验,测量其从发送加入组
播请求到接收到组播码流之间的时间间隔;
经验估算;综合包括历史数据、实验结果、设备型号、网络架构在内的因
素,进行合理估计;
所述计算单播与组播码流同步的时间的方法为:
TSync=PDif/(RUc-RMc) 公式1
上式中,TSync为估算的单播与组播码流同步的时间,PDif为某一时刻服务
器已发送的单播媒体包和其已接收的组播媒体包之间相隔的数据量,RUc为服务
器发送单播码流的平均码率,RMc为组播码流的平均码率;
将公式1左边的除数和被除数同时除以RMc,得到如下等价公式:
TSync=TDif/(αUc-1) 公式2
上式中,TSync为估算的单播与组播码流同步的时间,TDif为某媒体包从被
接收到被发送之间的时间间隔,αUc为单播码率相对于组播码率的比例;
所述计算客户端预先发出加入组播请求的时刻的方法为:
TReqMc=TSync-TMcDly 公式3
上式中,TReqMc为客户端预先发出加入组播请求的相对时间,TSync为单播
与组播码流同步时间,TMcDly为组播请求处理延时。
在快速频道切换时预先发送加入组播请求的方法,该方法包括:
将组播请求处理延时通知到服务器,服务器计算客户端预先发送加入组播
请求的时间,服务器控制客户端预先发出加入组播请求。
所述通知的方法为:由客户端保存组播请求处理延时数值,通过通讯链路
发送给服务器;将组播请求处理延时作为服务器的配置参数;
所述计算客户端预先发送加入组播请求的时间的方法为:
TReqMc=TSync-TMcDly 公式3
上式中,TReqMc为客户端预先发出加入组播请求的相对时间,TSync为单播
与组播码流同步时间,TMcDly为组播请求处理延时;
所述服务器控制客户端预先发出加入组播请求的方法为:
服务器将计算得到的预先加入组播组的时刻通过通讯链路通知给客户端,
客户端在预定的时刻发出加入组播请求;或者,
服务器在预先加入组播组的时刻到达时通知客户端,客户端收到通知后立
即发出加入组播请求。
在快速频道切换时预先发送加入组播请求的方法,该方法包括:
将组播请求处理延时通知到客户端,服务器计算单播与组播码流同步的时
间,客户端预先发送加入组播请求。
所述将组播请求处理延时通知到客户端的过程中,客户端直接保存结果;
或者,将组播请求处理延时作为客户端的配置参数;
所述服务器计算单播与组播码流同步的时间的方法为:
TSync=PDif/(RUc-RMc) 公式1
上式中,TSync为估算的单播与组播码流同步的时间,PDif为一时刻服务器
已发送的单播媒体包和其已接收的组播媒体包之间相隔的数据量,RUc为服务器
发送单播码流的平均码率,RMc为组播码流的平均码率;
将公式1左边的除数和被除数同时除以RMc,得到如下等价公式:
TSync=TDif/(αUc-1) 公式2
上式中,TSync为估算的单播与组播码流同步的时间,TDif为媒体包从被接
收到被发送之间的时间间隔,αUc为单播码率相对于组播码率的比例;
所述客户端预先发送加入组播请求的方法为:
服务器将单播与组播码流同步时间的计算结果通过通讯链路发送给客户
端;客户端计算预先发出加入组播请求的时间,并在预先发出加入组播请求的
时刻到达时发出加入组播请求。
在快速频道切换时预先发送加入组播请求的系统,该系统包括搜集单元、
计算单元;其中,
所述搜集单元,用于搜集数据设备处理加入组播请求的处理时间开销;
所述计算单元,用于计算单播与组播码流同步的时间,计算客户端预先发
出加入组播请求的时刻。
所述搜集单元在进行所述搜集时,采用的搜集方法为以下至少之一;并且
在获得多个不同的数值时,采用包括取最小值或平均值在内的统计学方法得到
单一的数值,作为组播请求处理延时:
实时统计;在客户端正常工作时,计算客户端每次从发送加入组播请求到
接收到组播码流之间的时间间隔;
实验分析;使用支持组播功能的网络主机进行实验,测量其从发送加入组
播请求到接收到组播码流之间的时间间隔;
经验估算;综合包括历史数据、实验结果、设备型号、网络架构在内的因
素,进行合理估计;
所述计算单元在计算单播与组播码流同步的时间时,用于:
TSync=PDif/(RUc-RMc) 公式1
上式中,TSync为估算的单播与组播码流同步的时间,PDif为一时刻服务器
已发送的单播媒体包和其已接收的组播媒体包之间相隔的数据量,RUc为服务器
发送单播码流的平均码率,RMc为组播码流的平均码率;
将公式1左边的除数和被除数同时除以RMc,得到如下等价公式:
TSync=TDif/(αUc-1) 公式2
上式中,TSync为估算的单播与组播码流同步的时间,TDif为媒体包从被接
收到被发送之间的时间间隔,αUc为单播码率相对于组播码率的比例;
所述计算单元在计算客户端预先发出加入组播请求的时刻时,用于:
TReqMc=TSync-TMcDly 公式3
上式中,TReqMc为客户端预先发出加入组播请求的相对时间,TSync为单播
与组播码流同步时间,TMcDly为组播请求处理延时。
在快速频道切换时预先发送加入组播请求的系统,该系统包括通知单元、
服务器、客户端;其中,
所述通知单元,用于将组播请求处理延时通知到服务器;
所述服务器,用于计算客户端预先发送加入组播请求的时间,并且控制客
户端预先发出加入组播请求。
所述通知单元进行所述通知时,用于:触发客户端保存组播请求处理延时
数值,通过通讯链路发送给服务器;将组播请求处理延时作为服务器的配置参
数;
所述服务器计算客户端预先发送加入组播请求的时间时,用于:
TReqMc=TSync-TMcDly 公式3
上式中,TReqMc为客户端预先发出加入组播请求的相对时间,TSync为单播
与组播码流同步时间,TMcDly为组播请求处理延时;
所述服务器控制客户端预先发出加入组播请求时,用于:
将计算得到的预先加入组播组的时刻通过通讯链路通知给客户端,触发客
户端在预定的时刻发出加入组播请求;或者,
在预先加入组播组的时刻到达时通知客户端,触发客户端在收到通知后立
即发出加入组播请求。
在快速频道切换时预先发送加入组播请求的系统,该系统包括通知单元、
服务器、客户端;其中,
所述通知单元,用于将组播请求处理延时通知到客户端;
所述服务器,用于计算单播与组播码流同步的时间;
所述客户端,用于预先发送加入组播请求。
所述通知单元将组播请求处理延时通知到客户端的过程中,客户端用于直
接保存结果;或者,将组播请求处理延时作为客户端的配置参数;
所述服务器计算单播与组播码流同步的时间时,用于:
TSync=PDif/(RUc-RMc) 公式1
上式中,TSync为估算的单播与组播码流同步的时间,PDif为一时刻服务器
已发送的单播媒体包和其已接收的组播媒体包之间相隔的数据量,RUc为服务器
发送单播码流的平均码率,RMc为组播码流的平均码率;
将公式1左边的除数和被除数同时除以RMc,得到如下等价公式:
TSync=TDif/(αUc-1) 公式2
上式中,TSync为估算的单播与组播码流同步的时间,TDif为媒体包从被接
收到被发送之间的时间间隔,αUc为单播码率相对于组播码率的比例;
所述客户端预先发送加入组播请求时,用于:
在服务器将单播与组播码流同步时间的计算结果通过通讯链路发送给客户
端后,计算预先发出加入组播请求的时间,并在预先发出加入组播请求的时刻
到达时发出加入组播请求。
可见,本发明方法和系统,克服了现有快速频道切换技术中单播与组播切
换机制未考虑数据设备处理加入组播请求的处理时间开销,导致快速频道切换
服务器浪费处理能力的缺点,考虑在频道快速切换过程中预先发送加入组播请
求的时间,从而缩短服务器发送单播码流的时间,节约处理能力,降低部署成
本。
附图说明
图1为本发明预先发送加入组播请求的时间的计算方法示意图;
图2为本发明计算在频道快速切换过程中预先发送加入组播请求的时间的
流程简图;
图3为本发明一实施例的在快速频道切换过程中预先发送加入组播请求的
流程简图;
图4为本发明另一实施例的在快速频道切换过程中预先发送加入组播请求
的流程简图;
图5为本发明提供的两个实施例的部署模型示意图;
图6为本发明实施例一快速频道切换过程的流程图;
图7为本发明实施例二快速频道切换过程的流程图。
具体实施方式
为了克服现有快速频道切换技术中单播与组播切换机制未考虑数据设备处
理加入组播请求的处理时间开销,导致快速频道切换服务器浪费处理能力的缺
点,可以考虑在频道快速切换过程中预先发送加入组播请求的时间,从而缩短
服务器发送单播码流的时间,节约处理能力,降低部署成本。
本发明所述计算在频道快速切换过程中预先发送加入组播请求的时间的方
法如下:
第一步、搜集数据设备处理加入组播请求的处理时间开销(以后简称为“组
播请求处理延时”),存在多种搜集方式,包括但不限于:
实时统计;客户端在正常工作时,计算其自身每次从发送加入组播请求到
接收到组播码流之间的时间间隔;
实验分析;使用支持组播功能的网络主机进行实验,测量其从发送加入组
播请求到接收到组播码流之间的时间间隔;
经验估算;综合历史数据、实验结果、设备型号、网络架构等各种因素,
进行合理的估计。
上述方式可单独使用也可组合使用,如果获得多个不同的数值,则采用取
最小值或平均值等统计学方法得到一个单一的数值,作为组播请求处理延时。
第二步、计算单播与组播码流同步的时间;
服务器持续接收组播码流并进行缓存,当客户端向服务器请求快速频道切
换服务时,服务器将从缓冲区中取出以I帧开头的媒体包采用单播方式发送给
客户端。
采用如下公式计算出单播与组播码流同步的时间:
TSync=PDif/(RUc-RMc) 公式1
上式中,TSync为估算的单播与组播码流同步的时间,PDif为某个时刻服务
器已发送的单播媒体包和其已接收的组播媒体包之间相隔的数据量,RUc为服务
器发送单播码流的平均码率,RMc为组播码流的平均码率。
将公式1左边的除数和被除数同时除以RMc,可得到如下等价公式:
TSync=TDif/(αUc-1) 公式2
上式中,TSync为估算的单播与组播码流同步的时间,TDif为某个媒体包从
被接收到被发送之间的时间间隔,αUc为单播码率相对于组播码率的比例,即:
αUc=RUc/RMc
本步骤得到的结果是一个相对时间:对于公式1,其计时起点是进行计算
的时刻;对于公式2,其计时起点是被选择用于计算的媒体包被发送的时刻。
第三步、计算客户端预先发出加入组播请求的时刻;
采用下式进行计算:
TReqMc=TSync-TMcDly 公式3
上式中,TReqMc为客户端预先发出加入组播请求的相对时间,TSync为单播
与组播码流同步时间,TMcDly为组播请求处理延时。
可由服务器、客户端或其它设备完成上述步骤二和步骤三的计算,只要将
计算所需参数传递给相应的设备即可。公式1、公式2和公式3还可表示为绝
对时间形式,并可能还有其它的等价形式。
本发明所述在快速频道切换过程中预先发送加入组播请求的第一种方法如
下:
第一步、将组播请求处理延时通知到服务器,有多种方式可供选择,包括
但不限于:
由客户端保存组播请求处理延时数值,通过通讯链路发送给服务器;
将组播请求处理延时作为服务器的一个配置参数。
第二步、服务器计算客户端预先发送加入组播请求的时间,具体方法已在
本文前面相应部分给出。
第三步、服务器控制客户端预先发出加入组播请求,有几种不同的方式,
包括但不限于:
服务器将计算得到的预先加入组播组的时刻通过通讯链路通知给客户端,
客户端在预定的时刻发出加入组播请求;或者,
服务器在预先加入组播组的时刻到达时通知客户端,客户端收到通知后立
即发出加入组播请求。
本发明所述在快速频道切换过程中预先发送加入组播请求的第二种方法如
下:
第一步、将组播请求处理延时通知到客户端,有多种方式可供选择,包括
但不限于:
客户端直接保存结果,这适合于采用实时统计方式获取组播请求处理延时
的情况;
将组播请求处理延时作为客户端的一个配置参数,这适合于采用实验分析
或经验估算方式获取组播请求处理延时的情况。
第二步、服务器计算单播与组播码流同步的时间,具体过程参见本文前面
给出的计算客户端预先发送加入组播请求的时间的方法的第二步。
第三步、客户端预先发送加入组播请求,这一步可分为三个子步骤:
服务器将单播与组播码流同步时间的计算结果通过通讯链路发送给客户
端;
客户端计算预先发出加入组播请求的时间,具体过程参见本文前面给出的
计算客户端预先发送加入组播请求的时间的方法的第三步;
客户端在预先发出加入组播请求的时刻到达时,发出加入组播请求。
下面结合附图对技术方案的实施作进一步的详细描述:
图1为本发明所述预先发送加入组播请求的时间的计算方法示意图:
其中,横轴t表示时间,纵轴p表示媒体包的发送进度。
直线101为组播码流的媒体包发送进度,相当于服务器对组播媒体包的接
收缓存进度,其斜率对应公式1中的组播码流平均码率RMc。
直线102为服务器发出的单播码流的媒体包发送进度,其斜率对应公式1
中的单播码流平均码率RUc。
在T1时刻,101和102对应的纵坐标差值就是该时刻服务器已发送的单播
媒体包和其已接收的组播媒体包之间相隔的数据量,即图1中的PDif。
101和102在T3时刻相交,意味着单播与组播码流在T3时刻实现同步,而
T3和T1的差值就对应于公式1中的TSync,对于101和102两条斜率已知的直线
来说,可通过T1时刻两者的纵坐标差值计算出TSync,即公式1。
现在换个角度,假设服务器在T1时刻发送出某个单播媒体包,其发包进度
对应于直线102在T1时刻的纵坐标,而直线101上与其纵坐标相同的点的横坐
标T0就是该媒体包在组播码流中被发送的时刻,也就是服务器接收该媒体包的
时刻,显然,T0和T1的差值就是公式2中的媒体包从被接收到被发送之间的时
间间隔TDif。
分别位于101和102两条直线上且纵坐标相同的两个点的横坐标差值已知
(即TDif),而直线101和直线102的斜率又已知,则通过数学运算可计算出两
条直线交点的横坐标与T1的时间间隔TSync,即公式2。
假设组播请求处理延时为TMcDly,为了保证客户端在单播与组播码流同步
时刚好接收到组播码流,则需要相对于TSync提前一段时间(在图1中的T2时
刻)发出加入组播请求,而这个提前的时间长度就是TMcDly。
在图1中,通过公式1或公式2可计算出T1到T3之间的时间间隔TSync,
又已知T2和T1之间的时间间隔TMcDly,则可通过公式3计算出T1到T3之间的
时间间隔TReqMc。
单播与组播码流同步时间通常以秒计,组播请求处理延时则为数百毫秒,
而媒体包的传输时间基本都在10毫秒的数量级,和前两者比较起来可以忽略不
计,故本发明提出的计算方法忽略了媒体包在网络上的传输时间。
前述的在频道快速切换过程中预先发送加入组播请求的时间的操作思路,
可以表示如图2所示的流程,该流程包括以下步骤:
步骤210:搜集数据设备处理加入组播请求的处理时间开销,该操作可以
通过设置搜集单元实现。
步骤220:计算单播与组播码流同步的时间。
步骤230:计算客户端预先发出加入组播请求的时刻。
步骤220和步骤230中的操作可以通过设置计算单元实现。
前述的在快速频道切换过程中预先发送加入组播请求的操作思路,可以表
示如图3或图4等所示的流程.
其中,图3所示流程包括以下步骤:
步骤310:将组播请求处理延时通知到服务器。
步骤320:服务器计算客户端预先发送加入组播请求的时间。
步骤330:服务器控制客户端预先发出加入组播请求。
图4所示流程则包括以下步骤:
步骤410:将组播请求处理延时通知到客户端。
步骤420:服务器计算单播与组播码流同步的时间。
步骤430:客户端预先发送加入组播请求。
图3和图4中的所述通知操作可以通知设置通知单元实现。
参见图5,图5为本发明提供的两个实施例的部署模型,其中所涉及到的
实体主要有数据设备501、服务器502和客户端503,采用互联网组管理协议
(Internet Group Managemet Protocol,IGMP)来支持组播。
服务器502可通过信道509向数据设备501发出IGMP报文以加入频道所
在的组播组,而数据设备501则通过信道504向服务器502发送组播码流。
客户端503可通过信道505向数据设备501发出IGMP报文以加入频道所
在的组播组,数据设备501则通过信道506向客户端503发送组播码流。
服务器502和客户端503之间通过RTCP建立双向通讯信道507用于与快
速频道切换相关的消息通讯,服务器502通过信道508向客户端503发送缓存
的单播码流。
信道504和信道506支持组播,其上码流均采用RTP封装,服务器502缓
存后通过信道508发给客户端503的单播码流依然保持RTP封装,且不修改
RTP序号字段。一旦客户端接收到的单播码流的RTP序号能和组播码流的RTP
序号无缝衔接,则认为实现了单播与组播码流同步。
服务器502启动后即通过信道509向数据设备501发出IGMP报文,加入
直播频道所在的组播组,并通过信道504持续接收媒体包进行缓存。
客户端503持续统计每次从发送加入组播请求到接收到组播码流之间的时
间间隔,将其最小值或平均值作为组播请求处理延时。
参见图6,图6为实施例一快速频道切换过程的流程图,图中以虚线分隔
的左右两侧分别为服务器和客户端的处理流程,纵向的实线箭头表示服务器或
客户端各自的处理步骤的先后顺序,而横向的虚线箭头则给出了分别作为箭头
起点和终点的服务器和客户端相应处理步骤的先后顺序。图6所示流程包括以
下步骤:
步骤601、客户端向服务器请求快速频道切换服务,在请求消息中携带有
组播请求处理延时数据;
步骤602、服务器接收客户端的快速频道切换请求,提取组播请求处理延
时数据加以保存;
步骤603、服务器从I帧开始向客户端发送缓存的组播码流;
步骤604、机顶盒接收服务器发送的单播码流并加以显示;
步骤605、服务器计算预先发送加入组播请求的时间,并在相应时刻到达
时通知客户端立即加入组播组;
步骤606、客户端向数据设备发出IGMP消息,请求加入组播组;
步骤607、客户端接收到组播码流,当单播与组播码流同步时切换到使用
组播码流进行解码,并通知服务器停止发送单播码流;
步骤608、服务器停止发送单播码流。
参见图7,图7为实施例二快速频道切换过程的流程图,与图6一样以虚
线分隔成左右两列,实线箭头和虚线箭头的含义也与图6一致。图7所示流程
包括以下步骤:
步骤701、客户端向服务器请求快速频道切换服务;
步骤702、服务器接收客户端的快速频道切换请求,从I帧开始向客户端发
送缓存的组播码流;
步骤703、客户端接收服务器发送的单播码流并加以显示;
步骤704、服务器计算单播与组播码流同步的时间,并将结果通知到客户
端;
步骤705、客户端根据服务器提供的单播与组播码流同步时间,结合自身
保存的组播请求处理延时,计算出预先发送加入组播请求的时间;
步骤706、客户端根据上一步骤的计算结果在相应时刻向数据设备发出
IGMP报文,请求加入组播组;
步骤707、客户端接收到组播码流,当单播与组播码流同步时切换到使用
组播码流进行解码,并通知服务器停止发送单播码流;
步骤708服务器停止发送单播码流。
综上所述可见,无论是方法还是系统,本发明实质上是根据组播请求处理
延时控制客户端预先发送加入组播请求,这样当单播与组播同步时,客户端正
好接收到组播码流,既保证了单播与组播码流在客户端的衔接,也减少了服务
器发送单播码流的时间,从而降低了快速频道切换的部署成本。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范
围。