多画面的视频实时解码方法及系统的制作方法

文档序号:7869113阅读:258来源:国知局
专利名称:多画面的视频实时解码方法及系统的制作方法
技术领域
本发明涉及视频编解码技术领域,特别是涉及一种多画面的视频实时解码方法以及一种多画面的视频实时解码系统。
背景技术
视频监控或者视频会议都需具备在一个终端上观看多路视频的能力,而对视频数据进行解码是非常占用CPU (Central Processing Unit,中央处理器)资源的,因此在对多画面视频数据进行解码时对CPU的要求都会 比较高。传统的处理多画面的视频实时视频解码的方法,主要是采用单线程对多路视频进行解码的方式。即只开启一个线程解码所有的视频流,这种方式的系统资源占用率在理论上是最低的,在解码的视频路数较少的情况下不会出现问题。然而,随着视频观看路数的增力口,单线程解码无法充分利用CPU资源进行实时解码,导致视频延迟的情况经常出现。

发明内容
其于此,有此要针对上述随着视频观看路数的增加导致视频延迟的问题,提供一种多画面的视频实时解码方法及系统。为实现上述目的,本发明采用如下的技术方案一种多画面的视频实时解码方法,包括以下步骤获取当前存在的所有解码线程,形成线程表;当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;若是,则将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;若否,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。一种多画面的视频实时解码系统,包括线程表生成模块,用于获取当前存在的所有解码线程,形成线程表;判断模块,用于当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;第一解码模块,用于在所述判断模块的判断结果为是时,将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;第一解码模块,用于在所述判断模块的判断结果为否时,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。由以上方案可以看出,本发明的一种多画面的视频实时解码方法及系统,实时维护着一张线程表,当观看了新的视频画面(即接收到新的视频流)后,判断线程表中是否存在饱和状态为否的解码线程,如果存在则说明当前已有的解码线程仍然具备实时解码的能力,此时不需要创建新的解码线程,利用已有的解码线程进行解码也不会导致视频迟延的情况出现,从而合理利用了 CPU资源,避免了资源的浪费;另外,如果线程表中不存在饱和状态为否的解码线程,则说明当前已有的所有解码线程都不再具备对该新的视频流进行实时解码的能力,此时如果仍然利用已有的解码线程进行解码必须出现视频延迟的情况,因此本发明中创建新的解码线程来进行解码,从而有效避免了随着视频观看路数的增多而导致的视频延迟的情况出现。


