CN105992005A - 视频解码方法、装置及终端设备 - Google Patents
视频解码方法、装置及终端设备 Download PDFInfo
- Publication number
- CN105992005A CN105992005A CN201510096697.1A CN201510096697A CN105992005A CN 105992005 A CN105992005 A CN 105992005A CN 201510096697 A CN201510096697 A CN 201510096697A CN 105992005 A CN105992005 A CN 105992005A
- Authority
- CN
- China
- Prior art keywords
- decoding
- video
- frame
- picture group
- queue
- 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.)
- Pending
Links
Abstract
本申请公开了一种视频解码方法、装置及终端设备,其通过创建并启动多个解码线程,各个解码线程相互独立且并发运行,使得同一时刻可以有多个画面组被解码,相对于现有通过串行方式进行解码的方法,解码速度也相应提高多倍,从而可以实现数据量较大的高清视频文件的在线播放,避免卡顿现象。
Description
技术领域
本申请涉及视频处理技术领域,尤其涉及一种视频解码方法、装置及终端设备。
背景技术
随着互联网技术的发展,利用可以访问互联网的终端,用户不仅可以浏览文字、图片信息,还可以观看互联网中的视频文件;相对于将视频文件完全下载至终端后再观看,用户更倾向直接通过浏览器或专用播放器在线观看互联网中的视频文件,不仅方便快捷,还可以节省终端的存储空间。由于播放视频文件前需要对其进行解码操作,以得到每个视频帧对应的图像,故为实现在线播放视频文件,终端需要同时执行解码和播放两种操作,解码得到的各帧图像直接加入播放队列进行播放。
现有视频解码方法以画面组(Group of Pictures,GOP)为单位,通过串行方式进行解码,即同一时刻只解码一个GOP,故视频文件的质量越高,即单位时长的视频文件包含的信息量越大,所需的解码时间越长,即解码速度越低。相应的,在应用现有解码技术执行高清视频的在线播放时,极易因视频解码速度小于播放速度而导致视频播放卡顿的现象。因此,如何提高视频解码速度已成为一个亟需解决的技术问题。
发明内容
为克服相关技术中存在的问题,本申请提供一种视频解码方法、装置及终端设备。
本申请第一方面提供一种视频解码方法;该方法包括:
创建并启动多个解码线程;
依次读取待解码视频的各个视频帧;
当读取到的多个视频帧构成一个画面组时,则触发一个处于空闲状态的解码线程对所述画面组执行解码操作,得到所述画面组中各个视频帧对应的图像。
结合第一方面,在第一方面的第一种可行的实施方式中,所述视频解码方法还包括:
创建帧存储队列并将读取到的视频帧存入所述帧存储队列;
其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一个画面组的各个视频帧存入同一个帧存储队列。
结合第一方面,或者第一方面的第一种可行的实施方式,在第一方面的第二种可行的实施方式中,所述触发一个处于空闲状态的解码线程对所述画面组执行解码操作包括以下任意一种:
触发一个处于空闲状态的解码线程控制软解码器对所述画面组进行解码,和,触发一个处于空闲状态的解码线程控制硬解码器对所述画面组进行解码。
结合第一方面,或者第一方面的第一种可行的实施方式,在第一方面的第三种可行的实施方式中,所述视频解码方法还包括:
将同一个画面组解码得到的图像存入同一个待渲染队列,并根据每个画面组中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
根据排序结果对所述待渲染队列中的图像执行渲染操作。
本申请第二方面提供一种视频解码装置;该装置包括:
线程配置单元,用于创建并启动多个解码线程;
视频读取单元,用于读取待解码视频的各个视频帧;
解码控制单元,用于当读取到的多个视频帧构成一个画面组时,触发一个处于空闲状态的解码线程对所述画面组执行解码操作,得到所述画面组中各个视频帧对应的图像。
结合第二方面,在第二方面的第一种可行的实施方式中,所述视频解码装置还包括:
解码队列控制单元,用于创建帧存储队列并将读取到的视频帧存入所述帧存储队列;
其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一画面组的各个视频帧存入同一个帧存储队列。
结合第二方面,或者第二方面的第一种可行的实施方式,在第二方面的第二种可行的实施方式中,所述解码控制单元包括以下至少一种:
第一控制子单元,用于触发一个处于空闲状态的解码线程控制软解码器对所述画面组进行解码;
第二控制子单元,用于触发一个处于空闲状态的解码线程控制硬解码器对所述画面组进行解码。
结合第二方面,或者第二方面的第一种可行的实施方式,在第二方面的第三种可行的实施方式中,所述视频解码装置还包括:
排序单元,用于将同一个画面组解码得到的图像存入同一个待渲染队列,并根据每个画面组中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
渲染单元,用于根据排序结果对所述待渲染队列中的图像执行渲染操作。
本申请第三方面提供一种终端设备;该终端设备包括:
处理器,以及用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
创建并启动多个解码线程;
读取待解码视频的各个视频帧;
当读取到的多个视频帧构成一个画面组时,触发一个处于空闲状态的解码线程对所述画面组执行解码操作,得到所述画面组中各个视频帧对应的图像。
结合第三方面,在第三方面的第一种可行的实施方式中,所述处理器还被配置为:
创建帧存储队列并将读取到的视频帧存入所述帧存储队列;
其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一个画面组的各个视频帧存入同一个帧存储队列。
结合第三方面,或者第三方面的第一种可行的实施方式,在第三方面的第二种可行的实施方式中,为实现触发一个处于空闲状态的解码线程对所述画面组执行解码操作,所述处理器被配置为以下任意一种:
触发一个处于空闲状态的解码线程控制软解码器对所述画面组进行解码,和,触发一个处于空闲状态的解码线程控制硬解码器对所述画面组进行解码。
结合第三方面,或者第三方面的第一种可行的实施方式,在第三方面的第三种可行的实施方式中,所述处理器还被配置为:
将同一个画面组解码得到的图像存入同一个待渲染队列,并根据每个画面组中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
根据排序结果对所述待渲染队列中的图像执行渲染操作。
由以上技术方案可知,本申请实施例通过创建并启动多个解码线程,各个解码线程相互独立且并发运行,使得同一时刻可以有多个画面组被解码,相对于现有通过串行方式进行解码的方法,解码速度也相应提高多倍,从而可以实现数据量较大的高清视频文件的在线播放,避免卡顿现象。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种视频解码方法的流程图。
图2是根据另一示例性实施例示出的一种视频解码方法的流程图。
图3是根据一示例性实施例示出的一种视频解码装置的框图。
图4是根据另一示例性实施例示出的一种视频解码装置的框图。
图5是根据又一示例性实施例示出的一种视频解码装置的框图。
图6是根据一示例性实施例示出的一种终端设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1为本申请实施例提供的一种视频解码方法的流程图。如图1所示,该方法包括以下步骤。
S11、创建并启动多个解码线程。
线程即执行中的程序指令集合;一个程序的执行可以划分为一个或多个线程,属于同一个程序的多个线程之间相互独立且可以并发执行。相应的,本申请实施例所述的解码线程用于控制解码指令序列的执行,每个解码线程每运行一次,即完成一次解码操作。上述创建解码线程具体包括设置线程入口、申请数据存储空间等操作;启动解码线程包括初始化各个解码线程。本实施例需要创建的解码线程的具体个数可以根据终端的CPU、内存、视频的分辨率等数据动态设定。
S12、依次读取待解码视频的各个视频帧。
S13、当读取到的多个视频帧构成一个GOP时,触发一个处于空闲状态的解码线程对所述GOP执行解码操作,得到所述GOP中各个视频帧对应的图像。
本实施例中,终端依次读取待解码视屏的各个视频帧,每当读取到的视频帧构成一个完整的GOP,则确定并触发一个处于空闲状态的解码线程对该GOP执行解码操作,得到该GOP中各个视频帧对应的图像。其中,一个GOP中包含的视频帧个数可以根据视频编码方式确定,一般为1至15个。同一个解码线程可以先后对多个GOP进行解码,相应的,其状态也在工作状态和空闲状态之间反复切换:如果解码线程当前未执行解码操作,则该解码线程处于空闲状态;当该解码线程被触发对某个GOP执行解码操作时,其状态切换为工作状态,当对该GOP的解码操作执行完毕时,该解码线程的状态又恢复至空闲状态。
假设预先设定并发执行的解码线程最多为2个,待解码视频中每个GOP所包含的视频帧个数均为10个,在此情境下,终端在接收到视频解码请求(或视频播放请求)后,创建并启动两个解码线程(为便于描述,下文以第一解码线程和第二解码线程区分),并逐帧读取待解码视频;当读取完第一个GOP(即第1至第10个视频帧)时,选择第一解码线程对第一个GOP执行解码操作(由于此时两个解码线程均处于空闲状态,故也可以选择第二解码线程);当读取完第二个GOP(即第11至第20个视频帧)时,选择处于空闲状态的第二解码线程对第二个GOP执行解码操作;当读取完第3个GOP时,如果存在处于空闲状态的解码线程,则触发该处于空闲状态的解码线程对第3个GOP执行解码操作,如果不存在处于空闲状态的解码线程,则暂时不解码第3个GOP并持续检测两个解码线程是否切换至空闲状态,假设第一解码线程先完成解码操作并切换至空闲状态,则触发第一解码线程对第3个GOP执行解码操作,以此类推。可见,本实施例中,同一时刻可以有两个GOP被解码,使得解码速度提高为现有视频解码方法的两倍,且创建的解码线程个数越多,解码速度提高幅度越大。因此,实际应用中,可以结合处理器的性能以及终端需要解码的视频文件的质量来确定解码线程的个数,从而保证解码速度大于视频文件的播放速度,避免在线播放时出现卡顿现象。
由以上技术方案可知,本申请实施例通过创建并启动多个解码线程,各个解码线程相互独立且并发运行,使得同一时刻可以有多个GOP被解码,相对于现有通过串行方式进行解码的方法,解码速度也相应提高多倍,从而可以实现数据量较大的高清视频文件的在线播放,避免卡顿现象。
本申请实施例中,终端(如智能手机、平板电脑等)可以直接在浏览器所展示的网页内在线播放视频文件,也可以安装相应的专用视频播放软件来执行视频在线播放。特别的,对于通过浏览器执行视频在线播放的情况,当终端接收到播放请求时,在浏览器内创建一个播放器实例,该播放器实例创建N个解码线程以及一个用于读取视频帧的结构体,即视频格式上下文(AVFormatContext);其中,N为预设解码线程个数,AVFormatContext用于记录读取到的待解码视频的格式信息,包括视频帧的个数、帧数据等。
在本申请一个可行的实施例中,解码线程既可以控制软解码器对GOP执行软解操作,也可以控制硬解码器对GOP执行硬解操作;其中,为提高解码速度,可以优先选择执行解码效率更高的硬解操作,当硬解码器被占用时,执行软解操作。所述硬解码器一般为解码芯片,软解操作具体可以为:解码线程调用视频解码上下文(AVCodecContext)执行解码操作。其中,AVCodecContext用于记录视频帧的编码信息,如视频的宽度、高度、编码类型等;AVCodecContext可以复用,完成一个GOP的解码后,还可以用来解码下一个GOP;AVCodecContext的个数M可以根据解码线程的个数N以及硬解码器的个数P确定,即M=N-P。
图2为本申请另一个实施例提供的视频解码方法的流程图。参照图2,该方法包括如下步骤。
S21、创建并启动多个解码线程。
S22、创建帧存储队列;其中,所述帧存储队列的个数大于所述解码线程的个数。
S23、依次读取待解码视频的各个视频帧,并将读取到的属于同一个GOP的各个视频帧存入同一个帧存储队列。
S24、对于存储有完整GOP的帧存储队列,判断是否存在处于空闲状态的解码线程,如果存在,则执行步骤S25,否则再次执行步骤S24。
S25、触发所述处于空闲状态的解码线程对所述帧存储队列中GOP执行解码操作,得到所述GOP中各个视频帧对应的图像。
本申请实施例通过队列的形式缓存待解码的视频帧,具体存储方式为,属于同一个GOP的各个视频帧存入同一个帧存储队列,属于不同GOP的视频帧存入不同的帧存储队列,即一个帧存储队列中最多只存储属于同一个GOP的各个视频帧。例如,假设待解码视频中每个GOP所包含的视频帧个数均为10个,为便于描述,各个帧存储队列依次命名为第一帧存储队列、第二帧存储队列等,则第1至第10个视频帧均属于第一个GOP,读取后直接将其存入第一帧存储队列,第11至第20个视频帧属于第二个GOP,读取后直接存入第二帧存储队列,依此类推。
进一步的,由于一个解码线程一次只能解码一个GOP,故当某个帧存储队列中存储的视频帧构成一个完整的GOP时,需要选择一个处于空闲状态的解码线程对该帧存储队列中的各个视频帧进行解码,如果当前时刻不存在处于空闲状态的解码线程,则暂不处理该帧存储队列中的GOP,以等待至少一个解码线程完成当前的解码操作(即至少一个解码线程切换至空闲状态)。
解码完成后,相应的帧存储队列被清空,以用来存储其他待解码的视频帧。为充分利用各个解码线程,帧存储队列的个数应大于解码线程的个数,即假设预设解码线程为N个,则步骤S22中需要至少创建(N+1)个帧存储队列,从而在解码过程中的任何时刻都至少有一个帧存储队列等待解码,一旦有解码线程完成一次解码操作,就可以继续对等待解码的帧存储队列中的视频帧执行解码操作。
例如,预设的解码线程个数为2个,以下分别称为第一解码线程和第二解码线程,则帧存储队列至少创建3个,以下分别称为第一帧存储队列、第二帧存储队列和第三帧存储队列;开始解码时,通过第一帧存储队列存储待解码视频的第一个GOP;存储完第一个GOP后,通过第二帧存储队列存储第二个GOP,并将第一帧存储队列与第一解码线程关联,以通过第一解码线程对第一个GOP进行解码;存储完第二个GOP后,通过第三帧存储队列存储第三个GOP,并将第二帧存储队列与第二解码线程关联,以通过第二解码线程对第二个GOP进行解码;存储完第三个GOP后,如果两个解码线程未完成解码操作,则第三帧存储队列处于等待状态;假设第一解码线程先完成对第一个GOP的解码操作,则处于等待状态的第三帧存储队列通过第一解码线程进行解码,同时第一帧存储队列被清空,继续存储第四个GOP,如此循环往复。
由以上技术方案可知,本申请实施例通过复用多个解码线程和帧存储队列,不仅可以增加同一时刻被解码的视频帧(或GOP)个数,还可以减少视频帧读取耗时,使得每个解码线程都被充分利用,提高了解码速度,可以实现数据量较大的高清视频文件的在线播放,避免卡顿现象。
在本申请有一个可行的实施例中,基于上述解码方法,在解码得到GOP对应的各帧图像后(即步骤S13和步骤S25),播放各帧图像之前,还需要对各帧图像执行渲染操作,具体可以包括如下步骤:
将同一个GOP解码得到的图像存入同一个待渲染队列,并根据每个GOP中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
根据排序结果对所述待渲染队列中的图像执行渲染操作。
如上所述,本申请实施例中,多个解码线程同时对多个GOP执行解码操作,且不同GOP解码所用的时间不尽相同,有可能使得对应的时间戳较晚的GOP较早的完成解码,但播放图像时需要按照时间戳的先后顺序播放各个GOP,故以上渲染步骤中,首先根据时间戳对各个待渲染队列排序,再根据排序结果,按时间戳由小到大的顺序依次渲染各个待渲染队列中的图像,渲染后的图像直接加入播放队列,使得播放队列中的图像也按时间戳由小到大排列,保证视频被正确播放。
另外,本实施例提供的解码方法有可能使得对应的时间戳较晚的GOP较早的完成解码,故在图像渲染过程中,有可能出现如下情况:按时间戳先后顺序应当执行渲染操作的待渲染队列对应的GOP对应的GOP(假设为排序后的第P个待渲染队列对应的GOP,也即待解码视频的第P个GOP)尚未完成解码,而下一个待渲染队列对应的GOP(即第P+1个GOP)已解码完成。针对上述情况,既可以直接渲染下一个已解码完成的待渲染队列,也可以等待第P个待渲染队列对应的GOP解码完成。实际应用中,可以根据预设渲染策略确定上述哪种操作,即:如果预设渲染策略要求保证渲染速度,则可以跳过未完成解码的GOP,即放弃未完全解码的第P个待渲染队列,直接渲染第P+1个待渲染队列,相应的,播放队列中也不存在第P个待渲染队列中的各帧图像,播放完第P-1个GOP后直接播放第P+1个GOP;如果预设渲染策略要求保证视频完整播放,则需要每帧图像都被解码、渲染并加入播放队列,此时对于未完全解码的GOP,不是直接跳过不渲染,而是等待其解码完成后再渲染。
由以上技术方案可知,本申请实施例通过创建多个解码线程及多个帧存储队列,并复用各个解码线程和帧存储队列,实现多个GOP同时解码使得解码速度成倍提高;相应的,创建多个待渲染队列,用于存储解码得到的各帧图像以便进一步对图像执行渲染操作,不仅可以增加同一时刻被解码的视频帧(或GOP)个数,还可以减少视频帧读取耗时,使得每个解码线程都被充分利用,提高了解码速度,可以实现数据量较大的高清视频文件的在线播放,避免卡顿现象。
图3为本申请实施例提供的一种视频解码装置的结构框图。参照图3,该装置包括:线程配置单元110、视频读取单元120和解码控制单元130。
该线程配置单元110被配置为,创建并启动多个解码线程。
该视频读取单元120被配置为,读取待解码视频的各个视频帧。
该解码控制单元130被配置为,当读取到的多个视频帧构成一个GOP时,触发一个处于空闲状态的解码线程对所述GOP执行解码操作,得到所述GOP中各个视频帧对应的图像。
由以上技术方案可知,本申请实施例通过创建并启动多个解码线程,各个解码线程相互独立且并发运行,使得同一时刻可以有多个GOP被解码,相对于现有通过串行方式进行解码的方法,解码速度也相应提高多倍,从而可以实现数据量较大的高清视频文件的在线播放,避免卡顿现象。
图4为本申请另一实施例提供的视频解码装置的结构框图。参照图4,除上述线程配置单元110、视频读取单元120和解码控制单元130外,该视频解码装置还包括:解码队列控制单元140。
该解码队列控制单元140被配置为,创建帧存储队列并将读取到的视频帧存入所述帧存储队列。其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一画面组GOP的各个视频帧存入同一个帧存储队列。
图5为本申请又一实施例提供的视频解码装置的结构框图。参照图5,除上述线程配置单元110、视频读取单元120和解码控制单元130外,该视频解码装置还包括:排序单元150和渲染单元160。
该排序单元150被配置为,将同一个GOP解码得到的图像存入同一个待渲染队列,并根据每个GOP中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
该渲染单元160被配置为,根据排序结果对所述待渲染队列中的图像执行渲染操作。
另外,上述实施例所述的视频解码装置中,解码控制单元130可以包括第一控制子单元和第二控制子单元中的至少一种。其中,第一控制子单元被配置为,触发所述处于空闲状态的解码线程控制软解码器对所述GOP进行解码;第二控制子单元被配置为,触发所述处于空闲状态的解码线程控制硬解码器对所述GOP进行解码。如果解码控制单元130中同时设置第一控制子单元和第二控制子单元,则针对不同的GOP可以根据实际应用场景选择上述二者之一执行解码操作;例如,为提高解码速度,可以优先选择上述第二控制子单元执行解码效率更高的硬解操作,当硬解码器被占用时,选择上述第一控制子单元执行软解操作。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
另外,本申请实施例还提供了一种计算机存储介质,例如可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等;该计算机存储介质中存储有程序,当所述存储介质中的程序由终端设备的处理器执行时,使得终端设备能够执行上述方法实施例中记载的视频解码方法的部分或全部步骤。
图6是根据一示例性实施例示出的一种终端设备的框图。该终端设备具有视频播放功能,例如,该终端设备可以是智能手机,平板设备,笔记本电脑等。
参照图6,终端设备可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制终端设备的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行本地或者远程指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在终端设备的操作。这些数据的示例包括用于在终端设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为终端设备的各种组件提供电力。多媒体组件808包括在所述终端设备和用户之间的提供一个输出接口的屏幕。音频组件810被配置为输出和/或输入音频信号。I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。传感器组件814包括一个或多个传感器,用于为终端设备提供各个方面的状态评估。通信组件816被配置为便于终端设备和其他设备之间有线或无线方式的通信。终端设备可以通过通信组件816接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合,进而获取网络中的视频文件并在处理器820的控制下执行视频解码操作,解码完成后播放该视频文件。
在示例性实施例中,终端设备可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述视频解码方法。
其中,本实施例中,处理器820通过执行存储器804中的指令,可以完成如下步骤:
创建并启动多个解码线程;
读取待解码视频的各个视频帧;
当读取到的多个视频帧构成一个画面组时,触发一个处于空闲状态的解码线程对所述画面组执行解码操作,得到所述画面组中各个视频帧对应的图像。
在本申请一个可行的实施例中,处理器820还可以执行如下步骤:
创建帧存储队列并将读取到的视频帧存入所述帧存储队列;
其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一个画面组的各个视频帧存入同一个帧存储队列。
在本申请另一个可行的实施例中,为实现触发所述处于空闲状态的解码线程对所述GOP执行解码操作,处理器820被配置为以下任意一种:
触发一个处于空闲状态的解码线程控制软解码器对所述画面组进行解码,和,触发一个处于空闲状态的解码线程控制硬解码器对所述画面组进行解码。
在本申请又一个可行的实施例中,处理器820还可以执行如下步骤:
将同一个画面组解码得到的图像存入同一个待渲染队列,并根据每个画面组中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
根据排序结果对所述待渲染队列中的图像执行渲染操作。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (12)
1.一种视频解码方法,其特征在于,包括:
创建并启动多个解码线程;
依次读取待解码视频的各个视频帧;
当读取到的多个视频帧构成一个画面组时,则触发一个处于空闲状态的解码线程对所述画面组执行解码操作,得到所述画面组中各个视频帧对应的图像。
2.根据权利要求1所述的视频解码方法,其特征在于,还包括:
创建帧存储队列并将读取到的视频帧存入所述帧存储队列;
其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一个画面组的各个视频帧存入同一个帧存储队列。
3.根据权利要求1或2所述的视频解码方法,其特征在于,所述触发一个处于空闲状态的解码线程对所述画面组执行解码操作包括以下任意一种:
触发一个处于空闲状态的解码线程控制软解码器对所述画面组进行解码,和,触发一个处于空闲状态的解码线程控制硬解码器对所述画面组进行解码。
4.根据权利要求1或2所述的视频解码方法,其特征在于,还包括:
将同一个画面组解码得到的图像存入同一个待渲染队列,并根据每个画面组中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
根据排序结果对所述待渲染队列中的图像执行渲染操作。
5.一种视频解码装置,其特征在于,包括:
线程配置单元,用于创建并启动多个解码线程;
视频读取单元,用于读取待解码视频的各个视频帧;
解码控制单元,用于当读取到的多个视频帧构成一个画面组时,触发一个处于空闲状态的解码线程对所述画面组执行解码操作,得到所述画面组中各个视频帧对应的图像。
6.根据权利要求5所述的视频解码装置,其特征在于,还包括:
解码队列控制单元,用于创建帧存储队列并将读取到的视频帧存入所述帧存储队列;
其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一画面组的各个视频帧存入同一个帧存储队列。
7.根据权利要求5或6所述的视频解码装置,其特征在于,所述解码控制单元包括以下至少一种:
第一控制子单元,用于触发一个处于空闲状态的解码线程控制软解码器对所述画面组进行解码;
第二控制子单元,用于触发一个处于空闲状态的解码线程控制硬解码器对所述画面组进行解码。
8.根据权利要求5或6所述的视频解码装置,其特征在于,还包括:
排序单元,用于将同一个画面组解码得到的图像存入同一个待渲染队列,并根据每个画面组中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
渲染单元,用于根据排序结果对所述待渲染队列中的图像执行渲染操作。
9.一种终端设备,其特征在于,包括:
处理器,以及用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
创建并启动多个解码线程;
读取待解码视频的各个视频帧;
当读取到的多个视频帧构成一个画面组时,触发一个处于空闲状态的解码线程对所述画面组执行解码操作,得到所述画面组中各个视频帧对应的图像。
10.根据权利要求9所述的终端设备,其特征在于,所述处理器还被配置为:
创建帧存储队列并将读取到的视频帧存入所述帧存储队列;
其中,所述帧存储队列的个数大于所述解码线程的个数,且属于同一个画面组的各个视频帧存入同一个帧存储队列。
11.根据权利要求9或10所述的终端设备,其特征在于,为实现触发一个处于空闲状态的解码线程对所述画面组执行解码操作,所述处理器被配置为以下任意一种:
触发一个处于空闲状态的解码线程控制软解码器对所述画面组进行解码,和,触发一个处于空闲状态的解码线程控制硬解码器对所述画面组进行解码。
12.根据权利要求9或10所述的终端设备,其特征在于,所述处理器还被配置为:
将同一个画面组解码得到的图像存入同一个待渲染队列,并根据每个画面组中的关键视频帧对应的时间戳对各个待渲染队列进行排序;
根据排序结果对所述待渲染队列中的图像执行渲染操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510096697.1A CN105992005A (zh) | 2015-03-04 | 2015-03-04 | 视频解码方法、装置及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510096697.1A CN105992005A (zh) | 2015-03-04 | 2015-03-04 | 视频解码方法、装置及终端设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105992005A true CN105992005A (zh) | 2016-10-05 |
Family
ID=57038256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510096697.1A Pending CN105992005A (zh) | 2015-03-04 | 2015-03-04 | 视频解码方法、装置及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105992005A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534922A (zh) * | 2016-11-29 | 2017-03-22 | 努比亚技术有限公司 | 视频解码装置及方法 |
CN107613302A (zh) * | 2017-09-13 | 2018-01-19 | 珠海格力电器股份有限公司 | 解码方法及装置、存储介质、处理器 |
CN108093293A (zh) * | 2018-01-15 | 2018-05-29 | 北京奇艺世纪科技有限公司 | 一种视频渲染方法及系统 |
CN108184163A (zh) * | 2017-12-29 | 2018-06-19 | 深圳华侨城卡乐技术有限公司 | 一种视频播放方法、存储介质及播放器 |
CN110381370A (zh) * | 2019-07-22 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种动画处理方法、装置、终端及存储介质 |
CN110572667A (zh) * | 2019-09-30 | 2019-12-13 | 杭州当虹科技股份有限公司 | 一种基于视频序列组并行的hevc和avs2 8k视频解码方法 |
CN110583019A (zh) * | 2017-10-31 | 2019-12-17 | 谷歌有限责任公司 | 视频帧编解码器架构 |
WO2020019140A1 (zh) * | 2018-07-23 | 2020-01-30 | 深圳市大疆创新科技有限公司 | 视频处理方法、终端设备、机器可读存储介质 |
CN110798702A (zh) * | 2019-10-15 | 2020-02-14 | 平安科技(深圳)有限公司 | 视频解码方法、装置、设备及计算机可读存储介质 |
CN112486724A (zh) * | 2019-09-11 | 2021-03-12 | 爱思开海力士有限公司 | 自适应软解码器的服务质量 |
CN112637634A (zh) * | 2020-12-24 | 2021-04-09 | 北京睿芯高通量科技有限公司 | 一种多进程共享数据的高并发视频处理方法及系统 |
CN113015005A (zh) * | 2021-05-25 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种视频剪辑方法、装置、设备及计算机可读存储介质 |
WO2022120828A1 (zh) * | 2020-12-11 | 2022-06-16 | 深圳市大疆创新科技有限公司 | 视频抽帧方法、设备及存储介质 |
WO2023020270A1 (zh) * | 2021-08-20 | 2023-02-23 | 腾讯科技(深圳)有限公司 | 解码处理方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076119A (zh) * | 2006-05-17 | 2007-11-21 | 株式会社东芝 | Mpeg视频再现装置以及mpeg视频再现方法 |
CN101466039A (zh) * | 2008-12-31 | 2009-06-24 | 中国科学院计算技术研究所 | 一种视频解码装置和方法 |
CN102763136A (zh) * | 2010-02-11 | 2012-10-31 | 诺基亚公司 | 用于提供多线程视频解码的方法和设备 |
CN102790905A (zh) * | 2012-08-03 | 2012-11-21 | 重庆大学 | 基于P2PVoD视频点播系统的H.264/SVC到H.264/AVC的转码方法 |
CN103428582A (zh) * | 2013-09-02 | 2013-12-04 | 贝壳网际(北京)安全技术有限公司 | 播放视频的方法、装置和客户端 |
-
2015
- 2015-03-04 CN CN201510096697.1A patent/CN105992005A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076119A (zh) * | 2006-05-17 | 2007-11-21 | 株式会社东芝 | Mpeg视频再现装置以及mpeg视频再现方法 |
CN101466039A (zh) * | 2008-12-31 | 2009-06-24 | 中国科学院计算技术研究所 | 一种视频解码装置和方法 |
CN102763136A (zh) * | 2010-02-11 | 2012-10-31 | 诺基亚公司 | 用于提供多线程视频解码的方法和设备 |
CN102790905A (zh) * | 2012-08-03 | 2012-11-21 | 重庆大学 | 基于P2PVoD视频点播系统的H.264/SVC到H.264/AVC的转码方法 |
CN103428582A (zh) * | 2013-09-02 | 2013-12-04 | 贝壳网际(北京)安全技术有限公司 | 播放视频的方法、装置和客户端 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534922A (zh) * | 2016-11-29 | 2017-03-22 | 努比亚技术有限公司 | 视频解码装置及方法 |
CN107613302A (zh) * | 2017-09-13 | 2018-01-19 | 珠海格力电器股份有限公司 | 解码方法及装置、存储介质、处理器 |
CN107613302B (zh) * | 2017-09-13 | 2020-10-02 | 珠海格力电器股份有限公司 | 解码方法及装置、存储介质、处理器 |
CN110583019A (zh) * | 2017-10-31 | 2019-12-17 | 谷歌有限责任公司 | 视频帧编解码器架构 |
US11425404B2 (en) | 2017-10-31 | 2022-08-23 | Google Llc | Video frame codec architectures |
US11968381B2 (en) | 2017-10-31 | 2024-04-23 | Google Llc | Video frame codec architectures |
US11962795B2 (en) | 2017-10-31 | 2024-04-16 | Google Llc | Video frame codec architectures |
CN108184163A (zh) * | 2017-12-29 | 2018-06-19 | 深圳华侨城卡乐技术有限公司 | 一种视频播放方法、存储介质及播放器 |
CN108093293A (zh) * | 2018-01-15 | 2018-05-29 | 北京奇艺世纪科技有限公司 | 一种视频渲染方法及系统 |
CN108093293B (zh) * | 2018-01-15 | 2021-01-22 | 北京奇艺世纪科技有限公司 | 一种视频渲染方法及系统 |
WO2020019140A1 (zh) * | 2018-07-23 | 2020-01-30 | 深圳市大疆创新科技有限公司 | 视频处理方法、终端设备、机器可读存储介质 |
CN110381370A (zh) * | 2019-07-22 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种动画处理方法、装置、终端及存储介质 |
CN110381370B (zh) * | 2019-07-22 | 2022-11-11 | 腾讯科技(深圳)有限公司 | 一种动画处理方法、装置、终端及存储介质 |
CN112486724A (zh) * | 2019-09-11 | 2021-03-12 | 爱思开海力士有限公司 | 自适应软解码器的服务质量 |
CN110572667A (zh) * | 2019-09-30 | 2019-12-13 | 杭州当虹科技股份有限公司 | 一种基于视频序列组并行的hevc和avs2 8k视频解码方法 |
CN110798702B (zh) * | 2019-10-15 | 2022-04-15 | 平安科技(深圳)有限公司 | 视频解码方法、装置、设备及计算机可读存储介质 |
CN110798702A (zh) * | 2019-10-15 | 2020-02-14 | 平安科技(深圳)有限公司 | 视频解码方法、装置、设备及计算机可读存储介质 |
WO2022120828A1 (zh) * | 2020-12-11 | 2022-06-16 | 深圳市大疆创新科技有限公司 | 视频抽帧方法、设备及存储介质 |
CN112637634A (zh) * | 2020-12-24 | 2021-04-09 | 北京睿芯高通量科技有限公司 | 一种多进程共享数据的高并发视频处理方法及系统 |
CN113015005A (zh) * | 2021-05-25 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 一种视频剪辑方法、装置、设备及计算机可读存储介质 |
WO2023020270A1 (zh) * | 2021-08-20 | 2023-02-23 | 腾讯科技(深圳)有限公司 | 解码处理方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105992005A (zh) | 视频解码方法、装置及终端设备 | |
CN108650555B (zh) | 视频界面的展示、交互信息的生成方法、播放器及服务器 | |
KR101494904B1 (ko) | 비디오 파일에 대한 썸네일을 생성하는 방법 및 장치 | |
CN103702214A (zh) | 一种视频播放方法和电子设备 | |
CN103024567A (zh) | 一种移动终端视频预览的方法及系统 | |
RU2006125118A (ru) | Запоминающий носитель, содержащий поток интерактивной графики, и устройство для его воспроизведения | |
CN103761132A (zh) | 一种智能终端开机动画播放控制方法 | |
CN101854508B (zh) | 反向回放编码的多媒体内容的方法和装置 | |
KR102339205B1 (ko) | 가상 장면 디스플레이 방법 및 디바이스, 및 저장 매체 | |
WO2009042340A2 (en) | Method for intelligently creating, consuming, and sharing video content on mobile devices | |
CN103369128A (zh) | 同时显示多个运动图像缩略图的图像再现装置及方法 | |
CN103442299A (zh) | 一种播放记录的显示方法及电子设备 | |
CN106940722B (zh) | 一种图片显示方法及装置 | |
CN103581409A (zh) | 一种自定义开关机界面的方法和移动终端 | |
CN102833480A (zh) | 再现设备和再现方法 | |
JP2015029231A (ja) | 記録装置およびその制御方法 | |
WO2017124897A1 (zh) | 终端及终端进行视频帧定位的方法、计算机存储介质 | |
KR101776674B1 (ko) | 휴대용 영상 편집 장치 및 그 동작 방법 | |
CN103248953A (zh) | 一种电视广告时间的处理方法、系统及电视节目播放终端 | |
CN110267096A (zh) | 视频播放方法、装置、电子设备及存储介质 | |
CN110662102B (zh) | 滤镜渐变效果展示方法、存储介质、设备及系统 | |
CN116132719A (zh) | 视频处理方法、装置、电子设备及可读存储介质 | |
CN101662630A (zh) | 视频再生装置 | |
CN104023274A (zh) | 可预设开机信息的方法以及电视机 | |
CN114567802B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161005 |