CN103024388B - 多画面的视频实时解码方法及系统 - Google Patents
多画面的视频实时解码方法及系统 Download PDFInfo
- Publication number
- CN103024388B CN103024388B CN201210548901.5A CN201210548901A CN103024388B CN 103024388 B CN103024388 B CN 103024388B CN 201210548901 A CN201210548901 A CN 201210548901A CN 103024388 B CN103024388 B CN 103024388B
- Authority
- CN
- China
- Prior art keywords
- decoding
- thread
- saturation state
- video flowing
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000003139 buffering effect Effects 0.000 claims description 21
- 238000001514 detection method Methods 0.000 claims description 11
- 230000001934 delay Effects 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供一种多画面的视频实时解码方法及系统,所述方法包括以下步骤:获取当前存在的所有解码线程,形成线程表;当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;若是,则将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;若否,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。本发明的方法及系统,当判断发现当前已有的解码线程仍然具备实时解码的能力时,利用已有的解码线程进行解码,此时合理利用了CPU资源并保证不会出现视频迟延;当判断发现当前已有的所有解码线程都不再具备实时解码的能力时,创建新的解码线程来进行解码,从而有效避免了视频延迟的情况出现。
Description
技术领域
本发明涉及视频编解码技术领域,特别是涉及一种多画面的视频实时解码方法以及一种多画面的视频实时解码系统。
背景技术
视频监控或者视频会议都需具备在一个终端上观看多路视频的能力,而对视频数据进行解码是非常占用CPU(CentralProcessingUnit,中央处理器)资源的,因此在对多画面视频数据进行解码时对CPU的要求都会比较高。
传统的处理多画面的视频实时视频解码的方法,主要是采用单线程对多路视频进行解码的方式。即只开启一个线程解码所有的视频流,这种方式的系统资源占用率在理论上是最低的,在解码的视频路数较少的情况下不会出现问题。然而,随着视频观看路数的增加,单线程解码无法充分利用CPU资源进行实时解码,导致视频延迟的情况经常出现。
发明内容
其于此,有此要针对上述随着视频观看路数的增加导致视频延迟的问题,提供一种多画面的视频实时解码方法及系统。
为实现上述目的,本发明采用如下的技术方案:
一种多画面的视频实时解码方法,包括以下步骤:
获取当前存在的所有解码线程,形成线程表;其中,所述线程表被实时维护,通过所述线程表查询和操作所有的解码线程;
当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;
若是,则将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;
若否,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码;
其中,所述解码线程中包括如下数据信息:解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括是和否两种状态;
将所述新的视频流分配给指定的解码线程之后,还包括步骤:在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态;
所述确定指定的解码线程的饱和状态的过程包括:在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为是。
一种多画面的视频实时解码系统,包括:
线程表生成模块,用于获取当前存在的所有解码线程,形成线程表;其中,所述线程表被实时维护,通过所述线程表查询和操作所有的解码线程;所述解码线程中包括如下数据信息:解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括是和否两种状态;
判断模块,用于当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;
第一解码模块,用于在所述判断模块的判断结果为是时,将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;
第一解码模块,用于在所述判断模块的判断结果为否时,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码;
所述系统还包括检测模块,用于在将所述新的视频流分配给指定的解码线程之后,在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态;
所述检测模块包括第一饱和状态更改模块,用于在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为是。
由以上方案可以看出,本发明的一种多画面的视频实时解码方法及系统,实时维护着一张线程表,当观看了新的视频画面(即接收到新的视频流)后,判断线程表中是否存在饱和状态为否的解码线程,如果存在则说明当前已有的解码线程仍然具备实时解码的能力,此时不需要创建新的解码线程,利用已有的解码线程进行解码也不会导致视频迟延的情况出现,从而合理利用了CPU资源,避免了资源的浪费;另外,如果线程表中不存在饱和状态为否的解码线程,则说明当前已有的所有解码线程都不再具备对该新的视频流进行实时解码的能力,此时如果仍然利用已有的解码线程进行解码必须出现视频延迟的情况,因此本发明中创建新的解码线程来进行解码,从而有效避免了随着视频观看路数的增多而导致的视频延迟的情况出现。
附图说明
图1为本发明实施例中一种多画面的视频实时解码方法的流程示意图;
图2为本发明实施例中一种多画面的视频实时解码系统的结构示意图。
具体实施方式
下面结合附图以及具体的实施例,对本发明的技术方案作进一步的描述。
参见图1所示,一种多画面的视频实时解码方法,包括以下步骤:
步骤S101,获取当前存在的所有解码线程,形成线程表。本发明实施例中实时维护这张线程表,通过这张线程表可以查询和操作所有的解码线程。
作为一个较好的实施例,所述解码线程中可以包括如下数据信息:
DecodeBuffer:解码缓冲区;
BufferSize:解码缓冲区大小;
BufferUseage:缓冲区当前使用率;
SaturationState:饱和状态。其中,所述饱和状态包括“是”(true)和“否”(false)两种状态。
每个解码线程维护着一个唯一的解码缓冲区(DecodeBuffer),所有需要解码的视频数据必须先写入缓冲区,解码线程会判断解码缓冲区中是否有数据可读,如果有,则立即取出,并进行解码。解码缓冲区大小(BufferSize)是可以配置的,它的大小决定了解码的最高时延,假设缓冲区的大小为1Mb,而视频流的码率为1Mbps,意味着画面的解码时延不会超过1s。饱和状态(SaturationState)的初始值为false,表示当前解码线程处于非饱和状态。另外,缓冲区当前使用率(BufferUseage)这个数值体现了解码线程的解码能力,如果数值比较小,例如10%,表示解码线程的解码速度很快,能够及时的从缓冲区中取走数据进行解码,从网络过来并且放入缓冲区的数据堆积很小;如果数值比较大,例如80%,表示解码线程解码速度已经降低了,不能及时取走缓冲区中的数据进行解码,从网络过来的数据在缓冲区中堆积的比较多。
步骤S102,当客户端需要观看某一视频画面时,会给服务端发送观看视频请求;服务端会根据所述观看视频请求发送对应的新的视频流给客户端。因此在客户端中,当接收到新的视频流后,首先判断所述线程表中是否存在饱和状态为否的解码线程;若是则进入步骤S103,若则进入步骤S104。
步骤S103,若是,即所述线程表中存在某一饱和状态为否的解码线程,此时说明这个解码线程仍然具备实时解码的能力,则此时不需要创建新的解码线程,利用上述解码线程进行解码也不会导致视频迟延的情况出现,因此本步骤中将所述新的视频流分配给所述饱和状态为否的解码线程进行解码。
步骤S104,若否,即所述线程表中不存在任意一个饱和状态为否的解码线程,说明所有解码线程已饱和,不再具备对该新的视频流进行实时解码的能力。因此本步骤中,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。
需要说明的是,本发明实施列中每创建一个新的解码线程,都会立即被步骤S101中的线程表所捕获到并一起进行维护。
作为一个较好的实施例,将所述新的视频流分配给指定的解码线程(该指定的解码线程,即可以是步骤S103中已有线程表中饱和状态为否的那个解码线程,还可以是步骤S104中新创建的那个解码线程)之后,还包括步骤:启动一个定时器,在预定时间T内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态。
进一步的,作为一个较好的实施例,所述确定新的解码线程的饱和状态的过程具体可以包括如下:在所述预定时间T内,若所述新的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,就可以认为这个解码线程的解码能力已经达到饱和状态,则可以将该指定的解码线程的饱和状态设置为是,后续的视频流将不能再使用此解码线程进行解码。
上述的预设饱和阈值、预设阈值,用户可以根据不同情况做不同的设置。例如我们将预设饱和阈值设置为80%,预设阈值设置为50%。下面通过一个具体的例子来进行说明:假设将预定时间T设置为20s,定时判断的时间间隔为1s,那么在时间T内我们将总共进行20次的检测;如果在这20次的检测中,有大于10次的检测中发现缓冲区当前使用率大于饱和阈值(也就是大于预设饱和阈值的次数除以总检测次数大于50%),那么我们认为这个解码线程的解码能力已经达到饱和状态,后续新的视频流不能放到此解码线程进行解码。
本发明能够在严格保证时延的前提下合理利用CPU资源进行多线程并行解码。作为一个较好的实施例,在解码过程中,若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则可以将该解码线程的饱和状态设置为否。及时的更新解码线程的饱和状态信息,这样再有新的视频流时就可以使用这个释放出来的解码线程来进行解码了,合理的利用了已有资源。
另外,作为一个较好的实施例,在解码的过程中,若检测到所述线程表中出现无任何视频流需要解码的解码线程,则可以立即将该解码线程撤销。及时的终止无任何视频流需要解码的解码线程,这样可以进一步的节省CPU资源。
另外,与上述一种多画面的视频实时解码方法相对应,本发明还提供一种多画面的视频实时解码系统,如图2所示,包括:
线程表生成模块101,用于获取当前存在的所有解码线程,形成线程表;
判断模块102,用于当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;
第一解码模块103,用于在所述判断模块的判断结果为是时,将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;
第二解码模块104,用于在所述判断模块的判断结果为否时,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码。
作为一个较好的实施例,所述解码线程中可以包括如下数据信息:解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括“是”和“否”两种状态。
作为一个较好的实施例,上述多画面的视频实时解码系统还可以包括:
检测模块,用于在将所述新的视频流分配给指定的解码线程(该指定的解码线程,即可以是已有线程表中饱和状态为否的那个解码线程,还可以是新创建的那个解码线程)之后,在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态。
作为一个较好的实施例,所述检测模块中可以包括第一饱和状态更改模块,用于在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为“是”。
作为一个较好的实施例,上述多画面的视频实时解码系统还可以包括:
第二饱和状态更改模块,用于若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则将该解码线程的饱和状态设置为否。及时的更新解码线程的饱和状态信息,这样再有新的视频流时就可以使用这个释放出来的解码线程来进行解码了,合理的利用了已有资源。
作为一个较好的实施例,上述多画面的视频实时解码系统还可以包括:
撤销模块,用于若检测到所述线程表中出现无任何视频流需要解码的解码线程,则将该解码线程撤销。及时的终止无任何视频流需要解码的解码线程,这样可以进一步的节省CPU资源。
通过以上方案可以看出,本发明的一种多画面的视频实时解码方法及系统,实时维护着一张线程表,当观看了新的视频画面(即接收到新的视频流)后,判断线程表中是否存在饱和状态为否的解码线程,如果存在则说明当前已有的解码线程仍然具备实时解码的能力,此时不需要创建新的解码线程,利用已有的解码线程进行解码也不会导致视频迟延的情况出现,从而合理利用了CPU资源,避免了资源的浪费;另外,如果线程表中不存在饱和状态为否的解码线程,则说明当前已有的所有解码线程都不再具备对该新的视频流进行实时解码的能力,此时如果仍然利用已有的解码线程进行解码必须出现视频延迟的情况,因此本发明中创建新的解码线程来进行解码,从而有效避免了随着视频观看路数的增多而导致的视频延迟的情况出现。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (4)
1.一种多画面的视频实时解码方法,其特征在于,包括以下步骤:
获取当前存在的所有解码线程,形成线程表;其中,所述线程表被实时维护,通过所述线程表查询和操作所有的解码线程;
当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;
若是,则将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;
若否,则创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码;
其中,所述解码线程中包括如下数据信息:解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括是和否两种状态;
将所述新的视频流分配给指定的解码线程之后,还包括步骤:在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态;
所述确定指定的解码线程的饱和状态的过程包括:在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为是。
2.根据权利要求1所述的多画面的视频实时解码方法,其特征在于,还包括步骤:
若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则将该解码线程的饱和状态设置为否;
和/或
若检测到所述线程表中出现无任何视频流需要解码的解码线程,则将该解码线程撤销。
3.一种多画面的视频实时解码系统,其特征在于,包括:
线程表生成模块,用于获取当前存在的所有解码线程,形成线程表;其中,所述线程表被实时维护,通过所述线程表查询和操作所有的解码线程;所述解码线程中包括如下数据信息:解码缓冲区、解码缓冲区大小、缓冲区当前使用率、饱和状态;所述饱和状态包括是和否两种状态;
判断模块,用于当接收到新的视频流后,判断所述线程表中是否存在饱和状态为否的解码线程;
第一解码模块,用于在所述判断模块的判断结果为是时,将所述新的视频流分配给所述饱和状态为否的解码线程进行解码;
第二解码模块,用于在所述判断模块的判断结果为否时,创建新的解码线程,并将所述新的视频流分配给该创建的解码线程进行解码;
所述系统还包括检测模块,用于在将所述新的视频流分配给指定的解码线程之后,在预定时间内,定时检测该指定的解码线程中解码缓冲区的占用情况,确定该指定的解码线程的饱和状态;
所述检测模块包括第一饱和状态更改模块,用于在所述预定时间内,若所述指定的解码线程的缓冲区当前使用率大于预设饱和阈值的次数除以总的检测次数的值大于预设阈值,则将该指定的解码线程的饱和状态设置为是。
4.根据权利要求3所述的多画面的视频实时解码系统,其特征在于,还包括:
第二饱和状态更改模块,用于若检测到饱和状态为是的解码线程中有至少一路视频流被取出,则将该解码线程的饱和状态设置为否;
和/或
撤销模块,用于若检测到所述线程表中出现无任何视频流需要解码的解码线程,则将该解码线程撤销。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210548901.5A CN103024388B (zh) | 2012-12-17 | 2012-12-17 | 多画面的视频实时解码方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210548901.5A CN103024388B (zh) | 2012-12-17 | 2012-12-17 | 多画面的视频实时解码方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103024388A CN103024388A (zh) | 2013-04-03 |
CN103024388B true CN103024388B (zh) | 2016-05-25 |
Family
ID=47972461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210548901.5A Expired - Fee Related CN103024388B (zh) | 2012-12-17 | 2012-12-17 | 多画面的视频实时解码方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103024388B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391968B (zh) * | 2015-11-03 | 2019-05-24 | 浙江大华技术股份有限公司 | 一种视频会话分配方法及装置 |
CN109618139A (zh) * | 2019-01-10 | 2019-04-12 | 深圳市华金盾信息科技有限公司 | 一种基于视觉路由的智能视频监控系统及方法 |
CN110087019B (zh) * | 2019-04-29 | 2021-03-19 | 苏州科达科技股份有限公司 | 一种会议音频解码方法、装置、设备及可读存储介质 |
CN112954357A (zh) * | 2021-01-26 | 2021-06-11 | 四川天翼网络服务有限公司 | 一种动态高效自适应视频流智能编解码方法及系统 |
CN114466227B (zh) * | 2021-12-22 | 2023-08-04 | 天翼云科技有限公司 | 一种视频分析方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588316A (zh) * | 2004-06-29 | 2005-03-02 | 北京大学 | 应用服务器的性能优化方法 |
CN104111877A (zh) * | 2014-07-29 | 2014-10-22 | 广东能龙教育股份有限公司 | 一种基于线程调配引擎的线程资源动态调配系统和方法 |
-
2012
- 2012-12-17 CN CN201210548901.5A patent/CN103024388B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588316A (zh) * | 2004-06-29 | 2005-03-02 | 北京大学 | 应用服务器的性能优化方法 |
CN104111877A (zh) * | 2014-07-29 | 2014-10-22 | 广东能龙教育股份有限公司 | 一种基于线程调配引擎的线程资源动态调配系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103024388A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103024388B (zh) | 多画面的视频实时解码方法及系统 | |
WO2016041468A1 (zh) | 一种唤醒方法、装置及终端 | |
CN107948095B (zh) | 一种资源控制方法、装置及总线系统服务器 | |
US9026826B2 (en) | System for reducing energy consumption of a device and a method therefor | |
US20100037234A1 (en) | Data processing system and method of task scheduling | |
EP3185641A1 (en) | Dual-mode device and method for achieving the simultaneous communication | |
CN103092682A (zh) | 异步网络应用程序处理方法 | |
CN102132254B (zh) | 用于调度周期性过程的方法和系统 | |
JP2012080583A5 (zh) | ||
WO2007092406A3 (en) | Methods and systems for reducing burst usage of a networked computer system | |
WO2011081931A3 (en) | Systems and methods for service isolation | |
CN101483918A (zh) | 缓冲区状态报告的发送方法及其装置 | |
KR20100110894A (ko) | 가변적으로 인터리빙된 멀티스레디드 프로세서 방법 및 장치 | |
US9578612B2 (en) | Node device and method for communication | |
CN101609417A (zh) | 基于VxWorks操作系统的混合任务集调度方法 | |
WO2019091068A1 (zh) | 一种二乘二取二冗余结构数据处理方法 | |
CN106681475A (zh) | 降低移动终端功耗的方法及移动终端 | |
CN102129475B (zh) | 一种解决系统资源有限的冲突避让方法及系统 | |
CN103024394A (zh) | 视频文件剪辑方法和装置 | |
CN107306283A (zh) | 一种数据同步方法和装置 | |
CN104918111A (zh) | 一种Android智能电视的直播频道识别方法及系统 | |
WO2008051034A3 (en) | Methods for efficient resource utilization with interlace and/or interlace offset switching | |
WO2011141910A3 (en) | Reverse message classification | |
CN104571466A (zh) | 一种多系统终端的省电方法及装置 | |
CN103684875A (zh) | 过载保护方法以及设备过载保护装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 510670 Guangdong Province, Guangzhou high tech Industrial Development Zone Kezhu Road No. 233 Patentee after: VTRON GROUP Co.,Ltd. Address before: 510663 Guangzhou province high tech Industrial Development Zone, Guangdong, Cai road, No. 6, No. Patentee before: VTRON TECHNOLOGIES Ltd. |
|
CP03 | Change of name, title or address | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160525 |
|
CF01 | Termination of patent right due to non-payment of annual fee |