一种在视频解码能力不足时客户端不出现马赛克的方法

文档序号:7703421阅读:1207来源:国知局
专利名称:一种在视频解码能力不足时客户端不出现马赛克的方法
技术领域
本发明涉及在视频解码能力不足时保证客户端不出现马赛克的方法,具体地说 是一种在客户端解码能力不足时,采用上层主动丢包机制的方法使客户端可以实时重现 前端视频并且不会出现马赛克现象。
背景技术
视频码流在网络上传输一般基于RTP/RTCP传输方式,RTP运行于UDP用户数 据报协议之上,用户数据报协议是0 参考模型中一种无连接的传输层协议,提供面向 事务的简单不可靠信息传送服务。是一个简单的面向数据报的传输协议,由于UDP不能 保证提供可靠的数据传输,所以在码流传输过程中可能会产生丢包,我们称之为底层丢 包。客户端解码能力不足时而采取的主动丢包机制我们称之为上层丢包。当客户端在 解码视频码流时,当解码速度跟不上网络传输速度时,如果上层不采取主动丢包机制, 则忽略底层丢包的影响理论上客户端不会出现马赛克现象,但会造成很大的延时不符合 实时性的要求,并且会使客户端视频流缓存区无限增大;如果上层主动丢包而不经过任 何处理直接将这些数据包交付解码器解码则由于缺少某些数据包而导致会出现马赛克现 象。发明内容
为了解决上述传统问题,因此本发明的一个目的就是提出了一种在视频解码能 力不足时客户端不出现马赛克的方法,包括客户端接收由网络传输过来的UDP数据包 后,客户端将UDP数据包转换成RTP数据包并存入缓存区,在缓存区进行丢包处理后, 客户端从缓存区读出RTP数据包进行解码前预处理,然后交付解码器进行解码并在客户 端显不。
其中丢包处理,进一步包括以下步骤
判断RTP数据包数据流量是否超出系统设置的RTP数据包解码极限,如果小于 解码极限则直接交付解码器进行预处理,当大于解码极限时,丢掉更早的RTP包,保留 最后10个RTP数据包,从倒数第十个数据包开始检索缓存区中的IDR帧数据包;
检索到IDR帧数据包时,把缓存区中IDR帧数据包以前的所有数据包丢弃。
由于丢弃了某些数据包,如果直接把缓存中的数据包交付解码器解码将会出现 马赛克现象,所以客户端在进入解码器解码之前要对缓存中的数据包做相应处理。
其中解码前预处理进一步包括P帧及IDR帧处理。
其中的P帧处理进一步包括
通过判断解码的RTP包的时间戳大小判断解码的RTP包顺序是否正确,如果发 生乱序,则丢弃;
通过判断解码的RTP包的序列号判断P帧之前的RTP包在丢包机制中或在底层 SOCKET传输中是否丢失,若丢失则丢弃当前的ρ帧;
判断是否需要等待IDR帧,若不需要等待则表示此P帧前的IDR帧完全接收, 此时此P帧可以交付解码,若未完全接收,则丢弃此P帧。
其中的IDR帧处理进一步包括
通过判断解码的RTP包的时间戳大小判断解码的RTP包顺序是否正确,如果发 生乱序,则丢弃;
当接收到IDR帧开始数据包时,并且此时的IDR帧以分片单元的形式传送的, 则交付解码器解码解码;
当接收到IDR帧其它RTP数据包时,即非开始RTP包或结束RTP包时,通过判 断RTP包的序列号来判断是否之前的RTP在丢包机制中或在底层SOCKET传输中是否丢 失同时判断接收该IDR帧过程中是否发生错误,若丢失或发生错误则丢弃该IDR帧RTP 数包据,否则交付解码;
当接收到IDR帧结束包时,通过判断RTP包的序列号来判断之前的RTP在丢包 机制中或在底层SOCKET传输中是否丢失同时判断接收该IDR帧过程中是否发生错误, 若丢失或发生错误则丢弃该IDR帧,否则此IDR帧交付解码。
通过以上丢包及解码预处理解决了在客户端视频解码能力不足时客户端出现马 赛克现象和客户端重现前端视频时存在延时现象。