图1为本发明实施例中一种多画面的视频实时解码方法的流程示意图;图2为本发明实施例中一种多画面的视频实时解码系统的结构示意图。
具体实施例方式下面结合附图以及具体的实施例,对本发明的技术方案作进一步的描述。参见图1所示,一种多画面的视频实时解码方法,包括以下步骤步骤S101,获取当前存在的所有解码线程,形成线程表。本发明实施例中实时维护这张线程表,通过这张线程表可以查询和操作所有的解码线程。作为一个较好的实施例,所述解码线程中可以包括如下数据信息DecodeBuffer :解码缓冲区;BufferSize :解码缓冲区大小;BufferUseage :缓冲区当前使用率;SaturationState :饱和状态。其中,所述饱和状态包括“是”(true)和“否”(false)两种状态。每个解码线程维护着一个唯一的解码缓冲区(DecodeBuffer),所有需要解码的视频数据必须先写入缓冲区,解码线程会判断解码缓冲区中是否有数据可读,如果有,则立即取出,并进行解码。解码缓冲区大小(BufferSize)是可以配置的,它的大小决定了解码的最高时延,假设缓冲区的大小为1Mb,而视频流的码率为1Mbps,意味着画面的解码时延不会超过Is。饱和状态(SaturationState)的初始值为false,表示当前解码线程处于非饱和状态。另外,缓冲区当前使用率(BufferUseage)这个数值体现了解码线程的解码能力,如果数值比较小,例如10%,表示解码线程的解码速度很快,能够及时的从缓冲区中取走数据进行解码,从网络过来并且放入缓冲区的数据堆积很小;如果数值比较大,例如80%,表示解码线程解码速度已经降低了,不能及时取走缓冲区中的数据进行解码,从网络过来的数据在缓冲区中堆积的比较多。步骤S102,当客户端需要观看某一视频画面时,会给服务端发送观看视频请求;服务端会根据所述观看视频请求发送对应的新的视频流给客户端。因此在客户端中,当接收到新的视频流后,首先判断所述线程表中是否存在饱和状态为否的解码线程;若是则进入步骤S103,若则进入步骤S104。步骤S103,若是,即所述线程表中存在某一饱和状态为否的解码线程,此时说明这个解码线程仍然具备实时解码的能力,则此时不需要创建新的解码线程,利用上述解码线程进行解码也不会导致视频迟延的情况出现,因此本步骤中将所述新的视频流分配给所述饱和状态为否的解码线程进行解码。步骤S104,若否,即所述线程表中不存在任意一个饱和状态为否的解码线程,说明所有解码线程已饱和,不再具备对该新的视频流进行实时解码的能力。因此本步骤中,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。需要说明的是,本发明实施列中每创建一个新的解码线程,都会立即被步骤SlOl中的线程表所捕获到并一起进行维护。作为一个较好的实施例,将所述新的视频流分配给指定的解码线程(该指定的解码线程,即可以是步骤S103中已有线程表中饱和状态为否的那个解码线程,还可以是步骤S104中新创建的那个解码线程)之后,还包括步骤启动一个定时器,在预定时间T内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态。进一步的,作为一个较好的实施 例,所述确定新的解码线程的饱和状态的过程具体可以包括如下在所述预定时间T内,若所述新的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,就可以认为这个解码线程的解码能力已经达到饱和状态,则可以将该指定的解码线程的饱和状态设置为是,后续的视频流将不能再使用此解码线程进行解码。上述的预设饱和阈值、预设阈值,用户可以根据不同情况做不同的设置。例如我们将预设饱和阈值设置为80%,预设阈值设置为50%。下面通过一个具体的例子来进行说明假设将预定时间T设置为20s,定时判断的时间间隔为ls,那么在时间T内我们将总共进行20次的检测;如果在这20次的检测中,有大于10次的检测中发现缓冲区当前使用率大于饱和阈值(也就是大于预设饱和阈值的次数除以总检测次数大于50%),那么我们认为这个解码线程的解码能力已经达到饱和状态,后续新的视频流不能放到此解码线程进行解码。本发明能够在严格保证时延的前提下合理利用CPU资源进行多线程并行解码。作为一个较好的实施例,在解码过程中,若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则可以将该解码线程的饱和状态设置为否。及时的更新解码线程的饱和状态信息,这样再有新的视频流时就可以使用这个释放出来的解码线程来进行解码了,合理的利用了已有资源。另外,作为一个较好的实施例,在解码的过程中,若检测到所述线程表中出现无任何视频流需要解码的解码线程,则可以立即将该解码线程撤销。及时的终止无任何视频流需要解码的解码线程,这样可以进一步的节省CPU资源。另外,与上述一种多画面的视频实时解码方法相对应,本发明还提供一种多画面的视频实时解码系统,如图2所示,包括线程表生成模块101,用于获取当前存在的所有解码线程,形成线程表;判断模块102,用于当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;第一解码模块103,用于在所述判断模块的判断结果为是时,将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;第二解码模块104,用于在所述判断模块的判断结果为否时,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。作为一个较好的实施例,所述解码线程中可以包括如下数据信息解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括“是”和“否”两种状态。作为一个较好的实施例,上述多画面的视频实时解码系统还可以包括
检测模块,用于在将所述新的视频流分配给指定的解码线程(该指定的解码线程,即可以是已有线程表中饱和状态为否的那个解码线程,还可以是新创建的那个解码线程)之后,在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态。作为一个较好的实施例,所述检测模块中可以包括第一饱和状态更改模块,用于在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为“是”。作为一个较好的实施例,上述多画面的视频实时解码系统还可以包括第二饱和状态更改模块,用于若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则将该解码线程的饱和状态设置为否。及时的更新解码线程的饱和状态信息,这样再有新的视频流时就可以使用这个释放出来的解码线程来进行解码了,合理的利用了 已有资源。作为一个较好的实施例,上述多画面的视频实时解码系统还可以包括撤销模块,用于若检测到所述线程表中出现无任何视频流需要解码的解码线程,则将该解码线程撤销。及时的终止无任何视频流需要解码的解码线程,这样可以进一步的节省CPU资源。通过以上方案可以看出,本发明的一种多画面的视频实时解码方法及系统,实时维护着一张线程表,当观看了新的视频画面(即接收到新的视频流)后,判断线程表中是否存在饱和状态为否的解码线程,如果存在则说明当前已有的解码线程仍然具备实时解码的能力,此时不需要创建新的解码线程,利用已有的解码线程进行解码也不会导致视频迟延的情况出现,从而合理利用了 CPU资源,避免了资源的浪费;另外,如果线程表中不存在饱和状态为否的解码线程,则说明当前已有的所有解码线程都不再具备对该新的视频流进行实时解码的能力,此时如果仍然利用已有的解码线程进行解码必须出现视频延迟的情况,因此本发明中创建新的解码线程来进行解码,从而有效避免了随着视频观看路数的增多而导致的视频延迟的情况出现。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种多画面的视频实时解码方法,其特征在于,包括以下步骤获取当前存在的所有解码线程,形成线程表;当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;若是,则将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;若否,则创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。
2.根据权利要求1所述的多画面的视频实时解码方法,其特征在于,所述解码线程中包括如下数据信息解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括是和否两种状态。
3.根据权利要求2所述的多画面的视频实时解码方法,其特征在于,将所述新的视频流分配给指定的解码线程之后,还包括步骤在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态。
4.根据权利要求3所述的多画面的视频实时解码方法,其特征在于,所述确定指定的解码线程的饱和状态的过程包括在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为是。
5.根据权利要求1-4任意一项所述的多画面的视频实时解码方法,其特征在于,还包括步骤若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则将该解码线程的饱和状态设置为否;和/或若检测到所述线程表中出现无任何视频流需要解码的解码线程,则将该解码线程撤销。
6.一种多画面的视频实时解码系统,其特征在于,包括线程表生成模块,用于获取当前存在的所有解码线程,形成线程表;判断模块,用于当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;第一解码模块,用于在所述判断模块的判断结果为是时,将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;第二解码模块,用于在所述判断模块的判断结果为否时,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。
7.根据权利要求6所述的多画面的视频实时解码系统,其特征在于,所述解码线程中包括如下数据信息解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括是和否两种状态。
8.根据权利要求7所述的多画面的视频实时解码系统,其特征在于,还包括检测模块,用于在将所述新的视频流分配给指定的解码线程之后,在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态。
9.根据权利要求8所述的多画面的视频实时解码系统,其特征在于,所述检测模块中包括第一饱和状态更改模块,用于在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为是。
10.根据权利要求6-9任意一项所述的多画面的视频实时解码系统,其特征在于,还包括第二饱和状态更改模块,用于若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则将该解码线程的饱和状态设置为否;和/或撤销模块,用于若检测到所述线程表中出现无任何视频流需要解码的解码线程,则将该解码线程撤销。
全文摘要
本发明提供一种多画面的视频实时解码方法及系统,所述方法包括以下步骤获取当前存在的所有解码线程,形成线程表;当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;若是,则将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;若否,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。本发明的方法及系统,当判断发现当前已有的解码线程仍然具备实时解码的能力时,利用已有的解码线程进行解码,此时合理利用了CPU资源并保证不会出现视频迟延;当判断发现当前已有的所有解码线程都不再具备实时解码的能力时,创建新的解码线程来进行解码,从而有效避免了视频延迟的情况出现。
文档编号H04N7/18GK103024388SQ20121054890
公开日2013年4月3日 申请日期2012年12月17日 优先权日2012年12月17日
发明者石金川 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1