一种基于fec算法的视频传输自适应方法

文档序号:7804110阅读:141来源:国知局
一种基于fec算法的视频传输自适应方法
【专利摘要】本发明涉及一种基于FEC算法的视频传输自适应方法。本地端将媒体包进行FEC组包,在数据包和冗余包中加载FEC头标识信息,并发送;对端接收到本地端发送的FEC包后,解析包头中的信息后,得到实际的媒体包数据,再判断是否发生丢包;本地端由对端发送反馈消息改变当前的FEC打包策略,依据业务场景提高编码器码率。本发明通过控制编码器,实现控制FEC参数,特别是采用控制参数的策略以及适应带宽的有效性,最大效率的利用媒体包,减少冗余包的数据量,达到丢包恢复的效果。本发明在udp传输的情况下,不需要另设重传机制;与重传机制相比,实时性要好;在网络资源不够的时候,调整参数,适应网络,以保证视频质量,最大限度的使用网络资源。
【专利说明】一种基于FEC算法的视频传输自适应方法
【技术领域】
[0001]本发明涉及一种针对网络不稳的情况下进行丢包恢复的方法,特别涉及一种基于FEC算法的视频传输自适应方法。
【背景技术】
[0002]当前,流媒体应用十分广泛,视频质量尤为关键。流媒体中的视频由于前向参考的原因,对视频的数据包比较敏感,一旦发生丢失,将会导致图像质量的损失,出现图像花屏并持续扩散一段时间等现象。网络时常会发生数据的丢失,这就给视频质量带来了影响。重传机制可以解决丢包问题,但实时性相对受影响。如果不重传,则需要通知媒体发送端通过修改视频编码器或者FEC参数来减少数据量,以便适应带宽。

【发明内容】

[0003]本发明所要解决的问题是针对现有技术存在的不足,提供一种简单、方便,且能有效恢复网络造成丢包的视频传输自适应方法。
[0004]为达到上述发明目的,本发明采用的技术方案是:提供一种基于FEC算法的视频传输自适应方法,包括如下步骤:
[0005]步骤一:本地端将媒体包进行FEC组包,在数据包和冗余包中加载FEC头标识信息,发送;
[0006]步骤二:对端接收到本地端发送的FEC包后,解析包头中的信息后,得到实际的媒体包数据,再判断是否发生丢包,并进行如下操作:
[0007]5)若不丢包,则进行提高冗余度、依据业务场景提高编码器码率的操作;
[0008]6)若丢包,且能纠错成功,则继续维持当前参数;
[0009]7)若丢包,且纠错之后数据包仍然有丢包,但数据包的丢包率较小,则进行降低冗余度、降低网络消耗的操作;
[0010]8)若丢包,且纠错之后数据包仍然有丢包,但数据包的丢包率较大,则通知编码器进行降低码率,降低网络消耗操作;
[0011]步骤三:本地端由对端发送反馈消息改变当前的FEC打包策略,依据业务场景提高编码器码率。
[0012]本发明通过控制编码器,实现控制FEC参数,特别是采用控制参数的策略以及适应带宽的有效性的方法,最大效率的利用媒体包,减少冗余包的数据量,达到丢包恢复的效
果O
[0013]本发明与现有技术相比具有下列优点:
[0014]1、在udp传输的情况下,不需要另设重传机制。
[0015]2、与重传机制相比,实时性要好。
[0016]3、网络资源不够的时候,调整参数,适应网络,以保证视频质量,最大限度的使用网络资源。【专利附图】

