一种适用于视频会议的纠错装置及其方法

文档序号:7924074阅读:201来源:国知局
专利名称:一种适用于视频会议的纠错装置及其方法
技术领域
本发明涉及视频会议领域,特别涉及一种适用于视频会议的纠错装置及其 方法。
背景技术
H. 323视频会议中,MCU (多点控制单元)作为音频、视频数据的中转站, 所有视频数据都会经由终端发送到MCU,再经其转发到各个接收视频数据的终 端。在视频数据的传输过程中,主要是使用RTP协议,把编码后的视频数据在网 络中传输。由于RTP通常是在在UDP ( User Datagram Protocol用户数据报协议) 基础上实现,所以就不可避免地会在网络传输的过程中产生丢包。在以视频图 像为基础应用的视频会议中,如果出现RTP丢包,将会导致马赛克的出现甚至无 法解码显示,严重影响图像的显示质量。
在现有技术中,解决视频会议中RTP丢包问题的技术方案通常是通过定期插 入关键帧。以H. 264为例具体言之,在H. 264中,图4象会被编码为I帧,P帧,IDR帧 或B帧,其中IDR帧为关键帧,I帧,P帧,B帧在编解码时都需要参考前面的帧,由 于IDR帧的独立性以及其后的非IDR帧都不会再参考IDR帧之前的帧,所以多数网 络应用都会通过定期插入IDR帧的方式来防止因丢包引起后继图像解码出错或 失败。为了表述上简单,把IDR帧称为K帧,其他帧称为P帧,那么码流可以表示 为如图l所示,其中只描述了帧的情况,其实一帧还会根据网络MTU (Maximum Transmission Unit最大传输单元)的大小,分为多个包,同一帧内的包由连
续的包号来表示,也就是每一RTP包都由连续唯一的帧号和一个帧内唯一连续的 包号所表示。
上述技术方案的缺陷在于由于IDR帧的数据量通常要比其他帧大,所以在 带宽有限的情况下不宜插入过多,实际应用一般会设置为每50至200帧插入一个 IDR帧,在接收方,当出现丢帧时(包括丢包时),图像的错误通常要一直等到 下一个IDR帧到达才可以修复,在IDR未到达的期间,图像的错误将得不到修复, 从而会影响后继帧的解码,甚至会至使马赛克现象不断地被扩大。如果简单地 通过缩短插入IDR帧的间隔来消除画面的马赛克,又会引起过多消耗有限的网络 带宽的问题。

发明内容
本发明的目的在于克服现有技术的不足,提供一种适用于视频会议的纠错装 置和纠错方法,够及时发现丢包或丢帧问题,消除画面的马赛克,并且不会引 起过地多消耗有限的网络带宽的问题。
本发明通过以下技术方案实现, 一种适用于视频会议的纠错装置,包括 至少两个终端设备和MCU,所述的终端设备分别与MCU网络连接;
所述的终端设备包括,通讯模块、数据包接收检查管理模块、视频数据队 列管理模块、编码模块、解码模块、编码管理模块,所述的通讯模块与数据包 接收检查管理模块、视频数据队列管理模块依次连接,所述的通讯模块与编码 模块、编码管理模块依次连接,所述的解码模块与所述的视频数据队列管理模
块连接;所述的通讯模块包括视频流通道模块和信令通道模块;
所述的MCU包括,依次连接的通讯模块、数据包接收检查模块和视频数据队
列管理模块,所述的通讯模块包括视频流通道模块和信令通道模块。
所述的MCU还可以进一步包括与数据包检查模块和视频数据队列管理模块
分别连接的丢包状态记录模块。
一种适用于视频会议的纠错方法,包括以下步骤
S101:发送端的编码模块根据编码管理模块设定的IDR帧的间隔进行编码并 通过发送端的视频流通道模块与MCU的视频流通道冲莫块之间的视频流通道发送 给MCU,并且编码管理;漠块记录最近发送的一个IDR帧的帧号bFram;
S102: MCU的数据包接收检查模块对收到的每个数据包进行分析,根据其帧 号和包号的连续性来判断当前数据包与上一个数据包之间是否发生数据包丟 失
如果没有发生数据包丢失,则直接将当前数据包交给^L频数据队列管理模 块,让其转发给接收端;
如果发生数据包丢失,则数据包接收检查模块记录上一个数据包的帧号和 当前数据包的帧号并形成丢包报告,通过MCU的信令模块与发送端的信令模块之 间的信令通道发送给发送端,所述的丢包报告包括所述的上一个数据包的帧号 和当前数据包的帧号;
S103:发送端的编码管理模块收到所述的丢包报告,则根据该报告中的信 息得出丢帧处的帧号aFram,将aFram与步骤S101所述的bFram比较并作以下处

