CN115086756B - 视频处理方法、装置及存储介质 - Google Patents
视频处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN115086756B CN115086756B CN202110260023.6A CN202110260023A CN115086756B CN 115086756 B CN115086756 B CN 115086756B CN 202110260023 A CN202110260023 A CN 202110260023A CN 115086756 B CN115086756 B CN 115086756B
- Authority
- CN
- China
- Prior art keywords
- processed
- procedure
- thread
- video
- processing
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims description 26
- 238000000034 method Methods 0.000 claims abstract description 499
- 238000012545 processing Methods 0.000 claims abstract description 310
- 238000009877 rendering Methods 0.000 claims description 23
- 238000012163 sequencing technique Methods 0.000 claims description 20
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 15
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000002994 raw material Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44012—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供一种视频处理方法、装置及存储介质,该方法通过并行执行的多个线程,使得待处理视频流中视频帧的多个工序能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间,使用户体验较好。而且,本申请实施例中并行执行的工序是并行执行的线程上的任务,其中每个视频帧进行处理的线程顺序一定,使得并行执行的工序顺序一定,避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。
Description
技术领域
本申请涉及流媒体技术领域,尤其涉及一种视频处理方法、装置及存储介质。
背景技术
随着移动互联网的发展,人们也越来越倾向于在电脑、手机或者平板电脑等终端设备上观看在线视频或者下载视频观看。对于网络中的视频,例如以短视频应用中的视频为例,用户(也就是视频提供方)通常会对视频流经过一定处理后再上传至网络。其中,视频流的处理通常可以包括算法类工序和渲染类工序,示例性地,算法工序还可以包括视频裁剪、添加音乐、添加视频特效等。
相关技术中,用户通过终端设备处理视频流时,终端设备对于视频流中的多帧视频数据进行串行处理,即终端设备在处理完当前视频数据后才进行下一帧视频数据的处理,直至视频中的所有视频数据都完成处理。但是,这种视频处理方式效率较低,处理时间较长,导致用户体验较差。而终端设备在对视频流中的多帧视频数据进行并行处理时,工序顺序难以保证,导致后续处理结果出错率较高。
发明内容
为解决现有技术中存在的问题,本申请提供一种视频处理方法、装置及存储介质。
第一方面,本申请实施例提供一种视频处理方法,包括:
从第一预设序列中获取待处理视频帧,其中,所述第一预设序列根据待处理视频流中每一视频帧的顺序存储所述待处理视频帧;
判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态;
若所述第一线程处于空闲状态,则对所述待处理视频帧进行所述第一工序处理,获得第一处理结果,并将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包,所述第一数据包用于发送至第二工序对应的第二线程;
判断所述第二线程是否处于空闲状态;
若所述第二线程处于空闲状态,则对所述第一数据包进行所述第二工序处理,获得第二处理结果,其中,所述第二线程与所述第一线程为并行执行。
在一种可能的实现方式中,在所述判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态之前,还包括:
获取所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,所述需要处理的工序包括所述第一工序和所述第二工序;
根据所述需要处理的工序以及所述排序,确定所述待处理视频帧对应的所述第一工序。
在一种可能的实现方式中,在所述判断所述第二线程是否处于空闲状态之前,包括:
根据所述需要处理的工序、所述排序以及所述第一工序,确定所述第二工序。
在一种可能的实现方式中,所述需要处理的工序还包括第三工序、…第n工序,n为整数,n≥3;
所述方法还包括:
将所述第一处理结果、所述第二处理结果…第n-1处理结果和所述待处理视频帧进行打包,获得第n-1数据包,所述第n-1数据包用于发送至所述第n工序对应的第n线程;
判断所述第n线程是否处于空闲状态,其中,所述第n线程分别与第n-1线程、…所述第二线程和所述第一线程并行执行;
若所述第n线程处于空闲状态,则对所述第n-1数据包进行所述第n工序处理,获得第n处理结果。
在一种可能的实现方式中,所述获取所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,包括:
获取预存的视频流与需要处理的各个工序以及各个工序的排序的对应关系;
根据所述对应关系,确定所述待处理视频流需要处理的各个工序以及各个工序的排序;
根据所述待处理视频流需要处理的各个工序以及各个工序的排序,确定所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,其中,所述待处理视频流包括多个区间,每个区间中每一视频帧需要处理的各个工序以及各个工序的排序相同。
在一种可能的实现方式中,所述从第一预设序列中获取待处理视频帧,包括:
检测所述第一预设序列中是否有视频帧数据;
若所述第一预设序列中有视频帧数据,则从所述第一预设序列中获取所述待处理视频帧。
在一种可能的实现方式中,所述第一预设序列为先进先出队列。
在一种可能的实现方式中,在所述将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包之后,还包括:
将所述第一数据包存储在第二预设序列中,所述第二预设序列为先进先出队列。
在一种可能的实现方式中,在判断所述第二线程处于空闲状态之后,还包括:
检测所述第二预设序列中是否有数据;
若所述第二预设序列中有数据,则按照先进先出方式从所述第二预设序列中获取所述第一数据包。
在一种可能的实现方式中,所述方法由处理器集群完成,所述处理器集群包括第一处理器和第二处理器,其中,所述第一工序由第一处理器执行,所述第二工序由第二处理器执行。
所述第一处理器将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包之后,将所述第一数据包发送至所述第二处理器,所述第一数据包用于指示所述第二处理器判断所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
在一种可能的实现方式中,所述第一处理器根据需要处理的工序以及所述排序,确定所述待处理视频帧对应的所述第一工序之后,将工序处理信息发送至所述第二处理器,所述工序处理信息包括所述需要处理的工序、所述排序以及所述第一工序,所述工序处理信息用于指示所述第二处理器根据所述需要处理的工序和所述第一工序,确定所述第二工序,判断所述第二工序对应的所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则基于所述第二工序,对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
在一种可能的实现方式中,所述方法还包括:
获取所述待处理视频流,所述待处理视频流包括至少两帧视频;
将所述至少两帧视频存储在所述第一预设序列中。
第二方面,本申请实施例提供一种视频处理装置,包括:
获取模块,用于从第一预设序列中获取待处理视频帧,其中,所述第一预设序列根据待处理视频流中每一视频帧的顺序存储所述待处理视频帧;
第一判断模块,用于判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态;
第一处理模块,用于在所述第一线程处于空闲状态时,对所述待处理视频帧进行所述第一工序处理,获得第一处理结果,并将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包,所述第一数据包用于发送至第二工序对应的第二线程;
第二判断模块,用于判断所述第二线程是否处于空闲状态;
第二处理模块,用于若所述第二线程处于空闲状态,则对所述第一数据包进行所述第二工序处理,获得第二处理结果,其中,所述第二线程与所述第一线程为并行执行。
在一种可能的实现方式中,在所述第一判断模块判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态之前,所述获取模块,还用于:
获取所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,所述需要处理的工序包括所述第一工序和所述第二工序;
根据所述需要处理的工序以及所述排序,确定所述待处理视频帧对应的所述第一工序。
在一种可能的实现方式中,所述第二判断模块,还用于:
根据所述需要处理的工序、所述排序以及所述第一工序,确定所述第二工序。
在一种可能的实现方式中,所述需要处理的工序还包括第三工序、…第n工序,n为整数,n≥3;
还包括第n处理模块,用于将所述第一处理结果、所述第二处理结果…第n-1处理结果和所述待处理视频帧进行打包,获得第n-1数据包,所述第n-1数据包用于发送至所述第n工序对应的第n线程;判断所述第n线程是否处于空闲状态,其中,所述第n线程分别与第n-1线程、…所述第二线程和所述第一线程并行执行;若所述第n线程处于空闲状态,则对所述第n-1数据包进行所述第n工序处理,获得第n处理结果。
在一种可能的实现方式中,所述获取模块,具体用于:
获取预存的视频流与需要处理的各个工序以及各个工序的排序的对应关系;
根据所述对应关系,确定所述待处理视频流需要处理的各个工序以及各个工序的排序;
根据所述待处理视频流需要处理的各个工序以及各个工序的排序,确定所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,其中,所述待处理视频流包括多个区间,每个区间中每一视频帧需要处理的各个工序以及各个工序的排序相同。
在一种可能的实现方式中,所述获取模块,具体用于:
检测所述第一预设序列中是否有视频帧数据;
若所述第一预设序列中有视频帧数据,则从所述第一预设序列中获取所述待处理视频帧。
在一种可能的实现方式中,所述第一预设序列为先进先出队列。
在一种可能的实现方式中,所述第一处理模块,还用于:
将所述第一数据包存储在第二预设序列中,所述第二预设序列为先进先出队列。
在一种可能的实现方式中,所述第二处理模块,还用于:
当第二线程空闲时,检测所述第二预设序列中是否有数据;
若所述第二预设序列中有数据,则按照先进先出方式从所述第二预设序列中获取所述第一数据包。
在一种可能的实现方式中,上述视频处理装置可以是处理器集群本身,或者是实现处理器集群的功能的芯片或者集成电路,所述处理器集群包括第一处理器和第二处理器,第一处理器可以包括上述获取模块、第一判断模块和第一处理模块。第二处理器可以包括第二判断模块和第二处理模块。
所述第一处理器还包括发送模块,用于在所述第一处理模块将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包之后,将所述第一数据包发送至所述第二处理器,所述第一数据包用于指示所述第二判断模块判断所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则所述第二处理模块对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
在一种可能的实现方式中,所述发送模块,还用于:
在所述获取模块根据需要处理的工序以及所述需要处理的工序中各个工序的排序,确定所述待处理视频帧对应的所述第一工序之后,将工序处理信息发送至所述第二处理器,所述工序处理信息包括所述需要处理的工序、所述排序以及所述第一工序,所述工序处理信息用于指示所述第二判断模块根据所述需要处理的工序、所述排序和所述第一工序,确定所述第二工序,判断所述第二工序对应的所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则所述第二处理模块基于所述第二工序,对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
在一种可能的实现方式中,还包括存储模块,用于:
获取所述待处理视频流,所述待处理视频流包括至少两帧视频;
将所述至少两帧视频存储在所述第一预设序列中。
第三方面,本申请实施例提供一种视频处理设备,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面所述的方法。
本申请实施例提供的视频处理方法、装置及存储介质,该方法通过从第一预设序列中获取待处理视频帧,然后判断待处理视频帧的第一工序对应的第一线程是否处于空闲状态,如果是,则对待处理视频帧进行第一工序处理,获得第一处理结果,并将第一处理结果和待处理视频帧进行打包,获得第一数据包,该第一数据包用于发送至第二工序对应的第二线程,判断该第二线程是否处于空闲状态,如果是,则对上述第一数据包进行第二工序处理,获得第二处理结果,其中,第二线程与第一线程为并行执行,即本申请实施例通过并行执行的多个线程,使得待处理视频流中视频帧的多个工序能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间,使用户体验较好。而且,本申请实施例中并行执行的工序是并行执行的线程上的任务,将视频流中的每一帧都作为一个独立的原材料,上一帧和下一帧保持数据独立,每帧经过相同的工序处理保证完整性。每个工序只处理经过上一个工序传输来的数据,同时在处理完成后会发送到下一个工序,每个工序独立运行在不同的线程上来保证并行,达到有序处理的状态,从而解决视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的现有处理视频流的流程示意图一;
图2为本申请实施例提供的现有处理视频流的流程示意图二;
图3为本申请实施例提供的一种视频处理系统架构示意图;
图4为本申请实施例提供的另一种视频处理系统架构示意图;
图5为本申请实施例提供的一种视频处理方法的流程示意图;
图6为本申请实施例提供的另一种视频处理方法的流程示意图;
图7为本申请实施例提供的再一种视频处理方法的流程示意图;
图8为本申请实施例提供的并行处理视频流的流程示意图;
图9为本申请实施例提供的一种视频处理装置的结构示意图;
图10为本申请实施例提供的另一种视频处理装置的结构示意图;
图11为本申请实施例提供的再一种视频处理装置的结构示意图;
图12A为本申请提供的一种视频处理设备的基本硬件架构示意图;
图12B为本申请提供的另一种视频处理设备的基本硬件架构示意图;
图12C为本申请提供的再一种视频处理设备的基本硬件架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
相关技术中,用户通过终端设备处理视频流时,终端设备对于视频流中的多帧视频数据进行串行处理,即终端设备在处理完当前视频数据后才进行下一帧视频数据的处理,直至视频中的所有视频数据都完成处理。
示例性的,如图1所示,终端设备需要对于视频流依次进行工序1、工序2和工序3共三个工序处理,例如工序1为视频裁剪,工序2为添加音乐,工序3为添加视频特效。现有终端设备在进行上述处理时,对视频流中的多帧视频数据进行串行处理。以视频流中包括两帧视频数据(视频帧1和视频帧2)为例,两帧视频数据的顺序是先视频帧1,后视频帧2。现有终端设备需要对视频帧1依次进行工序1、工序2和工序3处理后,才能对视频帧2依次进行工序1、工序2和工序3处理。其中,视频帧1进行工序1处理后得到结果1,然后进行工序2处理得到结果2,再进行工序3处理得到最终结果。因此,从上述处理流程可以看到,现有串行处理视频的方式效率较低,处理时间较长,导致用户体验较差。
为了解决上述问题,现有终端设备在对视频流中的多帧视频数据进行处理时,通常采用并行处理的方式。但是,终端设备在对视频流中的多帧视频帧数据进行并行处理时工序顺序难以保证,导致后续处理结果出错率较高。例如以上述视频帧1和视频帧2进行上述工序1、工序2和工序3处理为例,现有终端设备在对上述视频帧1和视频帧2进行工序1、工序2和工序3并行处理时,可能会出现对视频帧1进行工序1处理后直接进行工序3处理,或者,对视频帧2进行工序1处理后直接进行工序3处理等,出现工序混乱的问题,导致后续处理结果出错率较高。示例性的,如图2所示,其中,视频帧1进行工序1处理后得到一个结果,记作结果1*,然后进行工序3处理得到另一结果,记作结果2*。视频帧2进行工序1处理后得到一个结果,记作结果1**,然后进行工序3处理得到另一结果,记作结果2**。
因此,本申请实施例提出一种视频处理方法,通过并行执行的多个线程,使得待处理视频流中视频帧的多个工序能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间,使用户体验较好。而且,本申请实施例中并行执行的工序是并行执行的线程上的任务,其中每个视频帧进行处理的线程顺序一定,使得并行执行的工序顺序一定,避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。
可选地,本申请实施例提供的视频处理方法可以应用于如图3所示的应用场景中。图3只是以示例的方式描述了本申请实施例提供的视频处理方法的一种可能的应用场景,本申请实施例提供的视频处理方法的应用场景不限于图3所示的应用场景。
图3为视频处理系统架构示意图。在图3中,以用户在终端设备上处理短视频为例,其中,上述终端设备可以为手持设备(例如手机或平板等)、车载设备、可穿戴设备、计算设备,以及各种形式的用户设备(User Equipment,UE)等。上述架构可以包括获取单元301、第一处理器302和显示单元303。
可以理解的是,本申请实施例示意的结构并不构成对视频处理架构的具体限定。在本申请另一些可行的实施方式中,上述架构可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置,具体可根据实际应用场景确定,在此不做限制。图3所示的部件可以以硬件,软件,或软件与硬件的组合实现。
以上述终端设备为手机为例,上述获取单元301可以为手机上的摄像头。用户可以通过手机上的摄像头拍摄短视频,然后将拍摄的短视频发送至第一处理器302处理。这里,上述获取单元301除为上述摄像头外,还可以是输入/输出接口,也可以是通信接口。用户可以通过上述接口接收其他用户发送的短视频等信息,并将接收的短视频发送至第一处理器302处理。第一处理器302在获取上述短视频后,可以将上述短视频存储在预设序列中。其中,该预设序列按照上述短视频中每一视频帧的顺序存储上述短视频。例如上述短视频中每一视频帧的顺序是先视频帧1,然后视频帧2…再是视频帧n-1,最后是视频帧n,上述预设序列按照上述顺序,即视频帧1、视频帧2…视频帧n-1和视频帧n存储上述短视频。
在具体实现过程中,第一处理器302从上述序列中获取待处理视频帧,然后通过并行执行的多个线程,使得上述短视频中视频帧的多个工序能够并行执行,从而实现了对上述短视频中多个视频帧的并行处理(例如上述图1中的工序1、工序2和工序3,工序1对应线程1,工序2对应线程2,工序3对应线程3,线程1、线程2和线程3分别为并行执行的线程,进而使得上述工序1、工序2和工序3并行执行,从而,实现了对上述短视频中多个视频帧的并行处理),提高视频处理效率,缩短视频处理时间,使用户体验较好。而且,并行执行的工序是并行执行的线程上的任务(工序1是线程1上的一个任务,工序2是线程2上的一个任务,工序3是线程3上的一个任务),其中每个视频帧进行处理的线程顺序一定,使得并行执行的工序顺序一定(线程1、线程2和线程3的顺序一定,使得工序1、工序2和工序3的顺序一定),避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。另外,第一处理器302可以按照先进先出的顺序从上述序列中获取待处理视频帧执行后续视频处理流程,这样使得上述短视频中视频帧能够得到有序处理。
显示单元303可以用于对上述短视频以及上述短视频的处理结果等进行显示。显示单元还可以是触摸显示屏,用于在显示的上述内容的同时接收用户指令,以实现与用户的交互。
另外,在上述短视频处理过程中,所有工序可能需要多个处理器完成,例如算法类工序由中央处理器(central processing unit,cpu)完成,渲染类工序由图形处理器(graphics processing unit,gpu)完成。示例性的,在上述短视频处理过程中,还可能需要提取视频中人脸特征点,进而,对人脸进行变形,基于变形后的人脸特征点渲染出人脸,这里,就需要使用提取人脸特征点的算法类工序,也需要使用对人脸进行变形,基于变形后的人脸特征点渲染出人脸的渲染类工序。如果上述第一处理302为cpu,那在进行渲染类工序时,cpu需要把算法类工序处理结果发送给gpu,由gpu执行后续渲染类工序。即上述架构还可以包括第二处理器304。示例性的,如图4所示,在具体实现过程中,第一处理器302和第二处理器304协同完成对上述短视频的处理。例如以第一处理器302为cpu,第二处理器304为gpu为例,cpu在执行算法类工序后,将算法类工序处理结果发送给gpu,gpu执行后续渲染类工序。其中,上述算法类工序与渲染类工序为并行执行,cpu和gpu通过并行执行的多个线程,使得上述短视频中视频帧的多个工序(例如上述算法类工序与渲染类工序)能够并行执行,从而实现了对上述短视频中多个视频帧的并行处理。通过本实施例的方法进行视频流处理,能够保证算法部分和渲染部分的并行处理,同时保证视频流中的帧处理保持有序,所有帧按照特定步骤得到处理。
进一步的,原材料的视频帧数据经过算法工序处理完成的结果整理成一个封闭的数据包。原材料视频帧和经过算法工序后得到对应的算法结果保存在数据包内,渲染工序得到数据包后,根据对应的视频帧和算法结果进行渲染,就能得到相对应的渲染结果,从而保证算法处理结果和渲染处理结果可以匹配。
由此,能够充分发挥设备cpu和gpu的能力,提高流处理的效率,提高录制的帧率。
显示单元303对上述短视频以及上述短视频的处理结果等进行显示。
应理解,本申请实施例描述的系统架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
下面以几个实施例为例对本申请的技术方案进行描述,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图5为本申请实施例提供的一种视频处理方法的流程示意图,本实施例的执行主体可以为图3中的第一处理器302,具体执行主体可以根据实际应用场景确定,本申请实施例对此不做特别限制。如图5所示,本申请实施例提供的视频处理方法可以包括如下步骤:
S501:从第一预设序列中获取待处理视频帧,其中,上述第一预设序列根据待处理视频流中每一视频帧的顺序存储上述待处理视频帧。
其中,上述待处理视频流可以根据实际情况确定,例如上述图3和图4中所述的短视频。
这里,上述第一处理器可以先检测上述第一预设序列中是否有视频帧数据,如果有,则按照上述第一预设顺序从上述第一预设序列中获取上述待处理视频帧。示例性的,上述第一处理可以实时检测第一预设序列中是否有视频帧数据,只要有视频帧数据就按照一定顺序从上述序列中获取待处理视频帧执行后续视频处理流程。
其中,上述第一预设序列为先进先出(First Input First Output,FIFO)序列。上述第一处理器按照先进先出的顺序从第一预设序列中获取待处理视频帧,例如上述待处理视频流包括两帧视频数据:视频帧1和视频帧2,两帧视频数据的顺序是先视频帧1,后视频帧2。上述第一预设序列根据待处理视频流中每一视频帧的顺序存储上述待处理视频流,即先存储视频帧1,后存储视频帧2。这样,上述第一处理器在检测上述第一预设序列中有视频帧数据时,按照先进先出的顺序从第一预设序列中获取待处理视频帧,即先获取视频帧1,后获取视频帧2,执行后续视频处理流程,使得上述待处理视频流中视频帧能够得到有序处理。
另外,上述第一处理器还可以获取上述待处理视频流,该待处理视频流包括至少两帧视频,从而,将该至少两帧视频存储在上述第一预设序列中。
在其他实施例中,第一预设序列还可以为其他数据存储结构,例如通过对视频帧数据进行编号标记,并将视频帧对应的编号与视频帧数据一起打包,可以保持最终输出处理后的的视频帧顺序正确。
S502:判断上述待处理视频帧的第一工序对应的第一线程是否处于空闲状态。
示例性的,上述第一处理器在判断上述第一工序对应的第一线程是否处于空闲状态之前,还可以获取上述待处理视频帧需要处理的工序以及该需要处理的工序中各个工序的排序,其中,上述需要处理的工序包括第一工序和第二工序。进而,上述第一处理器在判断上述第一工序对应的第一线程是否处于空闲状态时,根据上述需要处理的工序以及上述排序,确定上述待处理视频帧对应的第一工序,从而,判断上述第一工序对应的第一线程是否处于空闲状态。其中,第一工序可以认为是一个任务,一个由上述第一线程执行的任务。
这里,上述第一处理器在获取上述需要处理的工序以及上述排序后,可以基于上述信息确定上述待处理视频帧需要依次进行的工序,例如上述需要处理的工序包括工序1和工序2,上述排序是先工序1再工序2。这样,上述第一处理器首先判断上述工序1是否处于空闲转态,如果是,基于上述工序1对上述待处理视频帧进行处理,获得上述第一处理结果。
另外,上述第一处理器在获取上述待处理视频帧需要处理的工序以及上述排序时,可以获取预存的视频流与需要处理的各个工序以及该各个工序的排序的对应关系,从而,根据该对应关系,确定上述待处理视频流需要处理的各个工序以及各个工序的排序,进而,根据上述待处理视频流需要处理的各个工序以及各个工序的排序,确定上述待处理视频帧需要处理的工序以及该需要处理的工序中各个工序的排序,其中,上述待处理视频流可以包括多个区间,每个区间中每一视频帧需要处理的各个工序以及各个工序的排序相同。
其中,上述对应关系可以采用多种方式确定,满足不同应用场景的应用需要。示例性的,上述第一处理器可以生成工序设置信息,并将该信息发送至图3或图4中所示显示单元显示,以提醒用户设置视频流需要处理的各个工序以及该各个工序的排序。显示单元在收到用户设置的视频流需要处理的各个工序以及该各个工序的排序后,将这些数据发送至第一处理器,第一处理器存储上述数据,从而预存了上述对应关系,基于预存的对应关系方便、准确地确定了上述待处理视频帧需要处理的工序以及上述排序。
S503:若上述第一线程处于空闲状态,则对上述待处理视频帧进行上述第一工序处理,获得第一处理结果,并将该第一处理结果和上述待处理视频帧进行打包,获得第一数据包,该第一数据包用于发送至第二工序对应的第二线程。
这里,如果上述第一线程处于空闲状态,则上述第一处理器可以对上述待处理视频帧进行上述第一工序处理,否则,等待至上述第一线程处于空闲状态,才执行上述对上述待处理视频帧进行上述第一工序处理的步骤。
而且,上述第一处理器在上述对上述待处理视频帧进行第一工序处理,获得第一处理结果后,还可以将该第一处理结果和上述待处理视频帧进行打包,获得第一数据包,即将上述第一处理结果和上述待处理视频帧打包整理成一个封闭的数据包,这样可以通过上述待处理视频帧来标识上述第一处理结果是上述第一处理器对上述待处理视频帧进行第一工序处理后得到的。而且在后续处理中,上述第一处理器可以直接对上述数据包中的数据进行进一步处理,保证了每个工序处理的结果数据能够相互匹配。
S504:判断上述第二线程是否处于空闲状态。
在本申请实施例中,上述第一处理器在对上述待处理视频帧进行第一工序处理处理,并将处理结果和上述待处理视频打包后,需要判断后续需要处理的第二工序对应的第二线程是否处于空闲状态,如果是,则将第一线程得到的数据包发送至第二线程,执行后续第二工序处理。其中,上述第一处理器可以根据上述需要处理的工序、上述排序以及上述第一工序,确定上述第二工序,进而,判断该第二工序对应的第二线程是否处于空闲状态。这里,第二工序可以认为是一个由上述第二线程执行的任务。
示例性的,上述需要处理的工序包括工序1和工序2,上述排序是先工序1再工序2,工序1已经被执行,从而,上述第一处理器确定上述第一数据包对应的是工序2,进而,判断该工序2对应的线程是否处理空闲状态。
S505:若上述第二线程处于空闲状态,则对上述第一数据包进行上述第二工序处理,获得第二处理结果,其中,上述第二线程与上述第一线程为并行执行。
这里,如果上述第二线程处于空闲状态,则上述第一处理器可以对上述第一数据包,即上述第一处理结果和上述待处理视频帧,进行上述第二工序处理,否则,等待至上述第二线程处于空闲状态,才执行上述对上述第一处理结果和上述待处理视频帧进行上述第二工序处理的步骤。
在本申请实施例中,上述第二线程与上述第一线程为并行执行,从而,上述第一处理器通过并行执行的多个线程,使得待处理视频流中视频帧的多个工序能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间。而且,并行执行的工序(第一工序和第二工序)是并行执行的线程(第一线程和第二线程)上的任务,其中第一线程和第二线程顺序一定,使得第一工序和第二工序顺序一定,避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。
另外,在上述需要处理的工序还包括其它工序,例如还包括第三工序、…第n工序,n为整数,n≥3,上述第一处理器还可以将上述第一处理结果、第二处理结果…第n-1处理结果和上述待处理视频帧进行打包,获得第n-1数据包,该第n-1数据包用于发送至上述第n工序对应的第n线程。上述第一处理器判断上述第n线程是否处于空闲状态,其中,上述第n线程分别与第n-1线程、…上述第二线程和第一线程并行执行。如果是,则上述第一处理器可以对上述第n-1数据包进行上述第n工序处理,获得第n处理结果。
其中,上述第n线程分别与第n-1线程、…上述第二线程和第一线程并行执行,这样,使得第n工序、第n-1工序、…上述第二工序和第一工序为并行执行,上述第一处理器在对视频流中多个视频帧进行上述工序处理时,实现并行处理。例如以视频流中包括视频帧1和视频帧2为例,两者顺序是先视频帧1再视频帧2,上述第一处理器在对视频帧1进行第二工序处理时,可以并行对视频帧2进行第一工序处理,或者,在对视频帧1进行第三工序处理时,可以并行对视频帧2进行第二工序处理等,从而实现了对视频流中多个视频帧的并行处理。而且,并行执行的工序(第一工序、第二工序和第三工序)是并行执行的线程(第一线程、第二线程和第三线程)上的任务,其中第一线程、第二线程和第三线程顺序一定,使得第一工序、第二工序和第三工序顺序一定,避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。
这里,上述第一处理器在对上述第一处理结果和上述待处理视频帧进行第二工序处理后,将上述第二处理结果、第一处理结果和待处理视频帧进行打包成第二数据包,类似上述,通过上述待处理视频帧与上述第一处理结果和上述第二处理结果相匹配,即上述第一处理器对上述待处理视频帧进行第一工序处理和第二工序处理后得到的结果相互匹配,而且在后续处理中,上述第一处理器可以直接对上述数据包中的数据进行进一步处理,从而保证每个视频帧各个工序的处理结果相互匹配。
本申请实施例中,上述第一处理器通过从第一预设序列中获取待处理视频帧,然后判断待处理视频帧的第一工序对应的第一线程是否处于空闲状态,如果是,则对待处理视频帧进行第一工序处理,获得第一处理结果,并将第一处理结果和待处理视频帧进行打包,获得第一数据包,该第一数据包用于发送至第二工序对应的第二线程,判断该第二线程是否处于空闲状态,如果是,则对上述第一数据包进行第二工序处理,获得第二处理结果,其中,第二线程与第一线程为并行执行,即上述第一处理器通过并行执行的多个线程,使得待处理视频流中视频帧的多个工序能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间,使用户体验较好。而且,本申请实施例中并行执行的工序是并行执行的线程上的任务,其中并行执行的线程顺序一定,使得并行执行的工序顺序一定,避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。另外,上述第一处理器按照先进先出的顺序从上述序列中获取待处理视频帧执行后续视频处理流程,该序列按照待处理视频流中每一视频帧的顺序存储待处理视频流,这样使得视频流中视频帧能够得到有序处理。
另外,本申请实施例在将上述第一处理结果和上述待处理视频帧进行打包,获得第一数据包之后,还考虑将该第一数据包存储在第二预设序列中,从而,当第二线程空闲时,上述第一处理器可以实时检测该第二预设序列中是否有数据,只要有数据就按照一定顺序从上述序列中获取数据包,执行后续视频处理流程,使得后续处理也能够得到有序处理。图6为本申请实施例提出的另一种视频处理方法的流程示意图。如图6所示,该方法包括:
S601:从第一预设序列中获取待处理视频帧,其中,该第一预设序列根据待处理视频流中每一视频帧的顺序存储上述待处理视频帧。
S602:判断上述待处理视频帧的第一工序对应的第一线程是否处于空闲状态。
S603:如果上述第一线程处于空闲状态,则对上述待处理视频帧进行上述第一工序处理,获得第一处理结果,并将该第一处理结果和上述待处理视频帧进行打包,获得第一数据包,该第一数据包用于发送至第二工序对应的第二线程。
其中,步骤S601-S603与上述步骤S501-S503的实现方式相同,此处不再赘述。
S604:将上述第一数据包存储在第二预设序列中,该第二预设序列为先进先出队列。
S605:当第二线程空闲时,检测上述第二预设序列中是否有数据。
S606:如果上述第二预设序列中有数据,则按照先进先出方式从上述第二预设序列中获取上述第一数据包。
这里,上述第一处理器可以实时检测第二预设序列中是否有数据,只要有就按照先进先出方式从上述序列中获取数据包执行后续视频处理流程。其中,上述第二预设序列按照先进先出方式存储上述第一数据包,这样执行后续处理流程,使得上述序列中数据包能够得到有序处理。
另外,在其他实施例中,第二预设序列还可以为其他数据存储结构,例如通过对数据包进行编号标记,并将数据包对应的编号与数据包一起打包,可以保持最终输出处理后的的数据包顺序正确
S607:对上述第一数据包进行上述第二工序处理,获得第二处理结果,其中,上述第二线程与上述第一线程为并行执行。
其中,步骤S607与上述步骤S505的实现方式相同,此处不再赘述。
本申请实施例中,上述第一处理器检测保存视频流的序列中是否有数据,只要有数据,就按照先进先出顺序从上述序列中获取待处理视频帧执行后续视频处理流程,其中,上述预设序列按照待处理视频流中每一视频帧的顺序存储数据,从而使得视频流中视频帧能够得到有序处理。同理上述第一处理器在将上述第一处理结果和上述待处理视频帧进行打包,获得第一数据包之后,还将该第一数据包存储在第二预设序列中,第二预设队列为先进先出队列,从而,使得该序列中数据包能够得到有序处理。另外,上述第一处理器通过并行执行的多个线程,使得待处理视频流中视频帧的多个工序能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间,使用户体验较好。上述并行执行的工序是并行执行的线程上的任务,其中并行执行的线程顺序一定,使得并行执行的工序顺序一定,避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。
另外,上述图4中指出在上述短视频处理过程中,短视频处理由处理器集群完成,该处理器集群包括第一处理器和第二处理器,上述第一工序由第一处理器执行,上述第二工序由第二处理器执行。例如算法类工序由cpu完成,渲染类工序由gpu完成,上述第一工序为算法类工序,第一处理器为cpu,cpu执行第一工序,上述第二工序为渲染类工序,第二处理器为gpu,gpu执行第二工序。因此,上述第一处理器在将上述第一处理结果和上述待处理视频帧进行打包,获得第一数据包之后,考虑将上述第一数据包发送至第二处理器,以使第二处理器执行后续处理流程,使得多个工序由不同的处理器执行,满足不同的应用需要。图7为本申请实施例提出的再一种视频处理方法的流程示意图。如图7所示,该方法包括:
S701:第一处理器从第一预设序列中获取待处理视频帧,其中,该第一预设序列根据待处理视频流中每一视频帧的顺序存储上述待处理视频帧。
S702:第一处理器判断上述待处理视频帧的第一工序对应的第一线程是否处于空闲状态。
S703:若上述第一线程处于空闲状态,则第一处理器对上述待处理视频帧进行上述第一工序处理,获得第一处理结果,并将该第一处理结果和上述待处理视频帧进行打包,获得第一数据包,该第一数据包用于发送至第二工序对应的第二线程。
其中,步骤S701-S703与上述步骤S501-S503的实现方式相同,此处不再赘述。
S704:第一处理器将上述第一数据包发送至第二处理器,该第一数据包用于指示第二处理器判断上述第二线程是否处于空闲状态,若第二线程处于空闲状态,则对上述第一数据包进行第二工序处理,获得第二处理结果,其中,上述第二线程与上述第一线程为并行执行。
示例性的,上述第一处理器在对上述待处理视频帧进行第一工序处理,获得第一处理结果之前,获取上述待处理视频帧需要处理的工序以及该需要处理的工序中各个工序的排序,进而,根据上述需要处理的工序以及上述排序,确定上述待处理视频帧对应的第一工序,然后可以将工序处理信息发送至上述第二处理器。上述工序处理信息包括上述需要处理的工序、上述排序以及上述第一工序,上述工序处理信息用于指示上述第二处理器根据上述需要处理的工序、上述排序以及上述第一工序,确定上述第二工序,判断该第二工序对应的第二线程是否处于空闲状态,如果是,则基于该第二工序,对上述第一数据包进行第二工序处理,获得上述第二处理结果。
这里,如图8所示,以上述待处理视频流包括两帧视频,例如包括视频帧1和视频帧2,两帧顺序是先视频帧1后视频帧2,且上述第一工序为算法类工序,上述第二工序为渲染类工序,上述第一处理器为cpu,第二处理器为gpu为例。视频帧1和视频帧2按照视频顺序存储在预设序列中,cpu检测该序列中是否有数据,只要有数据,就按照第一预设顺序从上述序列中获取待处理视频帧,例如按照先进先出的顺序从上述序列中获取视频帧1。然后cpu判断视频帧1的第一工序(算法类工序)对应的线程1是否处于空闲状态,如果是,执行第一工序(算法类工序),在执行完成后,将视频帧1和算法结果打包发送给gpu,即将打包后的数据包用于发送至第二工序对应的线程2。gpu判断第二工序(渲染类工序)对应的线程2是否处于空闲状态,如果是,执行第二工序(渲染类工序),得到渲染结果。这里如果后续还有其它工序,gpu可以将视频帧1、算法结果和渲染结果打包,由cpu或gpu基于打包的数据包继续执行后续流程。其中,线程1和线程2为并行执行。这样,cpu和gpu通过并行执行的多个线程(线程1和线程2),使得待处理视频流中视频帧(视频帧1和视频帧2)的多个工序(上述算法类工序和渲染类工序)能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间,使用户体验较好。而且,上述并行执行的工序是并行执行的线程上的任务(第一工序是线程1上的一个任务,第二工序是线程2上的一个任务),其中并行执行的线程顺序一定,使得并行执行的工序顺序一定(线程1和线程2的顺序一定,使得工第一工序和第二工序的顺序一定),避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。
本申请实施例考虑上述方法由处理器集群完成,该处理器集群包括第一处理器和第二处理器,上述第一工序由第一处理器执行,上述第二工序由第二处理器执行,上述第一处理器在将上述第一处理结果和上述待处理视频帧进行打包,获得第一数据包之后,考虑将上述第一数据包发送至第二处理器,以使第二处理器执行后续处理流程,使得多个工序由不同的处理器执行,满足不同的应用需要。而且,上述第一处理器通过并行执行的多个线程,使得待处理视频流中视频帧的多个工序能够并行执行,从而实现了对视频流中多个视频帧的并行处理,提高视频处理效率,缩短视频处理时间,使用户体验较好。上述并行执行的工序是并行执行的线程上的任务,其中并行执行的线程顺序一定,使得并行执行的工序顺序一定,避免视频流中的多帧视频数据在进行并行处理时工序顺序难以保证,导致后续处理结果出错的问题。另外,上述第一处理器按照一定顺序从上述序列中获取待处理视频帧执行后续视频处理流程,该序列按照待处理视频流中每一视频帧的顺序存储待处理视频流,这样使得视频流中视频帧能够得到有序处理。
对应于上文实施例的视频处理方法,图9为本申请实施例提供的视频处理装置的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。图9为本申请实施例提供的一种视频处理装置的结构示意图,该视频处理装置90包括:获取模块901、第一判断模块902、第一处理模块903、第二判断模块904以及第二处理模块905。这里的视频处理装置可以是上述第一处理器本身,或者是实现第一处理器的功能的芯片或者集成电路。这里需要说明的是,获取模块、第一判断模块、第一处理模块、第二判断模块以及第二处理模块的划分只是一种逻辑功能的划分,物理上两者可以是集成的,也可以是独立的。
其中,获取模块901,用于从第一预设序列中获取待处理视频帧,其中,所述第一预设序列根据待处理视频流中每一视频帧的顺序存储所述待处理视频帧。
第一判断模块902,用于判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态。
第一处理模块903,用于在所述第一线程处于空闲状态时,对所述待处理视频帧进行所述第一工序处理,获得第一处理结果,并将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包,所述第一数据包用于发送至第二工序对应的第二线程。
第二判断模块904,用于判断所述第二线程是否处于空闲状态。
第二处理模块905,用于若所述第二线程处于空闲状态,则对所述第一数据包进行所述第二工序处理,获得第二处理结果,其中,所述第二线程与所述第一线程为并行执行。
在一种可能的实现方式中,在所述第一判断模块902判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态之前,所述获取模块901,还用于:
获取所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,所述需要处理的工序包括所述第一工序和所述第二工序;
根据所述需要处理的工序以及所述排序,确定所述待处理视频帧对应的所述第一工序。
在一种可能的实现方式中,所述第二判断模块904,还用于:
根据所述需要处理的工序、所述排序以及所述第一工序,确定所述第二工序。
在一种可能的实现方式中,所述获取模块901,具体用于:
获取预存的视频流与需要处理的各个工序以及各个工序的排序的对应关系;
根据所述对应关系,确定所述待处理视频流需要处理的各个工序以及各个工序的排序;
根据所述待处理视频流需要处理的各个工序以及各个工序的排序,确定所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,其中,所述待处理视频流包括多个区间,每个区间中每一视频帧需要处理的各个工序以及各个工序的排序相同。
在一种可能的实现方式中,所述获取模块901,具体用于:
检测所述第一预设序列中是否有视频帧数据;
若所述第一预设序列中有视频帧数据,则按照所述第一预设顺序从所述第一预设序列中获取所述待处理视频帧。
在一种可能的实现方式中,所述第一预设序列为先进先出队列。
在一种可能的实现方式中,所述第一处理模块903,还用于:
将所述第一数据包存储在第二预设序列中,所述第二预设序列为先进先出队列。
在一种可能的实现方式中,所述第二处理模块905,还用于:
当第二线程空闲时,检测所述第二预设序列中是否有数据;
若所述第二预设序列中有数据,则按照先进先出方式从所述第二预设序列中获取所述第一数据包。
本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
图10为本申请实施例提供的另一种视频处理装置的结构示意图,在图9所示实施例基础上,上述视频处理装置90还包括:第n处理模块906和存储模块907。
其中,在一种可能的实现方式中,所述需要处理的工序还包括第三工序、…第n工序,n为整数,n≥3。
第n处理模块906,用于将所述第一处理结果、所述第二处理结果…第n-1处理结果和所述待处理视频帧进行打包,获得第n-1数据包,所述第n-1数据包用于发送至所述第n工序对应的第n线程;判断所述第n线程是否处于空闲状态,其中,所述第n线程分别与第n-1线程、…所述第二线程和所述第一线程并行执行;若所述第n线程处于空闲状态,则对所述第n-1数据包进行所述第n工序处理,获得第n处理结果。
在一种可能的实现方式中,存储模块907,用于:
获取所述待处理视频流,所述待处理视频流包括至少两帧视频;
将所述至少两帧视频存储在所述第一预设序列中。
本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
图11为本申请实施例提供的再一种视频处理装置的结构示意图,上述视频处理装置90可以是处理器集群本身,或者是实现处理器集群的功能的芯片或者集成电路,所述处理器集群包括第一处理器和第二处理器,第一处理器可以包括上述获取模块901、第一判断模块902和第一处理模块903。第二处理器可以包括第二判断模块904和第二处理模块905。
在一种可能的实现方式中,所述第一处理器还包括发送模块908,用于在所述第一处理模块903将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包之后,将所述第一数据包发送至所述第二处理器,所述第一数据包用于指示所述第二判断模块904判断所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则所述第二处理模块905对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
在一种可能的实现方式中,所述发送模块908,还用于:
在所述获取模块901根据需要处理的工序以及所述需要处理的工序中各个工序的排序,确定所述待处理视频帧对应的所述第一工序之后,将工序处理信息发送至所述第二处理器,所述工序处理信息包括所述需要处理的工序、所述排序以及所述第一工序,所述工序处理信息用于指示所述第二判断模块904根据所述需要处理的工序、所述排序和所述第一工序,确定所述第二工序,判断所述第二工序对应的所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则所述第二处理模块905基于所述第二工序,对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
本申请实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本申请实施例此处不再赘述。
可选地,图12A、12B和12C示意性地提供本申请所述视频处理设备的一种可能的基本硬件架构示意图。
参见图12A、12B和12C,视频处理设备1200包括至少一个处理器1201以及通信接口1203。进一步可选的,还可以包括存储器1202和总线1204。
其中,视频处理设备1200中,处理器1201的数量可以是一个或多个,图12A、12B和12C仅示意了其中一个处理器1201。可选地,处理器1201,可以是CPU、GPU或者数字信号处理器(digital signal processor,DSP)。如果视频处理设备1200具有多个处理器1201,多个处理器1201的类型可以不同,或者可以相同。可选地,视频处理设备1200的多个处理器1201还可以集成为多核处理器。
存储器1202存储计算机指令和数据;存储器1202可以存储实现本申请提供的上述视频处理方法所需的计算机指令和数据,例如,存储器1202存储用于实现上述视频处理方法的步骤的指令。存储器1202可以是以下存储介质的任一种或任一种组合:非易失性存储器(例如只读存储器(ROM)、固态硬盘(SSD)、硬盘(HDD)、光盘),易失性存储器。
通信接口1203可以为所述至少一个处理器提供信息输入/输出。也可以包括以下器件的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
可选的,通信接口1203还可以用于视频处理设备1200与其它计算设备或者终端进行数据通信。
进一步可选的,图12A、12B和12C用一条粗线表示总线1204。总线1204可以将处理器1201与存储器1202和通信接口1203连接。这样,通过总线1204,处理器1201可以访问存储器1202,还可以利用通信接口1203与其它计算设备或者终端进行数据交互。
在本申请中,视频处理设备1200执行存储器1202中的计算机指令,使得视频处理设备1200实现本申请提供的上述视频处理方法,或者使得视频处理设备1200部署上述的视频处理装置。
从逻辑功能划分来看,示例性的,如图12A所示,存储器1202中可以包括获取模块901、第一判断模块902、第一处理模块903、第二判断模块904以及第二处理模块905。这里的包括仅仅涉及存储器中所存储的指令被执行时可以分别实现获取模块、第一判断模块、第一处理模块、第二判断模块以及第二处理模块的功能,而不限定是物理上的结构。
示例性的,如图12B所示,存储器1202中可以包括第n处理模块906和存储模块907。这里的包括仅仅涉及存储器中所存储的指令被执行时可以分别实现第n处理模块和存储模块的功能,而不限定是物理上的结构。
示例性的,如图12C所示,存储器1202中可以包括发送模块908。这里的包括仅仅涉及存储器中所存储的指令被执行时可以实现发送模块的功能,而不限定是物理上的结构。
另外,上述的视频处理设备除了可以像上述图12A、12B和12C通过软件实现外,也可以作为硬件模块,或者作为电路单元,通过硬件实现。
本申请提供一种计算机可读存储介质,所述计算机程序产品包括计算机指令,所述计算机指令指示计算设备执行本申请提供的上述视频处理方法。
本申请提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行第一方面所述的方法。
本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口为所述至少一个处理器提供信息输入和/或输出。进一步,所述芯片还可以包含至少一个存储器,所述存储器用于存储计算机指令。所述至少一个处理器用于调用并运行该计算机指令,以执行本申请提供的上述视频处理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
Claims (12)
1.一种视频处理方法,其特征在于,包括:
从第一预设序列中获取待处理视频帧,其中,所述第一预设序列根据待处理视频流中每一视频帧的顺序存储所述待处理视频帧;
判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态;
若所述第一线程处于空闲状态,则对所述待处理视频帧进行所述第一工序处理,获得第一处理结果,并将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包,所述第一数据包用于发送至第二工序对应的第二线程;
判断所述第二线程是否处于空闲状态;
若所述第二线程处于空闲状态,则对所述第一数据包进行所述第二工序处理,获得第二处理结果,其中,所述第二线程与所述第一线程为并行执行;
在所述判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态之前,还包括:
获取所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,所述需要处理的工序包括所述第一工序和所述第二工序;
根据所述需要处理的工序以及所述排序,确定所述待处理视频帧对应的所述第一工序;
其中,所述第一工序为算法类工序,所述第二工序为渲染类工序,所述第一线程由CPU运行,所述第二线程由GPU运行,所述第一数据包包括所述待处理视频帧及对应的经所述第一工序获取的算法结果;所述对所述第一数据包进行所述第二工序处理,获得第二处理结果之后,还包括:
所述GPU将所述待处理视频帧、经所述第一工序获取的算法结果和经所述第二工序获取的渲染结果打包获取目标数据包,所述目标数据包用于执行后续工序。
2.根据权利要求1所述的方法,其特征在于,在所述判断所述第二线程是否处于空闲状态之前,还包括:
根据所述需要处理的工序、所述排序以及所述第一工序,确定所述第二工序。
3.根据权利要求1或2所述的方法,其特征在于,所述需要处理的工序还包括第三工序、…第n工序,n为整数,n≥3;
所述方法还包括:
将所述第一处理结果、所述第二处理结果…第n-1处理结果和所述待处理视频帧进行打包,获得第n-1数据包,所述第n-1数据包用于发送至所述第n工序对应的第n线程;
判断所述第n线程是否处于空闲状态,其中,所述第n线程分别与第n-1线程、…所述第二线程和所述第一线程并行执行;
若所述第n线程处于空闲状态,则对所述第n-1数据包进行所述第n工序处理,获得第n处理结果。
4.根据权利要求1或2所述的方法,其特征在于,所述从第一预设序列中获取待处理视频帧,包括:
检测所述第一预设序列中是否有视频帧数据;
若所述第一预设序列中有视频帧数据,则从所述第一预设序列中获取所述待处理视频帧。
5.根据权利要求1或2所述的方法,其特征在于,所述第一预设序列为先进先出队列。
6.根据权利要求1或2所述的方法,其特征在于,在所述将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包之后,还包括:
将所述第一数据包存储在第二预设序列中,所述第二预设序列为先进先出队列。
7.根据权利要求6所述的方法,其特征在于,在判断所述第二线程处于空闲状态之后,还包括:
检测所述第二预设序列中是否有数据;
若所述第二预设序列中有数据,则按照先进先出方式从所述第二预设序列中获取所述第一数据包。
8.根据权利要求1所述的方法,其特征在于,所述方法由处理器集群完成,所述处理器集群包括第一处理器和第二处理器,其中,所述第一工序由第一处理器执行,所述第二工序由第二处理器执行;
所述第一处理器将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包之后,将所述第一数据包发送至所述第二处理器,所述第一数据包用于指示所述第二处理器判断所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
9.根据权利要求8所述的方法,其特征在于,所述第一处理器根据需要处理的工序以及所述需要处理的工序中各个工序的排序,确定所述待处理视频帧对应的所述第一工序之后,将工序处理信息发送至所述第二处理器,所述工序处理信息包括所述需要处理的工序、所述排序以及所述第一工序,所述工序处理信息用于指示所述第二处理器根据所述需要处理的工序、所述排序和所述第一工序,确定所述第二工序,判断所述第二工序对应的所述第二线程是否处于空闲状态,若所述第二线程处于空闲状态,则基于所述第二工序,对所述第一数据包进行所述第二工序处理,获得所述第二处理结果。
10.一种视频处理装置,其特征在于,包括:
获取模块,用于从第一预设序列中获取待处理视频帧,其中,所述第一预设序列根据待处理视频流中每一视频帧的顺序存储所述待处理视频帧;
第一判断模块,用于判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态;
第一处理模块,用于在所述第一线程处于空闲状态时,对所述待处理视频帧进行所述第一工序处理,获得第一处理结果,并将所述第一处理结果和所述待处理视频帧进行打包,获得第一数据包,所述第一数据包用于发送至第二工序对应的第二线程;
第二判断模块,用于判断所述第二线程是否处于空闲状态;
第二处理模块,用于若所述第二线程处于空闲状态,则对所述第一数据包进行所述第二工序处理,获得第二处理结果,其中,所述第二线程与所述第一线程为并行执行;
在所述第一判断模块判断所述待处理视频帧的第一工序对应的第一线程是否处于空闲状态之前,所述获取模块,还用于:
获取所述待处理视频帧需要处理的工序以及所述需要处理的工序中各个工序的排序,所述需要处理的工序包括所述第一工序和所述第二工序;
根据所述需要处理的工序以及所述排序,确定所述待处理视频帧对应的所述第一工序;
所述第一工序为算法类工序,所述第二工序为渲染类工序,所述第一线程由CPU运行,所述第二线程由GPU运行,所述第一数据包包括所述待处理视频帧及对应的经所述第一工序获取的算法结果;
所述第二处理模块,还用于将所述待处理视频帧、经所述第一工序获取的算法结果和经所述第二工序获取的渲染结果打包获取目标数据包,所述目标数据包用于执行后续工序。
11.一种视频处理设备,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如权利要求1-9任一项所述的方法的指令。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110260023.6A CN115086756B (zh) | 2021-03-10 | 2021-03-10 | 视频处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110260023.6A CN115086756B (zh) | 2021-03-10 | 2021-03-10 | 视频处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115086756A CN115086756A (zh) | 2022-09-20 |
CN115086756B true CN115086756B (zh) | 2024-02-23 |
Family
ID=83240851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110260023.6A Active CN115086756B (zh) | 2021-03-10 | 2021-03-10 | 视频处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115086756B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106358003A (zh) * | 2016-08-31 | 2017-01-25 | 华中科技大学 | 一种基于线程级流水线的视频分析加速方法 |
CN110069344A (zh) * | 2019-04-16 | 2019-07-30 | 北京百度网讯科技有限公司 | 一种任务执行方法、装置和智能设备 |
CN110502294A (zh) * | 2019-07-20 | 2019-11-26 | 华为技术有限公司 | 数据处理的方法、装置及电子设备 |
CN112218117A (zh) * | 2020-09-29 | 2021-01-12 | 北京字跳网络技术有限公司 | 视频处理方法及设备 |
-
2021
- 2021-03-10 CN CN202110260023.6A patent/CN115086756B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106358003A (zh) * | 2016-08-31 | 2017-01-25 | 华中科技大学 | 一种基于线程级流水线的视频分析加速方法 |
CN110069344A (zh) * | 2019-04-16 | 2019-07-30 | 北京百度网讯科技有限公司 | 一种任务执行方法、装置和智能设备 |
CN110502294A (zh) * | 2019-07-20 | 2019-11-26 | 华为技术有限公司 | 数据处理的方法、装置及电子设备 |
CN112218117A (zh) * | 2020-09-29 | 2021-01-12 | 北京字跳网络技术有限公司 | 视频处理方法及设备 |
Non-Patent Citations (3)
Title |
---|
Multi-Level Memory Compensation Network for Rain Removal via Divide-and-Conquer Strategy;Kui Jiang et al.;《IEEE Journal of Selected Topics in Signal Processing》;第15卷(第12期);全文 * |
三维视频GIS高效渲染研究;董文龙;《中国优秀硕士学位论文全文数据库基础科学》(第6期);全文 * |
基于GPU集群的高度真实感并行渲染系统设计与实现;袁雪;《中国学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115086756A (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI672027B (zh) | 網頁中的資料處理方法、裝置及系統 | |
CN108668144B (zh) | 一种数据流控方法、装置及设备 | |
CN104253842B (zh) | 同步终端镜像的方法、装置、终端及服务器 | |
CN111352800A (zh) | 大数据集群监控方法及相关设备 | |
CN112379982B (zh) | 任务处理方法、装置、电子设备及计算机可读存储介质 | |
CN111597107B (zh) | 信息输出方法、装置和电子设备 | |
CN114040445A (zh) | 一种数据传输方法及装置 | |
CN109636460B (zh) | 一种业务处理方法、装置、设备及存储介质 | |
CN115086756B (zh) | 视频处理方法、装置及存储介质 | |
CN112311619B (zh) | 网络报文延迟检测方法、装置和电子设备 | |
CN115225586B (zh) | 数据包发送方法、装置、设备及计算机可读存储介质 | |
CN115134254B (zh) | 一种网络模拟方法、装置、设备及存储介质 | |
US8237721B2 (en) | Information handling system and method for using main link data channels | |
CN116501286A (zh) | 一种帧率获取方法、装置、电子设备及存储介质 | |
CN104079368B (zh) | 一种应用软件的测试数据传输方法及服务器 | |
CN113747063B (zh) | 一种视频传输的方法、装置、电子设备及可读存储介质 | |
CN112911390B (zh) | 一种视频数据的播放方法及终端设备 | |
CN112286808B (zh) | 应用程序的测试方法、装置、电子设备及介质 | |
CN116360971A (zh) | 基于异构计算框架的处理方法、装置、设备及介质 | |
CN109862044B (zh) | 一种转换装置、网络设备及数据传输方法 | |
CN113890870A (zh) | Rtp数据包排序方法、装置、电子设备及存储介质 | |
US20170185551A1 (en) | System and method for preventing time out in input/output systems | |
CN113852840B (zh) | 视频渲染方法、装置、电子设备以及存储介质 | |
CN113949785B (zh) | 图像处理操作的处理方法、装置、电子设备及介质 | |
CN112506582B (zh) | 小程序数据包处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |