[0026] 若该公式结果为真,则判定为这n个连续包为无线链路传输错误丢包,否则判定为拥塞丢包,公式中rottmean表示单向传输时延的平均值,rottmean=(1-α)rottmean+α*rott,rottdev表示单向传输时延偏差;rottdev=(1-2α)rottdev+2α*|rott-rottmean|,α为比例系数因子。
[0027] Step5:判断定时器是否超时,如果未超时则转Step3;否则,继续;
[0028] Step6:计算拥塞丢包率pc以及无线链路传输错误丢包率pw,其中,pc=Nc/N,pw=Ne/(N-Nc),Nc表示当前时间段t内拥塞丢包个数,N表示当前时间段t内发送的数据包总个数,Ne表示当前时间段t内无线丢包个数;
[0029] Step7:移动终端获取当前的信噪比值snr;
[0030] Step8:移动终端将pc、pw和snr值反馈给DTU;
[0031] Step9:DTU保存移动终端反馈回的pc、pw和snr值;
[0032] Step10:利用拥塞丢包率pc和snr值,对移动网络丢包状态进行判断,当snr>SNR,pc
SNR,pc>=P时,判定当前移动网络丢包状态为拥塞-误码丢包状态,当snr=P时,判定当前移动网络丢包状态为拥塞-中断丢包状态,其中SNR和P都为常数,分别为无线链路信噪比阈值和拥塞丢包率阈值。
[0033] 所述不同的差错控制机制为:
[0034] 当移动网络处于链路误码丢包状态时,采用自适应动态FEC(前向纠错编码)差错控制方法;
[0035] 当移动网络处于连接中断丢包状态时,采用主动重传差错控制方法;
[0036] 当移动网络处于拥塞-误码或拥塞-中断丢包状态时,采用静态FEC差错控制方法。
[0037] 所述自适应动态FEC差错控制方法的冗余度计算步骤如下:
[0038] Step1:计算无线链路丢包个数期望值: 其中k为一次FEC编码的源视频数据包个数;
[0039] Step2:DTU设置FEC编码冗余度R值为 并使用该值对直播视频数据包进行FEC编码。
[0040] 所述主动重传差错控制方法具体步骤如下:
[0041] Step1:为使视频数据包丢失的概率降低到阈值以下,推导出重传次数的一个最小值,推导过程如下:
[0042]
[0043] 式中,k′表示主动重传次数,P表示数据包丢失概率阈值,由于主动重传次数为整数,故k′的最小取值为
[0044] Step2:为避免重传加重移动网络拥塞,推导出重传次数的一个最大值,推导过程如下:
[0045] a)预测出当前移动网络的吞吐率B(pc),
[0046]
[0047] 式中,RTT表示往返时延,b表示每个ACK确认的数据包个数,通常取值为1,T0表示超时时间,通常取4*RTT,s表示数据包大小;
[0048] b)主动重传次数k′的最大值取 其中,rate表示当前的发送速率;
[0049] Step3:为在不引起移动网络拥塞的情况下,尽可能降低无线链路丢包率,主动重传次数k′的最终取值为
[0050] Step4:DTU依据计算出的主动重传次数k′,采用实时传输协议将该时段内每个编码好的直播视频数据包向移动终端连续发送k′次。
[0051] 所述静态FEC差错控制方法的步骤如下:
[0052] Step1:计算静态FEC编码冗余度R'=k*Cr,其中k为一次FEC编码的源视频数据包个数,Cr为常数,表示FEC编码率;
[0053] Step2:DTU使用静态FEC编码冗余度值R‘对直播视频数据包进行FEC编码。
[0054] 本发明的特点在于当移动网络直播视频数据发生丢包时,可以对不同的移动网络丢包状态,采用不同的差错控制机制;当移动网络处于链路误码丢包状态时,采用新的冗余数据包取值的自适应动态FEC策略;当移动网络处于连接中断丢包状态时,采用主动重传策略。采用本技术方案,可以有效提高移动网络直播视频的传输质量,进而提高用户观看体验。
附图说明
[0055] 图1为本发明基于移动网络丢包状态的直播视频数据传输差错控制方法的实例示意图。
[0056] 图2为本发明移动端视频数据接收子模块工作流程图。
[0057] 图3为本发明移动端视频数据丢包类型判断子模块工作流程图。
[0058] 图4为本发明移动端移动网络状态参数反馈子模块工作流程图。
具体实施方式
[0059] 为了增加对本发明的理解,下面结合附图与系统实施对本发明做进一步详细说明。
[0060] 如图1所示,本发明基于移动网络丢包状态的直播视频数据传输差错控制方法的实施由两部分构成,分别为发送端差错控制模块和接收端差错控制模块,它们分别部署在数据转发中心(DTU)和移动终端上。发送端主要由直播视频数据流接收模块(SM1)、移动网络丢包状态判断模块(SM2)、差错控制策略决策模块(SM3)和视频数据发送模块(SM4)构成;接收端主要由视频数据接收模块(RM1)、视频数据丢包类型判断模块(RM2)和移动网络状态参数反馈模块(RM3)构成。
[0061] 下面对本发明所述技术方案实施中各个模块功能和流程进行详细说明。
[0062] 1、发送端整体工作流程
[0063] Step1:接收来自直播端发送来的压缩后的直播视频基本数据流ES。
[0064] Step2:将基本数据流ES按照需要分成长度不等的数据包,并附上包头形成打包基本码流PES,并将PES包输入到差错控制策略决策模块。
[0065] Step3:移动网络丢包状态判断模块接收来自移动端的反馈参数,并以此为判断依据,将移动网络丢包状态分为链路误码丢包、连接中断丢包、拥塞-误码丢包以及拥塞-中断丢包四种状态,同时向差错控制策略决策模块发出动作命令。
[0066] Step4:差错控制决策模块根据所接受的动作命令将PES包封装成RTP数据包,并发往视频数据发送模块。
[0067] Step5:视频数据发送模块从发送缓冲队列依次取RTP包并发往接收端。
[0068] 2、发送端各模块详细工作流程
[0069] 发送端中模块SM1完成数据的接收与打包功能,模块SM2根据不同的网络状态向模块SM3发送决策动作命令,SM3根据SM2动作调用内部不同子模块进行差错控制,并向SM4输出RTP包,SM4负责按序发送直播视频数据包。
[0070] 其中SM1的详细工作过程如下:
[0071] Step1:开始侦听网络。
[0072] Step2:设置超时定时器,间隔period=1s。
[0073] Step3:是否接收到来自终端反馈的移动网络状态参数pc、pw、snr;如果接收到,表示移动网络发生丢包,转入Step4;如果没有,表示该段时间里没有发生移动网络丢包,转入Step5。
[0074] Step4:进入模块SM2,如果snr>SNR,pc
SNR,pc>=P,判断当前移动网络丢包状态为拥塞-误码状态,或snr=P,判断当前移动网络丢包状态为拥塞-中断状态,向SM3发送动作代码SFEC,转Step6。
[0075] Step5:向SM3发送动作代码NE。
[0076] Step6:定时器是否超时,如果没有,转Step3;否则,转Step2。
[0077] 上述过程中动作代码AFEC表示SM3需要执行自适应动态FEC模块对PES包进行处理,IRT表示SM3需要执行主动重传模块对PES包处理,SFEC这表示SM3需要执行静态FEC模块对PES包处理,NE表示没有错误,SM3不需要对数据包进行额外处理。
[0078] 在SM3中,当执行自适应动态FEC模块时,其对数据的处理详细过程如下:
[0079] Step1:从SM1输入的PES包队列中取出k个数据包。
[0080] Step2:按本发明说明书前述公式 设置FEC编码冗余度
[0081] Step3:将这k个PES包,按冗余度R经过RS(Reed-Solomon)编码得到M=k+R个经FEC编码后的传输流TS包。
[0082] Step4:将这M个TS包按序封装成M个RTP包,并交给SM4模块。
[0083] 在SM3中,当执行静态FEC模块时,其对数据的处理与上述自适应动态FEC模块步骤相似,不同的是编码冗余度是一个常数,其值为R'=k*Cr。
[0084] 在SM3中,当执行主动重传模块时,其对数据的处理详细步骤如下:
[0085] Step1:从SM1输入的PES包队列中取出k个数据包。
[0086] Step2:计算每个包的重传次数k’,其取值为 且满足如下约束:
[0087] 1)
[0088] 2)
[0089] 式1)中,pw表示当前无线链路传输错误丢包率,k′表示重传次数,P表示数据包丢失概率阈值;
[0090] 式2)中,RTT表示往返时延,b表示每个ACK确认的数据包个数,通常取值为1,T0表示超时时间,通常取4*RTT,pc表示当前拥塞丢包率,s表示数据包大小,rate表示当前的发送速率。
[0091] Step3:将k个数据包中的每一个都复制k’份。
[0092] Step4:将这k*k’个数据包按序封装成RTP包,其中相同包有相同的序号,并交给SM4模块。
[0093] 在SM3中,当收到NE动作时,SM3只需要从SM1输入的PES包队列取k个,然后按序封装成RTP包,就可以交给SM4模块处理了。
[0094] SM4模块在其缓冲队列中依次读取由SM3模块输入的RTP包,并按序发往接收端。
[0095] 3.接收端整体工作流程
[0096] Step1:接收来自于DTU发送的直播视频数据包。
[0097] Step2:如果发生丢包,则进行丢包类型区分。
[0098] Step3:计算移动网络丢包状态参数,并反馈给DTU。
[0099] 4.接收端各模块详细工作流程
[0100] 接收端RM1模块主要完成直播数据包接收,连续丢包数的统计功能,并输出当前时段里总发包数N,连续丢包个数n,单向传输时延rotti到RM2模块中,其详细工作流程见附图2;当n>0时,RM2模块会被触发,RM2将按本发明前述公式(1)对丢包类型进行区分,同时输出该时段里无线丢包个数Ne和拥塞丢包个数Ne到模块RM3,其详细工作流程见附图3;RM3模块主要进行移动网络状态的参数计算,如无线丢包率pw和拥塞丢包率pc,无线链路信噪比snr,并将它们及时反馈给DTU,其详细工作流程见附图4。
[0101] 其中RM1的详细工作过程如下:
[0102] Step1:初始化RTP包接收缓冲队列。
[0103] Step2:初始化丢包统计参数N=Ni=Ni-1=Nc=Ne=n=0,i=1;其中N当前统计时间段内总的发包数,Ni为收到的第i个数据包的序号,Nc为拥塞丢包个数,Ne为错误丢包个数,n为连续丢包个数。
[0104] Step3:设置统计间隔定时器,间隔period=1s。
[0105] Step4:侦听接收缓冲队列。
[0106] Step5:从视频数据缓冲队列队首取出RTP包,提取包序号值Ni以及时间戳信息Ti,计算n=Ni-Ni-1-1,并保存Ti和n。
[0107] Step6:若n=0,则更新N=N+1,i++,转step7;若n<0,转step7;若n>0,计算单向传输时延rotti=Tcur-Ti,其中Tcur为当前时间,并更新N=N+n+1,i++,同时将rotti和n值一并交给RM2模块进行丢包类型区分,转step7。
[0108] Step8:判断直播是否结束,如果结束,则流程结束;否则,转step9。
[0109] Step9:统计间隔定时器是否超时,如果超时,转step2;否则,转step4。
[0110] 其中RM2的详细工作过程如下:
[0111] Step1:输入连续丢包个数n,以及单向传输时延rotti。
[0112] Step2:计算单向平均传输时延rottmean和单向传输时延偏差rottdev,其满足以下式子:
[0113] 1)rottmean=(1-α)rottmean+α*rott;
[0114] 2)rottdev=(1-2α)rottdev+2α*|rott-rottmean|;
[0115] 其中α为比例系数因子。
[0116] Step3:判断丢包类型,若下式:
[0117] n=1& &rotti
[0118] ||(n=2& &rotti
[0119] ||(n=3& &rotti
[0120] ||(n>3& &rotti
[0121] 为真,则更新Ne=Ne+n;否则,更新Nc=Nc+n。
[0122] Step4:输出Ne和Nc到RM3模块。
[0123] 其中RM3的详细工作过程如下:
[0124] Step1:输入该段时间里,总发包个数N,无线传输错误丢包个数Ne和拥塞丢包个数Nc。
[0125] Step2:计算无线丢包率pw=Nc/N以及拥塞丢包率pc=Ne/(N-Nc)。
[0126] Step3:计算当前无线链路信噪比snr。
[0127] Step4:保存当前snr、pw、pc,并反馈给发送端。