如果aFram小于bFram则不作处理;
如果aFram大于或等于bFram,则发送端的编码;漠块编码一个II)R帧并发送到 MCU ,同时更新记录新的bFr am值。
上述步骤的S101中设定的IDR帧的间隔为200。
上述步骤S102中还可以进一步包括以下步骤当MCU的数据包接收检查模块 判断为丢包时进行如下处理
对于帧内丢包,则数据包接收检查模块丢弃当前数据包,并通知MCU的视频 数据队列管理模块把当前数据包所属帧的数据抛弃;
对于帧间包丢失,则数据包接收检查模块将当前数据包交给视频数据队列 管理模块,让其通过MCU的视频流模块与接收端的视频流模块之间的视频流通道 转发给接收端。
上述步骤是对MCU接收数据过程所发生的丟包问题的解决,并能产生以下有 益效果首先,发送端可以及早知道MCU接收包的丢包情况,并能够及时做出响 应,而不必把该过程出现的错误延时到数据到达接收端才发现,因此可以使接 收端及时修正错误;其次,发送端所发送的编码数据的IDR帧的间隔大,因此不 会出现过多插入I DR帧而影响带宽的问题。
上述步骤还可以进一步包括以下步骤
MCU的视频数据队列管理模块将视频数据转发给接收端之前还可以进行如 下处理了 MCU的丢包状态记录模块根据数据包接收检查模块的判断结果进行记
录,如果丢包状态记录器所记录的状态为丢包状态,则视频数据队列管理模块
在其内部的数据队列中查找距离排列在第一位的待发送帧最近的IDR帧,若存在 该IDR帧,则丢弃所述的4寺发送帧及待发送帧与IDR帧之间的帧,然后发送IDR帧, 并将丢包状态记录器复位为非丢包状态,而不必将步骤S102所述的丢包报告发 送给发送端,并不再进行上述的步骤S103。
上述步骤是通过MCU的视频数据队列管理模块来解决MCU接收数据过程中的 丢包/丟帧问题,如果这些问题可以通过视频数据队列管理模块自身的队列操作 解决,就不必通知发送端编码并发送一个新的IDR帧,并且在存在IDR帧时直接 发送IDR帧,而不必等到排列在IDR帧之前的非IDR都发送完再发送该IDR帧,从
而可以提高修复错误的速度。
上述步骤是对MCU接收数据过程中所出现的丢包问题的解决,以下步骤是对 接收端接收数据过程中所出现的丢包问题的解决
S201:接收端通过其与MCU之间的视频流通道接收MCU转发的数据,数据包 接收检查模块对收到的每个数据包进行分析,根据其帧号和包号的连续性来判 断当前数据包与上一个数据包之间是否发生数据包丢失
如果没有发生数据包丟失,则数据包接收检查模块将数据包交给接收端的 视频数据队列管理模块,当视频数据队列管理模块累计收到一帧完整的视频帧 后提交给解码模块进行解码;
如果发生数据包丢失,则数据包接收检查模块记录上一个数据包的帧号和 当前数据包的帧号并形成丢包报告,通过接收端的信令模块与MCU的信令模块之
间的信令通道发送给MCU,然后MCU将该丢包报告通过MCU的信令模块与发送端的 信令模块之间的信令通道转发给发送端,所述的丢包报告包括上一个数据包的 帧号和当前数据包的帧号;
S202:发送端收到所述的步骤S201所述的丢包报告,则重复所述的步骤 S103。
所述步骤S201还可以进一步包括以下步骤所述的解码才莫块在解码时,如 果出现解码错误,也将发生解码错误处的帧号通过信令通道发送给MCU,然后由 MCU转发给发送端。因为在允许多人参与的会议系统中,通常是后进会议的终端 设备会由于一进来就收到非IDR帧而解码错误;此外,当终端设备(TX)在会议中 途修改分辨率,而如果在传输中,丢掉终端(TX)在修改分辨率后的第一个IDR帧 的话,也会有解码错误。
上述步骤是针对接收端在接收数据过程出现丢包问题的解决,并能产生以 下有益效果当出现丢包或解码出错时,接收端能及时向发送端反映,发送端 能及时知道接收端在接收或解码过程中出现的问题,并能及时地响应,从而使 问题得以及时修复。
上述步骤S201还可以进一步包括以下步骤当接收端的数据包接收检查模 块判断为丢包时进^f于如下处理
对于帧内丢包,则丢弃当前数据包,并通知接收端的视频数据队列管理模 块把当前数据包所属帧的数据抛弃,同时通知MCU的视频数据队列管理模块把当 前数据包所属帧的未发送数据抛弃;
对于帧间丟包,则将当前数据包交给视频数据队列管理模块,由视频数据 队列管理器提交给解码器解码。
上述步骤还可以进一步包括以下步骤
如果MCU通过所述的信令通道得到接收方的丢包报告或解码错误信息,或者 丢包状态记录器的状态为丟包状态,则视频数据队列管理模块将在其内部的数 据队列查找距离排列在第 一位的4寺发送帧最近的IDR帧,
若存在该IDR帧,则丟弃所述的待发送帧及待发送帧与IDR帧之间的帧,然 后发送IDR帧,并将丢包状态记录器复位为非丢包状态,而不必将所述的丢包报 告解码错误信息转发发送端,并不再进行上述的步骤202。
若不存在该IDR帧,则将丢包状态记录器设置为丢包状态,并继续进行原步骤。
上述步骤是通过MCU的视频数据队列管理模块来解决接收端接收数据过程
中的丟包/丢帧问题,如果这些问题可以通过视频数据队列管理模块自身的队列 操作解决,就不必通知发送端编码并发送一个新的IDR帧,并且在存在IDR帧时 直接发送IDR帧,而不必等到排列在IDR帧之前的非IDR都发送完再发送该IDR帧, 从而可以提高修复错误的速度。


