本发明涉及视频解码技术领域,具体涉及一种多路视频解码方法及装置。
背景技术:
安卓(Android)操作系统的终端视频解码能力有限,在安卓终端上应用多路视频解码只能通过后台系统进行处理,现有处理方法包括:在视频会议或视频监控系统后台做视频合成,由于一般安卓系统上只支持1路高清解码,所以将多路视频合成为一路视频进行解码。还可以在视频会议或视频监控系统后台做视频转码,降低每一路视频分辨率,例如将2路高清视频转码为2路标清视频,在安卓系统上进行解码。
现有解决方法能够在一定程度上完成视频解码能力限制,但是仍存在以下几个问题:
1)安卓终端视频解码能力有限,如果打开超出视频解码能力视频后,那么有可能出现应用程序(App)运行不稳定导致崩溃。
2)对后台系统依赖过大,如果后台系统不支持视频合成或视频转码,那么安卓终端打开多路视频时存在App崩溃的可能性。
3)在视频会议系统中接入第3方视频监控系统时,无法实现整体视频合成或转码时,那么安卓终端打开多路视频时存在App崩溃的可能性。
技术实现要素:
有鉴于此,本发明提供一种多路视频解码方法及装置,以解决现有技术中多路视频解码时存在的应用程序崩溃的问题。
一方面,本发明实施例提供了一种多路视频解码方法,包括:
接收到待解码视频时,产生解码请求;
根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作;
对待解码视频进行解码。
示例性地,根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作包括:
查询能力池中的当前解码能力值是否满足预设要求;
如果满足预设要求,则针对解码请求反馈允许解码的响应,并缩减能力池中的当前解码能力值;
如果不满足预设要求,则针对解码请求反馈拒绝解码的响应。
示例性地,根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作包括:
根据当前解码能力为解码请求分配解码能力值,作为允许解码操作的响应;
识别待解码视频的需求解码能力值;
将需求解码能力值与分配解码能力值进行比较;
如果比较结果为需求解码能力值大于分配解码能力值,则放弃待解码视频的解码;
如果比较结果为需求解码能力值小于或者等于分配解码能力值,则发出缩减请求;
根据缩减请求对分配解码能力值进行缩减,并进行分配,作为允许解码操作的响应。
示例性地,识别待解码视频的需求解码能力值包括:
根据待解码视频的分辨率识别需求解码能力值。
示例性地,对待解码视频进行解码之后,还包括:
如果解码失败或解码完成,则将分配的解码能力值增加至当前解码能力中。
另一方面,本发明实施例提供了一种多路视频解码装置,包括:
视频接收模块,用于接收待解码视频,并产生解码请求;
解码请求处理模块,用于根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作;
视频解码模块,用于对待解码视频进行解码。
示例性地,解码请求处理模块包括:
查询单元,用于查询能力池中的当前解码能力值是否满足预设要求;
允许解码请求响应单元,用于当能力池中的当前解码能力值满足预设要求时,对解码请求反馈允许解码的响应,并缩减能力池中的当前解码能力值;
拒绝解码请求响应单元,用于当能力池中的当前解码能力值不满足预设要求时,对解码请求反馈拒绝解码的响应。
示例性地,解码请求处理模块包括:
分配单元,用于根据当前解码能力为解码请求分配解码能力值,作为允许解码操作的响应;
识别单元,用于根据待解码视频的分辨率识别需求解码能力值;
比较单元,用于将需求解码能力值与分配解码能力值进行比较,如果比较结果为需求解码能力值大于分配解码能力值,则放弃待解码视频的解码;
允许解码操作响应单元,用于当需求解码能力值小于或者等于分配解码能力值时发出缩减请求,根据缩减请求对分配解码能力值进行缩减,并进行分配,作为允许解码操作的响应。
示例性地,比较单元具体用于放弃待解码视频的解码时,将分配的解码能力值增加至当前解码能力中。
示例性地,多路视频解码装置还包括:
能力值回收模块,用于对待解码视频进行解码之后,如果解码失败或解码完成,则将分配的解码能力值增加至当前解码能力中。
本发明实施例提供的多路视频解码方法及装置,通过接收到待解码视频时,产生解码请求,并根据当前解码能力对解码请求进行响应,在当前解码能力值满足预设条件时允许解码请求响应,然后为解码请求分配解码能力值,在待解码视频的需求解码能力值小于或者等于分配解码能力值时允许解码操作的响应,否则放弃解码操作。采用上述技术方法,有效解决了现有技术中因终端解码能力不足而导致应用程序崩溃的问题,根据终端的解码能力对待解码视频进行解码,当超出终端的解码能力,不再接收新的待解码视频,使得多路视频的解码操作可以很好地进行。
附图说明
图1是本发明实施例一提供的一种多路视频解码方法的流程图;
图2为本发明实施例二提供的一种多路视频解码方法的流程图;
图3为本发明实施例三提供的一种多路视频解码方法的流程图;
图4为本发明实施例五提供的一种多路视频解码装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1是本发明实施例一提供的一种多路视频解码方法的流程图。本实施例的方法可由多路视频解码装置来执行,该装置可通过软件和/或硬件的方式实现,并一般可集成于用于解码多路视频的终端中,具体包括视频会议系统终端或者监控系统终端。如图1所示,本实施例提供的多路视频解码方法,具体包括:
S110、接收到待解码视频时,产生解码请求。
通常,视频资源的传输需要将视频资源按照一定的格式编码压缩,即通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263、H.264,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准等。H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。与其它现有的视频编码标准相比,H.264标准在相同的带宽下提供更加优秀的图象质量,在同等图象质量下的压缩效率比以前的标准(MPEG2)提高了2倍左右。
视频资源编码后通过传输线路传到终端,终端接收到的视频资源即为待解码视频,终端需要将该待解码视频按照约定的格式解码还原成可以播放的视频。终端在接收到多路待解码视频时,可以按照接收待解码视频的先后顺序,或者按照预设的优先级,或者随机地对待解码视频进行解码。本发明实施例提供的多路视频解码方法,在接收到待解码视频时,产生解码请求,该解码请求用于向终端请求是否进行解码操作。
S120、根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作。
终端的解码能力一般是固定并且有限的,如果打开超出终端解码能力的视频,可能会出现应用程序运行不稳定进而导致应用程序崩溃。因此,在本实施例中,根据当前终端的解码能力对解码请求进行响应,如果不超出当前终端的解码能力,则允许待解码视频进行解码操作;否则拒绝待解码视频的解码操作。
S130、对待解码视频进行解码。
视频解码是一个能够对数字视频进行解压缩的过程,能够将加密压缩过的视频文件解码后通过播放器播放出来。本实施例中,在待解码视频不超出当前终端的解码能力被允许进行解码操作时,对该待解码视频进行解码,显示并播放视频。
示例性地,对待解码视频进行解码之后,还包括:
如果解码失败或解码完成,则将分配的解码能力值增加至当前解码能力中。
本发明实施例提供的多路视频解码方法,通过接收到待解码视频时,产生解码请求,并根据当前解码能力对解码请求进行响应,在当前解码能力值满足预设条件时允许解码请求响应,并进行解码操作。采用上述技术方法,有效解决了现有技术中因终端解码能力不足而导致应用程序崩溃的问题,根据终端的解码能力对待解码视频进行解码,当超出终端的解码能力,不再接收新的待解码视频,使得多路视频的解码操作可以很好地进行。
实施例二
图2为本发明实施例二提供的一种多路视频解码方法的流程图。如图2所示,在上述实施例的基础上,本实施例提供的多路视频解码方法中,根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作包括:
S121a、查询能力池中的当前解码能力值是否满足预设要求。
当频繁创建删除(销毁)大量对象的时候,对象的创建删除所造成的开销不容小觑,为了提高性能,往往需要一个对象池作为缓存,在激活对象时,从池中提取;在停用对象时,放回池中,等待下一个请求,从而减少创建对象的开销。本实施例中,采用一个能力池作为缓存,将终端的解码能力值放入能力池中统一管理。
根据当前解码能力对解码请求进行响应时,首先查询能力池中的当前解码能力值是否满足预设要求。其中,预设要求可以是能力池中有剩余的解码能力值,剩余的解码能力值可以是一个、两个或多个,预设要求中剩余解码能力值的个数可以根据解码请求需求的解码能力值设置,例如已知解码请求需求的解码能力值为两个,则预设要求为能力池中有两个解码能力值,即:当查询到能力池中有两个解码能力值时,则判断当前解码能力值满足预设要求。
S122a、如果满足预设要求,则针对解码请求反馈允许解码的响应,并缩减能力池中的当前解码能力值。
判断当前解码能力值满足预设要求时,针对解码请求反馈允许解码的响应,即允许对待解码视频进行解码,并将解码能力值分配给解码请求。已分配给该解码请求的能力值,随即从能力池中缩减,使得能力池中的当前解码能力值能够正确反映该终端当前剩余可供分配的解码能力。
S123a、如果不满足预设要求,则针对解码请求反馈拒绝解码的响应。
判断当前解码能力值不满足预设要求时,针对解码请求反馈拒绝解码的响应,即拒绝对待解码视频进行解码。
本发明实施例提供的多路视频解码方法,通过查询能力池中的当前解码能力值是否满足预设要求,并在当前解码能力值满足预设条件时允许解码请求响应,否则拒绝解码请求响应。采用上述技术方法,有效解决了现有技术中因终端解码能力不足而导致应用程序崩溃的问题,根据终端的解码能力对待解码视频进行解码,当超出终端的解码能力,不再接收新的待解码视频,使得多路视频的解码操作可以很好地进行。
实施例三
图3为本发明实施例三提供的一种多路视频解码方法的流程图。如图3所示,在上述实施例的基础上,本实施例提供的多路视频解码方法中,根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作包括:
S121b、根据当前解码能力为解码请求分配解码能力值,作为允许解码操作的响应。
进一步地,根据当前解码能力为解码请求分配解码能力值可以是将能力池中的剩余解码能力值全部分配给解码请求;还可以将预设单位的解码能力值分配给解码请求,例如预设单位可以是两个或者四个解码能力值。
S122b、识别待解码视频的需求解码能力值。
示例性地,识别待解码视频的需求解码能力值包括:
根据待解码视频的分辨率识别需求解码能力值。
视频分辨率是指单位长度内的有效像素值ppi(每英寸像素Pixel per inch),视频会议和视频监控中常见视频分辨率:CIF:352×288,4CIF:704×576,720P:1280×720,1080P:1920×1080。
其中,视频分辨率与需求解码能力值的对应关系为:1路1080P级别H264编码视频流解码需要4个解码能力值,1路720P级别H264编码视频流解码需要2个解码能力值,1路4CIF级别H264编码视频流解码需要1个解码能力值。
S123b、将需求解码能力值与分配解码能力值进行比较。
S124b、如果比较结果为需求解码能力值大于分配解码能力值,则放弃待解码视频的解码。
如果需求解码能力值大于分配解码能力值,则表示待解码视频超出终端的解码能力,为了避免终端应用程序崩溃放弃待解码视频的解码。
示例性地,如果在S121b中是将预设单位的解码能力值分配给解码请求,则比较结果为需求解码能力值大于分配解码能力值时,还可以向能力池中申请剩余需求的解码能力值,如果申请不到放弃待解码视频的解码,如果能申请到,则能力池将该解码请求申请的能力值分配给该解码请求,此时,解码请求的需求解码能力值等于分配的解码能力值。
S125b、如果比较结果为需求解码能力值小于或者等于分配解码能力值,则发出缩减请求。
如果需求解码能力值小于或者等于分配解码能力值,则表示待解码视频没有超出终端的解码能力,可以对待解码视频进行解码操作,并向能力池发出缩减能力值的请求。
S126b、根据缩减请求对分配解码能力值进行缩减,并进行分配,作为允许解码操作的响应。
根据缩减请求对分配解码能力值进行缩减,并按照待解码视频的需求解码能力值进行能力值分配,即为待解码视频分配其需求的解码能力值,作为允许解码操作的响应。
本发明实施例提供的多路视频解码方法,根据终端当前解码能力为解码请求分配解码能力值,在待解码视频的需求解码能力值小于或者等于分配解码能力值时允许解码操作的响应,否则放弃解码操作。采用上述技术方法,有效解决了现有技术中因终端解码能力不足而导致应用程序崩溃的问题,根据终端的解码能力对待解码视频进行解码,当超出终端的解码能力,不再接收新的待解码视频,使得多路视频的解码操作可以很好地进行。
实施例四
在上述实施例的基础上,以下通过一个具体的应用场景说明本发明实施例提供的多路视频解码方法。本实施例中,在终端设备上进行视频会议时,终端设备支持1路1080P或2路720P或4路4CIF级别H264编码视频流同时解码。
将终端设备的解码能力统一换算成解码能力值,解码能力值设置:总值4,即终端设备的总解码能力为4,分别成为4个1,1路1080P级别H264编码视频流解码需要4个解码能力值,1路720P级别H264编码视频流解码需要2个解码能力值,1路4CIF级别H264编码视频流解码需要1个解码能力值,其对应关系为:
a)4:1080P
b)2:720P
c)1:4CIF
将终端设备解码能力值的4个1数值对象逐个放入对象池统一管理。
接收到一路待解码视频时,产生解码请求,从对象池申请解码能力值,如果申请不到,则拒绝解码请求的响应;如果能申请到1个能力值,则允许解码请求的响应,并将能力池中的当前解码能力值缩减一个。
允许解码请求响应后接收视频流时,解析第一帧视频序列参数集(SPS)信息,获取视频分辨率并转换为解码能力值,如果解析失败,则认为待解码视频的视频分辨率为1080P。
其中,视频分辨率转换成视频能力计算公式:
1080P标准值:1920*1080=2457600,>=2457600则认为1080P视频能力。
720P标准值:1280*720=921600,>=921600且<2457600,则认为720P视频能力。
4CIF标准值:704*576=405504,<921600则认为4CIF视频能力。
从对象池申请解码能力值,如果申请到解码能力值,则打开本路视频;如果申请不到足够的解码能力值,则关闭本路视频,同时还回已经申请到的解码能力值。
关闭本路待解码视频后,将本路解码能力值还给对象池。
其他路视频解码码采用类似算法进行处理
本实施例提供的多路视频解码方法,确保视频会议终端应用程序稳定可用;自动计算视频能力,提升终端设备支持多路视频解码可能性,满足多路视频业务应用需求;避免终端系统多路视频解码能力不足导致应用程序崩溃问题,提升应用程序稳定性。
实施例五
图4为本发明实施例五提供的一种多路视频解码装置的结构示意图。如图4所示,该多路视频解码装置包括:
视频接收模块110,用于接收待解码视频,并产生解码请求;
解码请求处理模块120,用于根据当前解码能力对解码请求进行响应,以允许或拒绝对待解码视频的解码操作;
视频解码模块130,用于对待解码视频进行解码。
示例性地,多路视频解码装置还包括:
能力值回收模块140,用于对待解码视频进行解码之后,如果解码失败或解码完成,则将分配的解码能力值增加至当前解码能力中。
示例性地,解码请求处理模块包括:
查询单元,用于查询能力池中的当前解码能力值是否满足预设要求;
允许解码请求响应单元,用于当能力池中的当前解码能力值满足预设要求时,对解码请求反馈允许解码的响应,并缩减能力池中的当前解码能力值;
拒绝解码请求响应单元,用于当能力池中的当前解码能力值不满足预设要求时,对解码请求反馈拒绝解码的响应。
示例性地,解码请求处理模块包括:
分配单元,用于根据当前解码能力为解码请求分配解码能力值,作为允许解码操作的响应;
识别单元,用于根据待解码视频的分辨率识别需求解码能力值;
比较单元,用于将需求解码能力值与分配解码能力值进行比较,如果比较结果为需求解码能力值大于分配解码能力值,则放弃待解码视频的解码;
允许解码操作响应单元,用于当需求解码能力值小于或者等于分配解码能力值时发出缩减请求,根据缩减请求对分配解码能力值进行缩减,并进行分配,作为允许解码操作的响应。
示例性地,比较单元具体用于放弃待解码视频的解码时,将分配的解码能力值增加至当前解码能力中。
本发明实施例所提供的多路视频解码装置可用于执行本发明任意实施例提供的多路视频解码方法,具备相应的功能模块,实现相同的有益效果。
显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。