【附图说明】
[0017]图1是本发明实施例提供的发送端根据接收端反馈信息调整媒体参数以及FEC参数的流程示意图;
[0018]图2是本发明实施例提供的接收端接受FEC数据包还原媒体包的流程示意图。【具体实施方式】
[0019]下面结合附图及实施例对本发明作进一步描述。
[0020]实施例1
[0021]在本发明实施例中,作下列名词解释:
[0022]FEC:forward error correction 前向纠错;
[0023]Gourp:组,一个组表示η个FEC包,其中有k个数据包,η-k个冗余包;
[0024]FEC_group_seq:12bits 表示组的序列号;
[0025]FEC_pkt_seq_in_group:4bits 表示组内的 FEC 包的序列号;
[0026]FEC_k:4bits表示当前组的k值,k表示数据包的数量;
[0027]FEC_n:4bits表示当前组的η值,η表示数据包加上冗余包的数量;
[0028]h:FEC header 表不 FEC 头数据;
[0029]Ien:rtp 的长度字节,2bytes。
[0030]本发明实施例提供的一种基于FEC算法的视频传输自适应方法具体步骤如下:
[0031]发送端处理步骤
[0032]参见附图1,它是本实施例提供的发送端根据接收端反馈信息调整媒体参数以及FEC参数的流程示意图;具体步骤如下:
[0033]步骤1:开始
[0034]步骤2: 102,初始化FEC参数
[0035]步骤3:103,接收到反馈消息,根据反馈的丢包信息进行不同的分支,丢包率分为两个参数,一个是FEC纠错前的丢包率LI,一个是纠错之后的丢包率L2。如果L2 == 0,而且LI ! = O,表示FEC纠错前丢包了,但是在纠错范围之内,能正常恢复出媒体包,贝U跳往104 ;如果LI == 0,表示纠错前没有丢包,那么L2也肯定等于0,则跳往105 ;如果Lb2 >L2 > 0,表示丢包率已经超出了纠错能力了,但是又不是很高的丢包率,则跳往106 ;如果LI> Lb2,表示一个较大的丢包率,则跳往107。
[0036]步骤4:104,不做任何处理,之后跳往108。
[0037]步骤5:105,这时候提高码率步长B和提高冗余度步长NK,具体的基数的值可依据业务场景来修改,但是NK不能超过FEC初始化的值。之后跳往108。
[0038]步骤6:106,这时候丢包率并不高,不需要调整编码器,因为调整编码器是有一定的延时的,这时候需要适当减小冗余度,具体减小的步长由调试决定。
[0039]步骤7:107,这时候较大的丢包率,需要降低编码器的帧率和码率,具体降低的步长由可依据业务场景决定。
[0040]步骤8:108,根据调整后的参数进行编码,以及FEC组包发送。[0041]发送端组包步骤[0042]步骤1:给每个rtp包加2字节的长度字段。
[0043]步骤2:按照FEC包的固定长度将rtp包打包成k个FEC包,即为有效的负载数据。k个FEC包属于一个group。可将最后一个媒体包的剩余数据缓存,用做下一个group使用。
[0044]步骤3:k个FEC包使用算法生成η-k个冗余包,并打上FEC header,如图3所示。之后可以作为payload发送。
[0045]接收端处理步骤
[0046]接收端的处理,保证媒体数据的实时性,只要解析出媒体数据就立刻调用解码器,避免延时。参见附图2,它是本实施例提供的接收端接受FEC数据包还原媒体包的流程示意图;具体步骤如下:
[0047]步骤1:开始
[0048]步骤2:202,接收FEC包并且缓存
[0049]步骤3:203,根据FEC包头里面的信息,来确定当前和之前的是否在一个group,之后根据seq是否连续来判断丢包与否,将丢包保存到丢包状态中去,可以按bit存储丢包状态。
[0050]步骤4:204,判断丢包状态,如果有丢包,则转到205,没有丢包转到206。
[0051]步骤5:205,查看当前group的媒体包是否已经全部解析完毕,这个和FEC的n, k值有关。如果没有解析完毕,则跳到207。如果解析完毕了,则不需要进行额外的处理,直接跳到202,继续接受FEC包。
[0052]步骤6:206,查看当前包是否是媒体包,如果是媒体包,直接跳到208,如果不是,则不需要其他处理,直接跳到202,继续接受FEC包
[0053]步骤7:207,利用FEC算法进行纠错处理,还原出媒体数据。之后跳到208。
[0054]步骤8:208,调用解码器。
[0055]接收端解包步骤
[0056]步骤1:如果没有丢包,则得到k个FEC包。如果发生丢包,且实际一个group里面能够至少取到k个FEC包,则可以根据算法还原出该group里丢掉的FEC包。
[0057]步骤2:根据FEC包解析出rtp包。
[0058]步骤3:去掉rtp包前面2字节的长度字段,得到实际的rtp包。
【权利要求】
1.一种基于FEC算法的视频传输自适应方法,其特征在于包括如下步骤: 步骤一:本地端将媒体包进行FEC组包,在数据包和冗余包中加载FEC头标识信息,发送; 步骤二:对端接收到本地端发送的FEC包后,解析包头中的信息后,得到实际的媒体包数据,再判断是否发生丢包,并进行如下操作: 1)若不丢包,则进行提高冗余度、依据业务场景提高编码器码率的操作; 2)若丢包,且能纠错成功,则继续维持当前参数; 3)若丢包,且纠错之后数据包仍然有丢包,但数据包的丢包率较小,则进行降低冗余度、降低网络消耗的操作; 4)若丢包,且纠错之后数据包仍然有丢包,但数据包的丢包率较大,则通知编码器进行降低码率,降低网络消耗操作; 步骤三:本地端由对端发送反馈消息改变当前的FEC打包策略,依据业务场景提高编码器码率。
【文档编号】H04L29/06GK103957222SQ201410211225
【公开日】2014年7月30日 申请日期:2014年5月20日 优先权日:2014年5月20日
【发明者】王振中 申请人:艾诺通信系统(苏州)有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1