图1是现有技术中码流中帧的情况示意图; 图2 A是本发明装置的网络结构示意图2B是本发明装置中终端设备的内部结构示意图; 图2C是本发明装置的MCU的内部结构示意图; 图3是本发明方法中MCU接收数据的流程图; 图4是接收端接收数据的流程图; 图5是发送端发送数据的流程图6是MCU的视频数据队列管理器中视频数据队列结构图; 图7是MCU发送数据的流程图。
具体实施方式
MCU对视频的转发有两种方式。 一种是对收到的视频码流先进行解码,得到 完整的图像后再根据接收方的解码器类型和尺寸把图像编码成对应的编码然后 传输,接收方用实现协商约定的编码器解码。另一种是直接把收到的视频码流 放到发送队列去然后转发,接收方需要自己选择对应这种编码的解码器做解码。 两种方式各有各自的优缺点,前者MCU解码然后再编码负担比较重,但可以为多 种编解码能力的终端提供服务;后者MCU相对简单,几乎不用做太多的运算,但 所有终端都必须能解编码发送终端所用的编码数据。 以下实施例以第二种方式为例进行说明。
请参考图2A, 2B、 2C, 一种适用于视频会议的纠错装置包括两个终端设备 和MCU,终端设备分别与MCU网络连接。为了叙述上的方便,将一个终端设备称 为发送端,另一个终端设备称为接收端,但在实际应用中每个终端设备既是发
送端也是接收端。
所述的终端设备包括,通讯模块、数据包接收检查管理模块、视频数据队 列管理模块、编码模块、解码模块、编码管理模块,所述的通讯模块与数据包 接收检查管理模块、视频数据队列管理模块依次连接,所述的通讯模块与编解 模块、编码管理模块依次连接,所述的解码模块与所述的视频数据队列管理模
块连接;所述的通讯模块包括视频流通道模块和信令通道模块。
所述的MCU包括,依次连接通讯模块、数据包接收检查模块、视频数据队列 管理模块,所述的通讯模块包括视频流通道模块和信令通道模块;还可以进一 步包括与数据包检查模块和视频数据队列管理模块分别连接的丢包状态记录模 块。
一种适用于视频会议的纠错方法包括以下步骤(如图3、 4、 5、 6、 7): 1、 MCU接收数据的过程如下
(1 )发送端的编码模块根据编码管理模块设定的IDR帧的间隔进行编码并 通过发送端的视频流通道模块与MCU的视频流通道模块之间的视频流通道发送 给MCU,并且编码管理模块记录最近发送的一个IDR帧的帧号bFrara;所述设定的 IDR帧的间隔为200。
(2) MCU的数据包接收检查模块对收到的每个数据包进行分析,根据其帧 号和包号的连续性来判断当前数据包与上一个数据包之间是否发生数据包丢 失
如果没有发生数据包丟失,则直接将当前数据包交给视频数据队列管理模
块,让其转发给接收端;
如果发生数据包丢失,则数据包接收检查模块记录上一个数据包的帧号和
当前数据包的帧号并形成丢包报告,并作如下处理
对于帧内丢包,则数据包接收检查模块丢弃当前数据包,并通知MCU的视频 数据队列管理模块把当前数据包所属帧的数据抛弃;
对于帧间包丢失,则数据包接收检查模块将当前数据包交给视频数据队列 管理模块,让其通itMCU的视频流模块与接收端的视频流模块之间的视频流通道 转发给接收端。
(3 ) MCU的视频数据队列管理模块在其内部队列中取出 一个转发给接收端 之前,视频数据队列管理模块(如图6)取数据的过程受丢包状态记录模块的影 响,具体如下
a. 丢包状态记录器的状态为非丢包状态,则直接取出排列在第一位的未发 送帧一一待发送帧进行发送;
b. 丢包状态记录器的状态为丢包状态,视频数据队列管理模块在其内部的 数据队列中查找距离待发送帧最近的IDR帧
若存在该IDR帧,则丢弃所述的待发送帧及待发送帧与IDR帧之间的帧,然 后发送IDR帧,并将丢包状态记录器复位为非丢包状态,而不必将所述的丢包报 告发送给发送端;若当前队列中不存在该IDR帧,进行步骤a,并进行如下步骤
发送端的编码管理模块收到所述的丢包报告,则根据该报告中的信息得出 丟帧处的帧号aFram,将aFram与所述的bFram比较并作以下处理
如果aFram小于bFram则不作处理;
如果aFram大于或等于bFram,则发送端的编码才莫块编码一个IDR帧并发送到 MCU,同时更新记录新的bFram值。
2、上述步骤是对MCU接收数据过程中所出现的丢包问题的解决,以下步骤 是对接收端接收数据过程中所出现的丢包问题的解决
(1 )接收端通过其与MCU之间的视频流通道接收MCU转发的数据,数据包接 收检查模块对收到的每个数据包进行分析,根据其帧号和包号的连续性来判断 当前数据包与上一个数据包之间是否发生数据包丢失
如果没有发生数据包丢失,则数据包接收检查模块将数据包交给接收端的 视频数据队列管理模块,当视频数据队列管理模块累计收到 一帧完整的视频帧 后提交给解码模块进行解码;
如果发生数据包丢失,则数据包接收检查模块记录上一个数据包的帧号和 当前数据包的帧号并形成丢包报告,通过接收端的信令模块与MCU的信令模块之 间的信令通道发送给MCU,然后MCU将该丢包报告通过MCU的信令模块与发送端的 信令模块之间的信令通道转发给发送端,所述的丢包报告包括上一个数据包的
帧号和当前^t据包的帧号;并作如下处理
对于帧内丢包,则丢弃当前数据包,并通知接收端的视频数据队列管理模 块把当前数据包所属的帧数据抛弃,同时通知MCU的视频数据队列管理模块把当 前数据包所属帧的未发送的数据抛弃;
对于帧间丢包,则将当前数据包交给视频数据队列管理模块,由视频数据
队列管理器提交给解码器解码。
所述的解码模块在解码时,如果出现解码错误(在允许多人参与的会议系 统中,通常是后进会议的终端设备会由于一进来就收到非IDR帧而解码错误;此 外,当终端设备(TX)在会议中途修改分辨率,而如果在传输中,丢掉终端(TX) 在修改分辨率后的第一个IDR帧的话,也会有解码错误。),也将发生解码错误
处的帧号a' Fram通过信令通道发送给MCU,然后由MCU转发给发送端。
(2) MCU通过所述的信令通道得到接收方的丟包报告或解码错误信息,或者丢 包状态记录器的状态为丢包状态,则视频数据队列管理模块将在其内部的数据 队列查找距离待发送帧最近的IDR帧(如图6、图7):
若存在该IDR帧,则丢弃所述的待发送帧及待发送帧与IDR帧之间的帧,然 后发送IDR帧,并将丢包状态记录器复位为非丢包状态,而不必将所述的丟包报 告或解码错误信息转发发送端;
若不存在该IDR帧,则将丢包状态记录器设置为丢包状态,并继续进行以下 步骤发送端的编码管理模块收到所述的丢包报告或解码错误信息,则根据该
报告或解码错误中的信息得出丢帧处的帧号aFram或a'Fram,将aFram或a'Fram
与步骤S1 Ol所述的bFrara比较并作以下处理 如果aFram小于bFram则不作处理;
如果aFram大于或等于bFram,则发送端的编码模块编码一个IDR帧并发送 到MCU,同时更新记录新的bFr am值。
权利要求
1、一种适用于视频会议的纠错装置,其特征在于:包括:至少两个终端设备和MCU,所述的终端设备分别与MCU网络连接;所述的终端设备包括,通讯模块、数据包接收检查管理模块、视频数据队列管理模块、编码模块、解码模块、编码管理模块,所述的通讯模块与数据包接收检查管理模块、视频数据队列管理模块依次连接,所述的通讯模块与编码模块、编码管理模块依次连接,所述解码模块与所述视频数据队列管理模块连接;所述的通讯模块包括视频流通道模块和信令通道模块;所述的MCU包括,依次连接的通讯模块、数据包接收检查模块和视频数据队列管理模块,所述的通讯模块包括视频流通道模块和信令通道模块。
2、 根据权利要求1所述的一种适用于视频会议的纠错装置,其特征在于所述 MCU包括与数据包检查模块和视频数据队列管理模块分别连接的丢包状态记 录模块。
3、 一种适用于视频会议的纠错方法,其特征在于包括以下步骤S101:发送端的编码模块根据编码管理模块设定的IDR帧的间隔进行编码并 通过发送端的视频流通道模块与MCU的视频流通道模块之间的视频流通道 发送给MCU,并且编码管理模块记录最近发送的一个IDR帧的帧号bFram; S102: MCU的数据包接收检查模块对收到的每个数据包进行分析,根据其帧 号和包号的连续性来判断当前数据包与上一个数据包之间是否发生数据包 丢失如果没有发生数据包丢失,则直接将当前数据包交给视频数据队列管理模 块,让其转发给接收端;如果发生数据包丢失,则数据包接收检查模块记录上一个数据包的帧号和 当前数据包的帧号并形成丟包报告,通过MCU的信令模块与发送端的信令模 块之间的信令通道发送给发送端,所述的丢包报告包括所述的上一个数据 包的帧号和当前l史据包的帧号;S103:发送端的编码管理模块收到所述的丢包报告,则根据该报告中的信 息得出丟帧处的帧号aFram,将aFram与步骤S1 Ol所述的bFram比较并作以下 处理如果aFram小于bFrara则不作处理;如果aFram大于或等于bFram,则发送端的编码模块编码一个IDR帧并发送 到MCU,同时更新记录新的bFram值。
4、 根据权利要求3所述的一种适用于视频会议的纠错方法,其特征在于所述 步骤SIOI中设定的IDR帧的间隔为200。
5、 根据权利要求3或4所述的一种适用于视频会议的纠错方法,其特征在于所 述步骤S 102中还包括以下步骤当MCU的数据包接收检查模块判断为丢包时 进4亍如下处理对于帧内丢包,则数据包接收检查模块丢弃当前数据包,并通知MCU的视频 数据队列管理模块把当前数据包所属帧的数据抛弃;对于帧间包丢失,则数据包接收检查模块将当前数据包交给视频数据队列 管理模块,让其通过MCU的视频流模块与接收端的视频流模块之间的视频流 通道转发给接收端。
6、 根据权利要求5所述的一种适用于视频会议的纠错方法,其特征在于MCU 的视频数据队列管理模块将视频数据转发给接收端之前进行如下处理MCU的 丢包状态记录模块根据数据包接收检查模块的判断结果进行记录,如果丢包 状态记录器所记录的状态为丢包状态,则视频数据队列管理模块在其内部的 数据队列中查找距离排列在第一位的待发送帧最近的IDR帧,若存在该IDR 帧,则丢弃所述的待发送帧及待发送帧与IDR帧之间的帧,然后发送IDR帧,并将丢包状态记录器复位为非丢包状态。
7、 根据权利要求3或4所述的一种适用于视频会议的纠错方法,其特征在于它还包括以下步骤S201:接收端通过其与MCU之间的视频流通道接收MCU转发的数据,数据包接 收检查模块对收到的每个数据包进行分析,根据其帧号和包号的连续性来判 断当前数据包与上一个数据包之间是否发生数据包丟失 如果没有发生数据包丢失,则数据包接收检查模块将数据包交给接收端的 视频数据队列管理模块,当视频数据队列管理模块累计收到一帧完整的视 频帧后提交给解码模块进行解码;如果发生数据包丢失,则数据包接收检查模块记录上一个数据包的帧号和 当前数据包的帧号并形成丢包报告,通过接收端的信令模块与MCU的信令模 块之间的信令通道发送给MCU,然后MCU将该丢包报告通过MCU的信令模块与 发送端的信令模块之间的信令通道转发给发送端,所述的丢包报告包括上一个^t据包的帧号和当前翁:据包的帧号;S202:发送端收到所述的步骤S201所述的丢包报告,则重复所述步骤S103。
8、 根据权利要求7所述的一种适用于视频会议的纠错方法,其特征在于所述 步骤S201还包括以下步骤所述的解码模块在解码时,如果出现解码错误, 也将发生解码错误处的帧号通过信令通道发送给MCU,然后由MCU转发给发 送端。
9、 根据权利要求8所述的一种适用于视频会议的纠错方法,其特征在于所述 步骤S 2 01中还包括以下步骤当接收端的数据包接收检查模块判断为丢包时进行如下处理 对于帧内丢包,则丢弃当前数据包,并通知接收端的视频数据队列管理模块 把当前数据包所属帧的数据抛弃,同时通知MCU的视频数据队列管理模块把当 前数据包所属帧未发送的数据抛弃;对于帧间丢包,则将当前数据包交给视频数据队列管理模块,由视频数据队 列管理器提交给解码器解码。
10、 根据权利要求9所述的一种适用于视频会议的纠错方法,其特征在于如果 MCU通过所述的信令通道得到接收方的丢包报告或解码错误信息,或者丢包状 态记录器的状态为丢包状态,则视频数据队列管理模块将在其内部的数据队 列查找距离排列在第一位的待发送帧最近的IDR帧,若存在该IDR帧,则丢弃 所述的待发送帧及待发送帧与IDR帧之间的帧,然后发送IDR帧,并将丢包状 态记录器复位为非丢包状态;若不存在该IDR帧,则将丢包状态记录器设置为丢包状态,并继续进行原步骤。
全文摘要
本发明公开了一种适用于视频会议的纠错装置和纠错方法,包括至少两个终端设备和MCU,所述的终端设备分别与MCU网络连接;所述的终端设备包括通讯模块、数据包接收检查管理模块、视频数据队列管理模块、编码模块、解码模块、编码管理模块,所述的通讯模块与数据包接收检查管理模块、视频数据队列管理模块依次连接,所述的通讯模块与编码模块、编码管理模块依次连接,所述的解码模块与所述的视频数据队列管理模块连接;所述的通讯模块包括视频流通道模块和信令通道模块;所述的MCU包括依次连接的通讯模块、数据包接收检查模块和视频数据队列管理模块,所述的通讯模块包括视频流通道模块和信令通道模块。能够及时发现丢包或丢帧问题,消除画面的马赛克,并且不会引起过多地消耗有限的网络带宽的问题。
文档编号H04N7/15GK101389036SQ200810199140
公开日2009年3月18日 申请日期2008年10月14日 优先权日2008年10月14日
发明者刘明宇, 徐蜀中 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1