结合随后的附图,从下面的详细说明中可显而易见的得出本发明的上述及其他 目的、特征及优点。在附图中
图1给出了解码前处理流程图2给出了丢包处理流程图3给出了 P帧处理流程图4给出了 IDR帧处理流程图。
具体实施方式
在下文中将详细地论述的,本公开可以采用完全硬件的实施例、完全软件的实 施例或包括硬件和软件元件两者的实施例的形式。在优选实施例中,本公开可以用软件 来实施,其可以包括但不局限于固件、驻留软件、微码等等。
如图1所示,提供了一种在视频解码能力不足时客户端不出现马赛克的方法, 包括客户端接收由网络传输过来的UDP数据包后,客户端将UDP数据包转换成RTP数据 包并存入缓存区,在缓存区进行丢包处理后,客户端从缓存区域读出RTP数据包进行解 码前预处理,然后交付解码器进行解码并在客户端显示。
如图2所示丢包处理,包括
步骤1 判断RTP数据包数据流量是否超出系统设置的RTP数据包解码极限, 如果小于解码极限则直接交付解码器进行预处理,当大于解码极限时,丢掉更早的RTP 包,保留最后10个RTP数据包,从倒数第10帧开始检索缓存区中的IDR帧数据包;
步骤2:检索到IDR帧数据包时,把缓存区中IDR帧数据包以前的所有数据包 丢弃。
由于丢弃了某些数据包,如果直接把缓存中的数据包交付解码器解码将会出现 马赛克现象,所以客户端在进入解码器解码之前要对缓存中的数据包做相应处理。解码 预处理包括对P帧的处理以及对IDR帧的处理。
如图3所示P帧处理包括
步骤1 通过判断解码的RTP包的时间戳大小判断解码的RTP包顺序是否正 确,如果发生乱序,则丢弃;
步骤2 通过判断解码的RTP包的序列号判断P帧之前的RTP包在丢包机制中 或在底层SOCKET传输中是否丢失,若丢失则丢弃当前的ρ帧;
步骤3 判断是否需要等待IDR帧,若不需要等待则表示此P帧前的IDR帧完 全接收,此时此P帧可以交付解码,若未完全接收,则丢弃此P帧。
如图4所示IDR帧处理包括
步骤1 通过判断解码的RTP包的时间戳大小判断解码的RTP包顺序是否正 确,如果发生乱序,则丢弃;
步骤2:当接收到IDR帧开始数据包时,并且此时的IDR帧以分片单元的形式 传送的,则交付解码器解码解码;当接收到IDR帧其它RTP数据包时,即非开始RTP包 或结束RTP包时,通过判断RTP包的序列号来判断之前的RTP在丢包机制中或在底层 SOCKET传输中是否丢失同时判断接收该IDR帧过程中是否发生错误,若丢失或发生错 误则丢弃该IDR帧数据包否则交付解码;当接收到IDR帧RTP结束包时,通过判断RTP 包的序列号来判断之前的RTP包在丢包机制中或在底层SOCKET传输中是否丢失同时判 断接收该IDR帧接收过程中是否发生错误,若丢失或发生错误则丢弃该IDR帧,否则此 IDR帧交付解码。权利要求
1.一种在视频解码能力不足时客户端不出现马赛克的方法,其特征在于包括客户端 接收由网络传输过来的UDP数据包后,客户端将UDP数据包转换成RTP数据包并存入缓 存区,在缓存区进行丢包处理后,客户端从缓冲区读出RTP数据包进行解码前预处理, 然后交付解码器进行解码并在客户端显示。
2.根据权利要求1,其中丢包处理,进一步包括Al:判断缓存区RTP包数量是否超出系统设置的RTP数据包解码极限,如果小于解 码极限则直接交付解码器进行预处理,当大于解码极限时,丢掉更早的RTP包,保留最 后十个RTP数据包,从倒数第十个数据包开始检索缓存区中的IDR帧数据包;A2检索到IDR帧数据包时,把缓存区中IDR帧数据包以前的所有数据包丢弃。
3.根据权利要求1,其中解码前预处理进一步包括P帧及IDR帧处理。
4.根据权利要求3,其中的P帧处理包括Bi:通过判断解码的RTP包的时间戳大小判断解码的RTP包顺序是否正确,如果发 生乱序,则丢弃;B2 通过判断解码的RTP包的序列号判断P帧之前的RTP包在丢包机制中或在底层 SOCKET传输中是否丢失,若丢失则丢弃当前的ρ帧;B3判断是否需要等待IDR帧,若不需要等待则表示此P帧前的IDR帧完全接收, 此时此P帧可以交付解码,若未完全接收,则丢弃此P帧。
5.根据权利要求3,其中的IDR帧处理包括Cl:通过判断解码的RTP包的时间戳大小判断解码的RTP包顺序是否正确,如果发 生乱序,则丢弃;C2当接收到IDR帧开始数据包时,并且此时的IDR帧以分片单元的形式传送的, 则交付解码器解码;C3 当接收到IDR帧其它RTP数据包时,即非开始RTP包或结束RTP包时,通过 判断RTP包的序列号来判断之前的RTP在丢包机制中或在底层SOCKET传输中是否丢失 同时判断接收该IDR帧过程中是否发生错误,若丢失或发生错误则丢弃该IDR帧数据包 否则交付解码;C4当接收到IDR帧结束包时,通过判断RTP包的序列号来判断之前的RTP包在丢 包机制中或在底层SOCKET传输中是否丢失同时判断接收该IDR帧接收过程中是否发生 错误,若丢失或发生错误则丢弃该IDR帧。否则此IDR帧交付解码。
全文摘要
一种在视频解码能力不足时客户端不出现马赛克的方法,该方法包括客户端接收由网络传输过来的UDP数据包后,客户端将UDP数据包转换成RTP数据包并存入缓存区,在缓存区进行丢包处理后,客户端从缓冲区读出RTP数据包进行解码前预处理,然后交付解码器进行解码并在客户端显示,经过本发明中的丢包及解码预处理解决了在客户端视频解码能力不足时客户端出现马赛克现象和客户端重现前端视频时存在延时现象。
文档编号H04L29/06GK102025687SQ20091010228
公开日2011年4月20日 申请日期2009年9月10日 优先权日2009年9月10日
发明者夏江明, 孙小华, 庄涛, 朱碧军, 李英梅 申请人:浙江省公众信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1