CN117667245A - 视频解析方法、装置和存储介质 - Google Patents
视频解析方法、装置和存储介质 Download PDFInfo
- Publication number
- CN117667245A CN117667245A CN202211042853.2A CN202211042853A CN117667245A CN 117667245 A CN117667245 A CN 117667245A CN 202211042853 A CN202211042853 A CN 202211042853A CN 117667245 A CN117667245 A CN 117667245A
- Authority
- CN
- China
- Prior art keywords
- plug
- instance
- data
- video
- execution engine
- 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
- 238000000034 method Methods 0.000 title claims abstract description 189
- 238000004458 analytical method Methods 0.000 claims abstract description 187
- 230000008569 process Effects 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 claims description 54
- 230000003993 interaction Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 21
- 238000007405 data analysis Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000000926 separation method Methods 0.000 description 7
- 230000018109 developmental process Effects 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请涉及一种视频解析方法、装置和存储介质。该方法包括:处理器获取视频数据;获取一个或多个视频解析卡的执行引擎状态信息;处理器根据视频数据和执行引擎状态信息,生成数据流信息,数据流信息包括插件实例的调用顺序和视频数据;处理器根据插件实例的调用顺序,将数据流信息发送至视频解析卡;视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。根据本申请实施例,可以提高各视频解析卡上的硬件资源的利用率,灵活、充分地利用不同视频解析卡上的硬件资源,提高了视频解析的效率。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种视频解析方法、装置和存储介质。
背景技术
随着人工智能(artificial intelligence,AI)技术的不断发展,也推动了视频智能分析的飞速发展。由于现代智慧城市对数据所反应的内容要求越来越高,要求我们对这些视频数据做更加完善的规整和分析。当前通常是利用视频解析卡等来对视频数据进行处理。
然而,在大规模视频解析中可能会涉及混合业务流的场景,当前技术手段中通常是对视频解析卡的硬件资源进行虚拟化算力切分以适应该场景,这种方式无法充分地利用视频解析卡上的硬件资源。因此,亟需新型的视频解析方法以更加高效地利用底层硬件资源对视频数据进行解析,提高视频解析效率。
发明内容
有鉴于此,提出了一种视频解析方法、装置和存储介质。
第一方面,本申请的实施例提供了一种视频解析方法。该方法包括:
获取视频数据;
获取一个或多个视频解析卡的执行引擎状态信息;
根据视频数据和执行引擎状态信息,生成数据流信息,数据流信息包括插件实例的调用顺序和视频数据;
根据插件实例的调用顺序,将数据流信息发送至视频解析卡,数据流信息用于视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
根据本申请实施例,通过处理器在视频解析卡上部署插件实例,并通过插件实例调用底层的执行引擎,可以实现插件实例和底层执行引擎的分离,针对于不同视频数据解析的需求,可以灵活的调用不同视频解析卡上的插件实例以实现对视频的解析,以得到视频解析的结果。同时,通过获取各视频解析卡的执行引擎状态信息,以生成相应的数据流信息,确定解析视频时插件实例的调用顺序,可以提高各视频解析卡上的硬件资源的利用率,灵活、充分地利用不同视频解析卡上的硬件资源,提高了视频解析的效率。
根据第一方面,在视频解析方法的第一种可能的实现方式中,执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,根据视频数据和执行引擎状态信息,生成数据流信息,包括:
根据视频数据的业务类型信息,确定业务类型对应的一个或多个插件,插件在视频解析卡上实例化为对应的一个或多个插件实例;
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序。
根据本申请实施例,通过根据满足业务需求的插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,来确定视频数据对应的插件实例的调用顺序,可以实现利用处理器对视频的解析流程进行动态的调度,以满足不同业务类型的需要,且在视频解析过程中可以充分利用底层硬件资源,实现硬件资源利用率的最大化,提高了视频解析效率。
根据第一方面的第一种可能的实现方式,在视频解析方法的第二种可能的实现方式中,根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序,包括:
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为多个的情况下,确定候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序为插件实例的调用顺序。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在存在多条候选的调用顺序中,以跨视频解析卡交互的数据量最小的候选的调用顺序作为最终确定的调用顺序,可以通过动态调度提高底层硬件资源的利用率,且可以减少视频解析过程中的数据传输代价,总体提高了数据解析的效率。
根据第一方面的第一种或第二种可能的实现方式,在视频解析方法的第三种可能的实现方式中,根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序,包括:
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为零的情况下,根据执行引擎的资源空闲状态,在视频解析卡上部署新的插件实例;
根据执行引擎的资源空闲状态和新的插件实例,确定插件实例的调用顺序。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在不存在可行的调用顺序时,通过部署新的插件实例以对调用路径进行动态扩容,从而可以满足动态解析的需求,提高视频解析的实时性。
根据第一方面或第一方面的第一种或第二种或第三种可能的实现方式,在视频解析方法的第四种可能的实现方式中,视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果,包括:
视频解析卡根据数据流信息,确定第一插件实例对应的数据输入队列,第一插件实例为插件实例的调用顺序中的第一个插件实例;
视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列;
视频解析卡以第一插件实例之后的第二插件实例作为新的第一插件实例,根据数据输出队列确定新的数据输入队列,重复执行视频解析卡通过第一插件实例调用相应的执行引擎,对数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为插件实例的调用顺序中的最后一个插件实例,得到视频解析结果。
根据本申请实施例,通过确定插件实例对应的数据输入队列,并按照插件实例的调用顺序依次调用插件实例对数据输入队列中的各项数据进行处理,该处理过程通过插件实例调用相应的执行引擎实现,可以实现对各视频解析卡上各插件实例的统一管理,以充分地利用视频解析卡上的硬件资源,实现高效的视频解析过程。
根据第一方面的第四种可能的实现方式,在视频解析方法的第五种可能的实现方式中,数据输入队列包括数据输入队列中一项或多项数据对应的优先级信息,视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
视频解析卡根据优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
根据本申请实施例,通过在插件实例对应的数据输入队列中引入优先级信息,可以满足存在紧急业务的情况下视频解析的需要,在存在紧急业务的情况下可以使插件实例优先处理相应的视频数据,保证视频解析的实时性。
根据第一方面的第四种或第五种可能的实现方式,在视频解析方法的第六种可能的实现方式中,视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
视频解析卡通过第一插件实例,调用相应的执行引擎对应的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,得到数据输出队列,线程池中并发的最大线程数量根据硬件资源的大小决定。
根据本申请实施例,视频解析卡通过在调用执行引擎时,通过执行引擎中的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,可以在执行引擎中实现多项数据解析任务的并发处理,提高处理效率,且通过线程池可以充分地利用底层硬件资源,提高硬件资源的利用率。
第二方面,本申请的实施例提供了一种视频解析方法。该方法包括:
获取处理器根据插件实例的调用顺序发送的数据流信息,数据流信息为处理器根据视频数据和执行引擎状态信息生成,数据流信息包括插件实例的调用顺序和视频数据;
根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
根据本申请实施例,通过处理器在视频解析卡上部署插件实例,并通过插件实例调用底层的执行引擎,可以实现插件实例和底层执行引擎的分离,针对于不同视频数据解析的需求,可以灵活的调用不同视频解析卡上的插件实例以实现对视频的解析,以得到视频解析的结果。同时,通过获取各视频解析卡的执行引擎状态信息,以生成相应的数据流信息,确定解析视频时插件实例的调用顺序,可以提高各视频解析卡上的硬件资源的利用率,灵活、充分地利用不同视频解析卡上的硬件资源,提高了视频解析的效率。
根据第二方面,在视频解析方法的第一种可能的实现方式中,根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果,包括:
根据数据流信息,确定第一插件实例对应的数据输入队列,第一插件实例为插件实例的调用顺序中的第一个插件实例;
通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列;
以第一插件实例的之后的第二插件实例作为新的第一插件实例,根据数据输出队列确定新的数据输入队列,重复执行通过第一插件实例调用相应的执行引擎,对数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为插件实例的调用顺序中的最后一个插件实例,得到视频解析结果。
根据本申请实施例,通过确定插件实例对应的数据输入队列,并按照插件实例的调用顺序依次调用插件实例对数据输入队列中的各项数据进行处理,该处理过程通过插件实例调用相应的执行引擎实现,可以实现对各视频解析卡上各插件实例的统一管理,以充分地利用视频解析卡上的硬件资源,实现高效的视频解析过程。
根据第二方面的第一种可能的实现方式,在视频解析方法的第二种可能的实现方式中,数据输入队列包括数据输入队列中一项或多项数据对应的优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
根据优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
根据本申请实施例,通过在插件实例对应的数据输入队列中引入优先级信息,可以满足存在紧急业务的情况下视频解析的需要,在存在紧急业务的情况下可以使插件实例优先处理相应的视频数据,保证视频解析的实时性。
根据第二方面的第一种或第二种可能的实现方式,在视频解析方法的第三种可能的实现方式中,通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
通过第一插件实例,调用相应的执行引擎对应的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,得到数据输出队列,线程池中并发的最大线程数量根据硬件资源的大小决定。
根据本申请实施例,视频解析卡通过在调用执行引擎时,通过执行引擎中的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,可以在执行引擎中实现多项数据解析任务的并发处理,提高处理效率,且通过线程池可以充分地利用底层硬件资源,提高硬件资源的利用率。
根据第二方面或第二方面的第一种或第二种或第三种可能的实现方式,在视频解析方法的第四种可能的实现方式中,执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,数据流信息中插件实例的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定,插件在视频解析卡上实例化为对应的一个或多个插件实例,一个或多个插件根据视频数据的业务类型信息确定。
根据本申请实施例,通过根据满足业务需求的插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,来确定视频数据对应的插件实例的调用顺序,可以实现利用处理器对视频的解析流程进行动态的调度,以满足不同业务类型的需要,且在视频解析过程中可以充分利用底层硬件资源,实现硬件资源利用率的最大化,提高了视频解析效率。
根据第二方面的第四种可能的实现方式,在视频解析方法的第五种可能的实现方式中,在候选的调用顺序的数量为多个的情况下,确定插件实例的调用顺序为候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序,候选的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在存在多条候选的调用顺序中,以跨视频解析卡交互的数据量最小的候选的调用顺序作为最终确定的调用顺序,可以通过动态调度提高底层硬件资源的利用率,且可以减少视频解析过程中的数据传输代价,总体提高了数据解析的效率。
根据第二方面的第四种或第五种可能的实现方式,在视频解析方法的第六种可能的实现方式中,在候选的调用顺序的数量为零的情况下,插件实例的调用顺序根据执行引擎的资源空闲状态和新的插件实例确定,新的插件实例为根据执行引擎的资源空闲状态,在视频解析卡上部署的,候选的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在不存在可行的调用顺序时,通过部署新的插件实例以对调用路径进行动态扩容,从而可以满足动态解析的需求,提高视频解析的实时性。
第三方面,本申请的实施例提供了一种视频解析装置。该装置包括:
第一获取模块,用于获取视频数据;
第二获取模块,用于获取一个或多个视频解析卡的执行引擎状态信息;
生成模块,用于根据视频数据和执行引擎状态信息,生成数据流信息,数据流信息包括插件实例的调用顺序和视频数据;
发送模块,用于根据插件实例的调用顺序,将数据流信息发送至视频解析卡,数据流信息用于视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
根据第三方面,在视频解析装置的第一种可能的实现方式中,执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,生成模块,用于:
根据视频数据的业务类型信息,确定业务类型对应的一个或多个插件,插件在视频解析卡上实例化为对应的一个或多个插件实例;
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序。
根据第三方面的第一种可能的实现方式,在视频解析装置的第二种可能的实现方式中,根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序,包括:
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为多个的情况下,确定候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序为插件实例的调用顺序。
根据第三方面的第一种或第二种可能的实现方式,在视频解析装置的第三种可能的实现方式中,根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序,包括:
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为零的情况下,根据执行引擎的资源空闲状态,在视频解析卡上部署新的插件实例;
根据执行引擎的资源空闲状态和新的插件实例,确定插件实例的调用顺序。
根据第三方面或第三方面的第一种或第二种或第三种可能的实现方式,在视频解析装置的第四种可能的实现方式中,视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果,包括:
视频解析卡根据数据流信息,确定第一插件实例对应的数据输入队列,第一插件实例为插件实例的调用顺序中的第一个插件实例;
视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列;
视频解析卡以第一插件实例之后的第二插件实例作为新的第一插件实例,根据数据输出队列确定新的数据输入队列,重复执行视频解析卡通过第一插件实例调用相应的执行引擎,对数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为插件实例的调用顺序中的最后一个插件实例,得到视频解析结果。
根据第三方面的第四种可能的实现方式,在视频解析装置的第五种可能的实现方式中,数据输入队列包括数据输入队列中一项或多项数据对应的优先级信息,视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
视频解析卡根据优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
根据第三方面的第四种或第五种可能的实现方式,在视频解析装置的第六种可能的实现方式中,视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
视频解析卡通过第一插件实例,调用相应的执行引擎对应的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,得到数据输出队列,线程池中并发的最大线程数量根据硬件资源的大小决定。
第四方面,本申请的实施例提供了一种视频解析装置。该装置包括:
第三获取模块,用于获取处理器根据插件实例的调用顺序发送的数据流信息,数据流信息为处理器根据视频数据和执行引擎状态信息生成,数据流信息包括插件实例的调用顺序和视频数据;
确定模块,用于根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
根据第四方面,在视频解析装置的第一种可能的实现方式中,确定模块,用于:
根据数据流信息,确定第一插件实例对应的数据输入队列,第一插件实例为插件实例的调用顺序中的第一个插件实例;
通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列;
以第一插件实例的之后的第二插件实例作为新的第一插件实例,根据数据输出队列确定新的数据输入队列,重复执行通过第一插件实例调用相应的执行引擎,对数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为插件实例的调用顺序中的最后一个插件实例,得到视频解析结果。
根据第四方面的第一种可能的实现方式,在视频解析装置的第二种可能的实现方式中,数据输入队列包括数据输入队列中一项或多项数据对应的优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
根据优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
根据第四方面的第一种或第二种可能的实现方式,在视频解析装置的第三种可能的实现方式中,通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
通过第一插件实例,调用相应的执行引擎对应的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,得到数据输出队列,线程池中并发的最大线程数量根据硬件资源的大小决定。
根据第四方面或第四方面的第一种或第二种或第三种可能的实现方式,在视频解析装置的第四种可能的实现方式中,执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,数据流信息中插件实例的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定,插件在视频解析卡上实例化为对应的一个或多个插件实例,一个或多个插件根据视频数据的业务类型信息确定。
根据第四方面的第四种可能的实现方式,在视频解析装置的第五种可能的实现方式中,在候选的调用顺序的数量为多个的情况下,确定插件实例的调用顺序为候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序,候选的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定。
根据第四方面的第四种或第五种可能的实现方式,在视频解析装置的第六种可能的实现方式中,在候选的调用顺序的数量为零的情况下,插件实例的调用顺序根据执行引擎的资源空闲状态和新的插件实例确定,新的插件实例为根据执行引擎的资源空闲状态,在视频解析卡上部署的,候选的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定。
第五方面,本申请的实施例提供了一种视频解析装置,该装置包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令时实现上述第一方面或者第一方面的多种可能的实现方式中的一种或几种的视频解析方法,或者,实现上述第二方面或者第二方面的多种可能的实现方式中的一种或几种的视频解析方法。
第六方面,本申请的实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述第一方面或者第一方面的多种可能的实现方式中的一种或几种的视频解析方法,或者,实现上述第二方面或者第二方面的多种可能的实现方式中的一种或几种的视频解析方法。
第七方面,本申请的实施例提供了一种终端设备,该终端设备可以执行上述第一方面或者第一方面的多种可能的实现方式中的一种或几种的视频解析方法,或者,执行上述第二方面或者第二方面的多种可能的实现方式中的一种或几种的视频解析方法。
第八方面,本申请的实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述第一方面或者第一方面的多种可能的实现方式中的一种或几种的视频解析方法,或者,执行上述第二方面或者第二方面的多种可能的实现方式中的一种或几种的视频解析方法。
本申请的这些和其他方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本申请的示例性实施例、特征和方面,并且用于解释本申请的原理。
图1示出根据本申请一实施例的应用场景的示意图。
图2示出根据本申请一实施例的视频解析方法的流程图。
图3示出根据本申请一实施例的视频解析卡对视频数据进行处理的示意图。
图4示出根据本申请一实施例的视频解析方法的流程图。
图5示出根据本申请一实施例的执行引擎的资源消耗信息的示意图。
图6示出根据本申请一实施例的计算数据跨视频解析卡进行交互的代价的示意图。
图7示出根据本申请一实施例的视频解析方法的流程图。
图8示出根据本申请一实施例的调用执行引擎对视频数据进行处理的示意图。
图9示出根据本申请一实施例的插件实例实现的示意图。
图10示出根据本申请一实施例的视频解析装置的结构图。
图11示出根据本申请一实施例的视频解析装置的结构图。
图12示出根据本申请一实施例的电子设备1200的结构图。
具体实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
随着AI技术的不断发展,也推动了视频智能分析的飞速发展。由于现代智慧城市对数据所反应的内容要求越来越高,要求我们对这些视频数据做更加完善的规整和分析。当前通常是利用视频解析卡等来对视频数据进行处理。而当前利用视频解析卡解析视频数据的方案中,在涉及大规模视频解析以及混合业务流场景时,通常是对视频解析卡的硬件资源进行算力切分并利用虚拟化方式将资源进行组合,这种方式使得硬件资源利用率依赖于底层算力切分的粒度,加入的虚拟化层也会带来额外的性能消耗,且在视频码流路数动态调整时,还需要重新分配虚拟视频解析卡的资源,这些都会导致视频解析卡上的硬件资源无法被充分的利用。因此,亟需新型的视频解析方法以更加高效地利用底层硬件资源对视频数据进行解析。
鉴于此,本申请提供了一种视频解析方法,该方法能够在视频解析卡上部署插件实例,通过插件实例调用底层的执行引擎,可以实现插件实例和底层执行引擎的分离,针对于不同视频数据解析的需求,可以灵活的调用不同视频解析卡上的插件实例以实现对视频的解析,以得到视频解析的结果。同时,通过获取各视频解析卡的执行引擎状态信息,以生成相应的数据流信息,确定解析视频时插件实例的调用顺序,可以提高各视频解析卡上的硬件资源的利用率,充分利用不同视频解析卡上的硬件资源,提高了视频解析的效率。
图1示出根据本申请一实施例的应用场景的示意图。如图1所示,本申请实施例的视频解析系统100可部署于终端设备或服务器上,可以包括处理器110和视频解析卡121-123,视频解析系统100可以与摄像头201-203相连接。该摄像头可以是彩色摄像头、红外摄像头等,本申请对摄像头的类型不作限制。
例如,在多业务场景(如智慧城市等)下,摄像头201-203可用于不同的业务,例如,摄像头201-202可用于人体信息结构化的业务(如用于人脸识别、行人重识别等),摄像头203可用于车辆信息结构化的业务(如车辆目标检测等);视频解析卡121-123也可用于不同的业务,例如,视频解析卡121-122可用于人体信息结构化的业务、视频解析卡123可用于车辆信息结构化的业务。
其中,处理器110可用于获取摄像头201-203发送的视频数据(即图中视频码流),以及视频解析卡121-123发送的执行引擎状态信息,处理器110可以根据视频数据和执行引擎状态信息,可以生成相应的数据流,确定插件实例的调用顺序,处理器110可以根据插件实例的调用顺序将数据流发送给相应的视频解析卡,例如在数据流对应于人体信息结构化的业务时,可由视频解析卡121-122来处理该数据流,在数据流对应于车辆信息结构化的业务时,可由视频解析卡123来处理该数据流;视频解析卡121-123可根据插件实例的调用顺序,通过视频解析卡上的插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
需要说明的是,图中的摄像头201-203仅作为一个示例,也可包括更多数量的摄像头,如100路摄像头用于人体信息结构化的业务、50路摄像头用于车辆信息结构化的业务等;图中的视频解析卡121-123也仅作为一个示例,也可包括更多数量的视频解析卡。图中处理器的数量也可以是多个。
需要说明的是,本申请实施例也可用于除智慧城市之外的其他需要对视频进行解析的场景中,如自动驾驶、视频内容审核等场景,本申请对此不作限制。
本申请涉及的终端设备可以是指具有无线连接功能的设备,无线连接的功能是指可以通过Wi-Fi、蓝牙等无线连接方式与其他终端设备或服务器进行连接,本申请的终端设备也可以具有有线连接进行通信的功能。本申请的终端设备可以是触屏的、也可以是非触屏的、也可以是没有屏幕的,触屏的可以通过手指、触控笔等在显示屏幕上点击、滑动等方式对终端设备进行控制,非触屏的设备可以连接鼠标、键盘、触控面板等输入设备,通过输入设备对终端设备进行控制,没有屏幕的设备比如说可以是没有屏幕的蓝牙音箱等。举例来说,本申请的终端设备可以是智能手机、上网本、平板电脑、笔记本电脑、可穿戴电子设备(如智能手环、智能手表等)、TV、虚拟现实设备、音响、电子墨水,等等。
本申请涉及的服务器可以位于云端或本地,可以是实体设备,也可以是虚拟设备,如虚拟机、容器等,具有无线通信功能,其中,无线通信功能可设置于该服务器的芯片(系统)或其他部件或组件。可以是指具有无线连接功能的设备,无线连接的功能是指可以通过Wi-Fi、蓝牙等无线连接方式与其他服务器或终端设备进行连接,本申请的服务器也可以具有有线连接进行通信的功能。本申请实施例的处理器和视频解析卡也可分别部署于不同的设备,可以通过设备间的有限或无线功能进行通信。
在一种可能的实现方式中,本申请实施例的视频解析方法也可通过软件开发工具(software development kit,SDK)实现。
以下通过图2-图9,对本申请实施例的视频解析方法进行详细的介绍。
图2示出根据本申请一实施例的视频解析方法的流程图。该方法可用于上述视频解析系统100中,如图2所示,该方法包括:
步骤S201,处理器获取视频数据。
其中,处理器例如是图1中的处理器110,视频数据(即视频码流)可以是由摄像头(如图1中摄像头201-202)拍摄的,处理器可以通过视频传输协议获取摄像头的视频数据,该视频传输协议可以是实时串流协议(real time streaming protocol,RTSP)等。
对于某一视频解析业务,可以将其分解为一个或多个部分,每个部分可封装为相应的业务插件(plugin),每个业务插件可以表示在业务层面的抽象,每个业务插件还可实例化为一个或多个对象,由处理器部署在不同的视频解析卡上,视频解析卡例如是图1中的视频解析卡121-123。以信息结构化的业务场景为例,其业务流程可包含数据解码、数据预处理、模型推理,则可以将数据解码的过程抽象化为一个业务插件,将数据预处理、模型推理的过程抽象为另一个业务插件。
参见图3,示出根据本申请一实施例的视频解析卡对视频数据进行处理的示意图。如图3所示,视频解析卡121和视频解析卡123可部署有若干业务插件实例,如图中业务插件实例1、业务插件实例2和业务插件实例3,这些业务插件实例可以由不同的业务插件实例化形成,对应于不同的业务抽象,视频解析卡121上的业务插件实例1和视频解析卡123上的业务插件实例1例如可表示同一业务插件在不同视频解析卡上的实例化后的对象。
而视频解析卡上不同的硬件功能单元可以实现为不同的执行引擎,举例来说,这些执行引擎可以包括解码引擎、直接记忆体存取(direct memory access,DMA)引擎、缩放引擎、推理引擎。其中解码引擎可用于对视频数据进行解码、DMA引擎可用于访问存储设备、缩放引擎可用于对视频数据进行数据预处理,例如对数据的尺寸进行调整、推理引擎可用于通过模型对数据进行推理分析,以得到视频解析结果。
通过视频解析卡上部署的业务插件实例,可以根据功能需求调用相应的一个或多个执行引擎对视频数据进行处理,如图3所示,对于视频解析卡121和视频解析卡123而言,业务插件实例1可用于调用解码引擎,业务插件实例2可用于调用缩放引擎和推理引擎,业务插件实例3可用于调用解码引擎。由此可以实现业务插件实例与底层执行引擎的分离。在视频解析的过程中,通过按序执行相应的业务插件实例,由业务插件实例调用相应的执行引擎,执行引擎即可利用硬件资源实现对视频数据的解析。
在此过程中,为了充分利用硬件资源,提高视频数据的处理效率,在存在视频解析的需求时,处理器可以为相应的视频数据生成最优的插件实例调用顺序。以下对该过程进行详细介绍。
步骤S202,处理器获取一个或多个视频解析卡的执行引擎状态信息。
其中,处理器可以每隔预定时间(如每隔1秒)或者在接收到视频数据时,获取各个视频解析卡的执行引擎状态信息。
可选地,该执行引擎状态信息可包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态。执行引擎的资源空闲状态例如可包括视频解析卡上每个执行引擎对应的资源使用率,例如为50%可以表示该执行引擎还有一半的硬件资源可供使用。
步骤S203,处理器根据视频数据和执行引擎状态信息,生成数据流信息。
其中,数据流信息可包括插件实例的调用顺序和视频数据。
插件实例的调用顺序可以是指对应数据流经过的业务插件实例的顺序。如图3所示,数据流1和数据流2可以分别对应不同的视频数据,数据流1和数据流2可以分别流经不同的业务插件实例,以完成对数据的解析。
如图,在一个示例中,经过处理器搜索最优编排策略后得到的数据流1对应的插件实例的调用顺序为:视频解析卡121中的业务插件实例1、视频解析卡121中的业务插件实例2;得到的数据流2对应的插件实例的调用顺序为:视频解析卡121中的业务插件实例3、视频解析卡123中的业务插件实例2。则对于数据流1,视频解析卡121中的业务插件实例1可在调用解码引擎对其进行处理后,再由视频解析卡121中的业务插件实例2分别调用缩放引擎和推理引擎对其进行处理;对于数据流2,视频解析卡121中的业务插件实例3可在调用解码引擎对其进行处理后,再由视频解析卡123中的业务插件实例2分别调用缩放引擎和推理引擎对其进行处理。最终可分别得到数据流1和数据流2对应的视频解析结果。
以下对处理器搜索最优编排策略,以得到数据流信息中的插件实例的调用顺序的过程进行详细介绍。
图4示出根据本申请一实施例的视频解析方法的流程图。如图4所示,可选地,该步骤S203,可包括:
步骤S401,处理器根据视频数据的业务类型信息,确定业务类型对应的一个或多个插件。
其中,该插件可在视频解析卡上实例化为对应的一个或多个插件实例。将各插件(即图3中业务插件)实例化为插件实例(如图3中业务插件实例)的过程可参见上述步骤S201中的相关叙述。
其中,可以根据视频数据的业务类型,确定该业务流程下要利用的插件。例如,对于信息结构化的业务场景,在将数据解码的过程抽象化为一个业务插件,将数据预处理、模型推理的过程抽象为另一个业务插件的情况下,该视频数据涉及的插件可包括该数据解码的过程抽象化的业务插件(可称为插件1),以及该数据预处理、模型推理的过程抽象为的业务插件(可称为插件2)。
步骤S402,处理器根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序。
其中,可以根据上述确定的插件,以确定相应插件在不同视频解析卡上实例化为的插件实例。例如,对于信息结构化的业务场景,在图3中,插件1对应的插件实例可以包括视频解析卡121上的业务插件实例1和视频解析卡123上的业务插件实例1;插件2对应的插件实例可以包括视频解析卡121上的业务插件实例2和视频解析卡123上的业务插件实例2。可以根据各插件对应的执行引擎的资源消耗信息和各插件实例对应的执行引擎的资源空闲状态,确定数据流可行的插件实例调用顺序,在可行的插件实例调用顺序中,选择最优的顺序作为最终确定的插件实例的调用顺序,该过程可参见下述。
根据本申请实施例,通过根据满足业务需求的插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,来确定视频数据对应的插件实例的调用顺序,可以实现利用处理器对视频的解析流程进行动态的调度,以满足不同业务类型的需要,且在视频解析过程中可以充分利用底层硬件资源,实现硬件资源利用率的最大化,提高了视频解析效率。
可选地,该步骤S402可包括:
步骤S4021,处理器根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定候选的调用顺序。
其中,插件对应的执行引擎的资源消耗信息可以表示执行引擎需要消耗多少资源,可以预先通过测试得到。
参见图5,示出根据本申请一实施例的执行引擎的资源消耗信息的示意图。以人脸识别的业务为例,如图5所示,对于视频显示格式为1080p(即分辨率为1920*1080)的视频数据,例如需要经过1次插件实例1(对应于插件1)调用解码引擎、1次插件实例2(对应于插件2)调用缩放引擎、1次插件实例2(对应于插件2)调用推理引擎,则经过预先测试得到的插件资源信息可参见图5右侧的引擎资源消耗表所示。业务流类型中“人脸识别@1080p”可以表示业务类型为对1080p格式的视频数据进行人脸识别,“人脸识别@720p”可以表示业务类型为对720p格式的视频数据进行人脸识别。I/O(input/output)数据量为“x1”可以表示视频数据输入/输出的次数为1,即对应的数据量为1倍;数据量为“x2”可以表示视频数据输入/输出的次数为2,即对应的数据量为2倍。占用比为“x1%”可以表示插件调用引擎对视频数据处理时占用的资源为该引擎对应的硬件总资源的1%;占用比为“x2%”可以表示插件调用引擎对视频数据处理时占用的资源为该引擎对应的硬件总资源的2%;占用比为“x3%”可以表示插件调用引擎对视频数据处理时占用的资源为该引擎对应的硬件总资源的3%。
可以根据表中各插件实例对应的引擎的资源占用比、以及各插件实例对应的执行引擎的资源空闲状态,来确定候选的调用顺序。例如,对应引擎1,若处理器得到在视频解析卡121中插件实例1对应的引擎1当前的资源使用率为95%,而根据表中引擎的资源占用比确定若使用插件实例调用该引擎,将占用1%的资源,可知,若利用插件实例调用引擎1对视频数据进行处理,处理过程中资源使用率可以变为96%,若此时的资源使用率不超过预定最大阈值(例如是98%),则可以使用视频解析卡121上的插件实例1。参见上述方法,可以得到所有可用的插件实例,通过对各个视频解析卡上可用的插件实例进行排列组合,可以得到插件实例的候选的调用顺序。
步骤S4022,处理器在候选的调用顺序的数量为多个的情况下,确定候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序为插件实例的调用顺序。
也就是说,在步骤S4021中,若处理器确定的候选的调用顺序为多条的情况下,可以在多条候选的调用顺序中,选择其中一条最优的调用顺序作为最终的调用顺序。最优的调用顺序可以根据上下游插件实例之间跨视频解析卡进行交互的数据量确定,可以以跨视频解析卡进行交互的数据量最小对应的调用顺序作为最优的调用顺序。上下游插件实例之间跨视频解析卡进行交互的数据量,可以通过计算数据跨视频解析卡进行交互的总代价来确定。
图6示出根据本申请一实施例的计算数据跨视频解析卡进行交互的代价的示意图。如图6所示,以视频解析卡121-123为例,3张视频解析卡中分别都包括插件实例1、插件实例2和插件实例3,其中插件实例1可以表示插件1实例化后的对象,插件实例2可以表示插件2实例化后的对象,插件实例3可以表示插件3实例化后的对象。视频解析卡内部交互一次数据的代价可记为0,在视频解析卡121与视频解析卡122交互一次数据的代价(cost)记为15,视频解析卡121与视频解析卡123交互一次数据的代价记为10,视频解析卡122与视频解析卡123交互一次数据的代价记为7.5的情况下,由此可以计算得到解析数据流的过程中的总代价。例如对于图中的4条候选的调用顺序,第1条候选的调用顺序(如图中候选项1)对应的总代价为0,第2条候选的调用顺序(如图中候选项2)对应的总代价为10,第3条候选的调用顺序(如图中候选项3)对应的总代价为15,第4条候选的调用顺序(如图中候选项4)对应的总代价为15。因此,可以选择总代价最小的一项,即候选项1对应的调用顺序作为最终确定最优的调用顺序。
可选地,若存在多条总代价最小且值一致的候选的调用顺序,可以随机选择其中一条作为最终确定的调用顺序。图6中所示的计算方式仅作为一个示例。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在存在多条候选的调用顺序中,以跨视频解析卡交互的数据量最小的候选的调用顺序作为最终确定的调用顺序,可以通过动态调度提高底层硬件资源的利用率,且可以减少视频解析过程中的数据传输代价,总体提高了数据解析的效率。
可选地,如果存在突发的视频解析需求时,按当前部署的插件实例调用执行引擎可能无法满足视频解析的需求,因此,可以通过部署新的插件实例以对解析路径进行动态扩容,满足动态解析的需求。在此情况下,该步骤S402还可包括:
步骤S4023,处理器在候选的调用顺序的数量为零的情况下,根据执行引擎的资源空闲状态,在视频解析卡上部署新的插件实例。
也就是说,在步骤S4021中,若处理器确定的候选的调用顺序为零的情况下,可以表示当前不存在可行的调用顺序,则可以根据处理器获得的执行引擎的资源空闲状态,确定可用的执行引擎,例如,可以寻找当前的资源利用率符合要求(例如资源利用率与对应插件实例的占用比之和小于100%)的执行引擎,并在该执行引擎对应的视频解析卡中部署相应的新的插件实例。从而可以使得该新的插件实例能够调用该执行引擎实现相应的功能。
步骤S4024,处理器根据执行引擎的资源空闲状态和新的插件实例,确定插件实例的调用顺序。
在部署了新的插件实例之后,可以在插件实例的调用顺序中,加入该新部署的插件实例,使得存在可行的调用顺序,从而视频解析卡可以据此进行视频解析。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在不存在可行的调用顺序时,通过部署新的插件实例以对调用路径进行动态扩容,从而可以满足动态解析的需求,提高视频解析的实时性。
步骤S204,处理器根据插件实例的调用顺序,将数据流信息发送至视频解析卡。
其中,处理器可以通过硬件总线将数据流信息发送至视频解析卡,该硬件总线例如可以是外部设备互连总线接口(peripheral component interconnect express,PCIe)等。
以图3为例,对于数据流1,其对应的插件实例的调用顺序为:视频解析卡121中的业务插件实例1、视频解析卡121中的业务插件实例2。因此,可以首先将数据流信息发送至视频解析卡121中的业务插件实例1进行处理。
步骤S205,视频解析卡获取处理器根据插件实例的调用顺序发送的数据流信息。
其中,视频解析卡可以通过硬件总线(如PCIe总线)获取处理器发送的数据流信息。
步骤S206,视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
以图3为例,对于数据流2,其对应的插件实例的调用顺序为:视频解析卡121中的业务插件实例3、视频解析卡123中的业务插件实例2。根据该调用顺序,可以由视频解析卡121中的业务插件实例3可调用解码引擎对视频数据进行处理,再将处理后的数据发送至视频解析卡123,由视频解析卡123中的业务插件实例2分别调用缩放引擎和推理引擎对其进行处理。最终得到数据流2对应的视频解析结果。详细过程可参见下述。
根据本申请实施例,通过处理器在视频解析卡上部署插件实例,并通过插件实例调用底层的执行引擎,可以实现插件实例和底层执行引擎的分离,针对于不同视频数据解析的需求,可以灵活的调用不同视频解析卡上的插件实例以实现对视频的解析,以得到视频解析的结果。同时,通过获取各视频解析卡的执行引擎状态信息,以生成相应的数据流信息,确定解析视频时插件实例的调用顺序,可以提高各视频解析卡上的硬件资源的利用率,灵活、充分地利用不同视频解析卡上的硬件资源,提高了视频解析的效率。
图7示出根据本申请一实施例的视频解析方法的流程图。如图7所示,该步骤S206,可包括:
步骤S2061,视频解析卡根据数据流信息,确定第一插件实例对应的数据输入队列。
其中,第一插件实例为插件实例的调用顺序中的第一个插件实例。数据输入队列(input queue)中的每一项数据可以对应于一条数据流。
步骤S2062,视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列。
该队列可以采用先入先出(first in first out,FIFO)的方式工作,即第一插件实例可以优先处理先入队列的数据流。
可选地,数据输入队列中的每一项数据可以包括队列标识、时间戳、优先级信息、实际有效数据(即视频数据)。该步骤S2062,可包括:
视频解析卡根据优先级信息,通过第一插件实例,调用相应的执行引擎对所述数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
其中,优先级信息可以表示对应项数据的紧急程度,例如,优先级信息中优先级的值越大,可以指示对应项数据的紧急程度越高。从而,第一插件实例在对每项数据进行处理的过程中,可以在FIFO的基础上,优先处理对应优先级程度更高的数据流。
根据本申请实施例,通过在插件实例对应的数据输入队列中引入优先级信息,可以满足存在紧急业务的情况下视频解析的需要,在存在紧急业务的情况下可以使插件实例优先处理相应的视频数据,保证视频解析的实时性。
在第一插件实例对数据输入队列进行处理的过程中,可以调用相应的执行引擎实现对数据的处理,可选地,该步骤S2062,可包括:
视频解析卡通过所述第一插件实例,调用相应的执行引擎对应的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
图8示出根据本申请一实施例的调用执行引擎对视频数据进行处理的示意图。如图8所示,在调用执行引擎时,可以根据数据输入队列生成优先队列(priority queue),优先队列中的每一项数据可以包含要处理的数据(即视频数据)以及处理视频数据的方式(如处理函数),例如,对于推理引擎,处理视频数据的方式可以是所用到的推理模型。
如图8所示,可以执行引擎对优先队列中的每一项数据进行处理时,可以采用线程池的方式,线程池中的各个线程可以是对底层硬件资源划分后得到的。其中,线程池中并发的最大线程数量可根据硬件资源的大小决定,硬件资源越大,线程池中可并发执行的线程数量可以越大。线程池中的线程可以通过底层驱动接口,调用底层硬件功能模块中的硬件资源进行计算。
根据本申请实施例,视频解析卡通过在调用执行引擎时,通过执行引擎中的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,可以在执行引擎中实现多项数据解析任务的并发处理,提高处理效率,且通过线程池可以充分地利用底层硬件资源,提高硬件资源的利用率。
步骤S2063,视频解析卡以第一插件实例之后的第二插件实例作为新的第一插件实例,根据数据输出队列确定新的数据输入队列,重复执行视频解析卡通过第一插件实例调用相应的执行引擎,对数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为插件实例的调用顺序中的最后一个插件实例,得到视频解析结果。
在调用执行引擎对数据进行处理后,第一插件实例可以得到输出数据队列,该输出数据队列可以包括输入数据队列对应的各处理后的数据流。根据数据输出队列确定新的数据输入队列,可以是,按照各数据流对应的插件实例的调用顺序,将输出数据队列中各处理后的数据流分别发送给相应的第二插件实例(即对应的插件实例的调用顺序中,第一插件实例的下一个插件实例),以形成第二插件实例的数据输入队列,在将第二插件实例作为新的第一插件实例后,第二插件实例的数据输入队列也即新的第一插件实例的数据输入队列。
参见图9,示出根据本申请一实施例的插件实例实现的示意图。如图9所示,上游插件实例可以表示第一插件实例,下游插件实例可以表示第二插件实例。若数据流对应的插件实例的调用顺序包括第一插件实例、第二插件实例的情况下,可以首先将根据数据流信息输入上游插件实例的数据输入队列中。在上游插件实例调用执行引擎对其进行处理后,可以将其发送给下游插件实例,可以将其输入对应的下游插件实例的数据输入队列中,得到下游插件实例的数据输入队列。在下游插件实例调用执行引擎对其进行处理后,由于该下游插件实例为数据流对应的插件实例的调用顺序中最后一个插件实例,可以得到该数据流对应的视频解析结果。
根据本申请实施例,通过确定插件实例对应的数据输入队列,并按照插件实例的调用顺序依次调用插件实例对数据输入队列中的各项数据进行处理,该处理过程通过插件实例调用相应的执行引擎实现,可以实现对各视频解析卡上各插件实例的统一管理,以充分地利用视频解析卡上的硬件资源,实现高效的视频解析过程。
图10示出根据本申请一实施例的视频解析装置的结构图。该装置可用于上述处理器,如图10所示,该装置包括:
第一获取模块1001,用于获取视频数据;
第二获取模块1002,用于获取一个或多个视频解析卡的执行引擎状态信息;
生成模块1003,用于根据视频数据和执行引擎状态信息,生成数据流信息,数据流信息包括插件实例的调用顺序和视频数据;
发送模块1004,用于根据插件实例的调用顺序,将数据流信息发送至视频解析卡,数据流信息用于视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
根据本申请实施例,通过处理器在视频解析卡上部署插件实例,并通过插件实例调用底层的执行引擎,可以实现插件实例和底层执行引擎的分离,针对于不同视频数据解析的需求,可以灵活的调用不同视频解析卡上的插件实例以实现对视频的解析,以得到视频解析的结果。同时,通过获取各视频解析卡的执行引擎状态信息,以生成相应的数据流信息,确定解析视频时插件实例的调用顺序,可以提高各视频解析卡上的硬件资源的利用率,灵活、充分地利用不同视频解析卡上的硬件资源,提高了视频解析的效率。
可选地,执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,生成模块1003,用于:
根据视频数据的业务类型信息,确定业务类型对应的一个或多个插件,插件在视频解析卡上实例化为对应的一个或多个插件实例;
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序。
根据本申请实施例,通过根据满足业务需求的插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,来确定视频数据对应的插件实例的调用顺序,可以实现利用处理器对视频的解析流程进行动态的调度,以满足不同业务类型的需要,且在视频解析过程中可以充分利用底层硬件资源,实现硬件资源利用率的最大化,提高了视频解析效率。
可选地,根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序,包括:
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为多个的情况下,确定候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序为插件实例的调用顺序。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在存在多条候选的调用顺序中,以跨视频解析卡交互的数据量最小的候选的调用顺序作为最终确定的调用顺序,可以通过动态调度提高底层硬件资源的利用率,且可以减少视频解析过程中的数据传输代价,总体提高了数据解析的效率。
可选地,根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定数据流信息中插件实例的调用顺序,包括:
根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为零的情况下,根据执行引擎的资源空闲状态,在视频解析卡上部署新的插件实例;
根据执行引擎的资源空闲状态和新的插件实例,确定插件实例的调用顺序。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在不存在可行的调用顺序时,通过部署新的插件实例以对调用路径进行动态扩容,从而可以满足动态解析的需求,提高视频解析的实时性。
可选地,视频解析卡根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果,包括:
视频解析卡根据数据流信息,确定第一插件实例对应的数据输入队列,第一插件实例为插件实例的调用顺序中的第一个插件实例;
视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列;
视频解析卡以第一插件实例之后的第二插件实例作为新的第一插件实例,根据数据输出队列确定新的数据输入队列,重复执行视频解析卡通过第一插件实例调用相应的执行引擎,对数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为插件实例的调用顺序中的最后一个插件实例,得到视频解析结果。
根据本申请实施例,通过确定插件实例对应的数据输入队列,并按照插件实例的调用顺序依次调用插件实例对数据输入队列中的各项数据进行处理,该处理过程通过插件实例调用相应的执行引擎实现,可以实现对各视频解析卡上各插件实例的统一管理,以充分地利用视频解析卡上的硬件资源,实现高效的视频解析过程。
可选地,数据输入队列包括数据输入队列中一项或多项数据对应的优先级信息,视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
视频解析卡根据优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
根据本申请实施例,通过在插件实例对应的数据输入队列中引入优先级信息,可以满足存在紧急业务的情况下视频解析的需要,在存在紧急业务的情况下可以使插件实例优先处理相应的视频数据,保证视频解析的实时性。
可选地,视频解析卡通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
视频解析卡通过第一插件实例,调用相应的执行引擎对应的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,得到数据输出队列,线程池中并发的最大线程数量根据硬件资源的大小决定。
根据本申请实施例,视频解析卡通过在调用执行引擎时,通过执行引擎中的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,可以在执行引擎中实现多项数据解析任务的并发处理,提高处理效率,且通过线程池可以充分地利用底层硬件资源,提高硬件资源的利用率。
图11示出根据本申请一实施例的视频解析装置的结构图。该装置可用于上述视频解析卡,如图11所示,该装置包括:
第三获取模块1101,用于获取处理器根据插件实例的调用顺序发送的数据流信息,数据流信息为处理器根据视频数据和执行引擎状态信息生成,数据流信息包括插件实例的调用顺序和视频数据;
确定模块1102,用于根据插件实例的调用顺序,通过插件实例调用相应的执行引擎对视频数据进行处理,得到视频解析结果。
根据本申请实施例,通过处理器在视频解析卡上部署插件实例,并通过插件实例调用底层的执行引擎,可以实现插件实例和底层执行引擎的分离,针对于不同视频数据解析的需求,可以灵活的调用不同视频解析卡上的插件实例以实现对视频的解析,以得到视频解析的结果。同时,通过获取各视频解析卡的执行引擎状态信息,以生成相应的数据流信息,确定解析视频时插件实例的调用顺序,可以提高各视频解析卡上的硬件资源的利用率,灵活、充分地利用不同视频解析卡上的硬件资源,提高了视频解析的效率。
可选地,确定模块1102,用于:
根据数据流信息,确定第一插件实例对应的数据输入队列,第一插件实例为插件实例的调用顺序中的第一个插件实例;
通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列;
以第一插件实例的之后的第二插件实例作为新的第一插件实例,根据数据输出队列确定新的数据输入队列,重复执行通过第一插件实例调用相应的执行引擎,对数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为插件实例的调用顺序中的最后一个插件实例,得到视频解析结果。
根据本申请实施例,通过确定插件实例对应的数据输入队列,并按照插件实例的调用顺序依次调用插件实例对数据输入队列中的各项数据进行处理,该处理过程通过插件实例调用相应的执行引擎实现,可以实现对各视频解析卡上各插件实例的统一管理,以充分地利用视频解析卡上的硬件资源,实现高效的视频解析过程。
可选地,数据输入队列包括数据输入队列中一项或多项数据对应的优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
根据优先级信息,通过第一插件实例,调用相应的执行引擎对数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
根据本申请实施例,通过在插件实例对应的数据输入队列中引入优先级信息,可以满足存在紧急业务的情况下视频解析的需要,在存在紧急业务的情况下可以使插件实例优先处理相应的视频数据,保证视频解析的实时性。
可选地,通过第一插件实例,调用相应的执行引擎对数据输入队列进行处理,得到数据输出队列,包括:
通过第一插件实例,调用相应的执行引擎对应的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,得到数据输出队列,线程池中并发的最大线程数量根据硬件资源的大小决定。
根据本申请实施例,视频解析卡通过在调用执行引擎时,通过执行引擎中的线程池中的线程,对数据输入队列中的一项或多项数据进行处理,可以在执行引擎中实现多项数据解析任务的并发处理,提高处理效率,且通过线程池可以充分地利用底层硬件资源,提高硬件资源的利用率。
可选地,执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,数据流信息中插件实例的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定,插件在视频解析卡上实例化为对应的一个或多个插件实例,一个或多个插件根据视频数据的业务类型信息确定。
根据本申请实施例,通过根据满足业务需求的插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态,来确定视频数据对应的插件实例的调用顺序,可以实现利用处理器对视频的解析流程进行动态的调度,以满足不同业务类型的需要,且在视频解析过程中可以充分利用底层硬件资源,实现硬件资源利用率的最大化,提高了视频解析效率。
可选地,在候选的调用顺序的数量为多个的情况下,确定插件实例的调用顺序为候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序,候选的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在存在多条候选的调用顺序中,以跨视频解析卡交互的数据量最小的候选的调用顺序作为最终确定的调用顺序,可以通过动态调度提高底层硬件资源的利用率,且可以减少视频解析过程中的数据传输代价,总体提高了数据解析的效率。
可选地,在候选的调用顺序的数量为零的情况下,插件实例的调用顺序根据执行引擎的资源空闲状态和新的插件实例确定,新的插件实例为根据执行引擎的资源空闲状态,在视频解析卡上部署的,候选的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和执行引擎的资源空闲状态确定。
根据本申请实施例,通过处理器根据插件对应的执行引擎的资源消耗信息和当前的执行引擎的资源空闲状态,确定候选的调用顺序,并在不存在可行的调用顺序时,通过部署新的插件实例以对调用路径进行动态扩容,从而可以满足动态解析的需求,提高视频解析的实时性。
本申请的实施例提供了一种视频解析装置,包括:处理器以及用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令时实现上述视频解析方法。
本申请的实施例提供了一种终端设备,该终端设备可以执行上述视频解析方法。
本申请的实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述视频解析方法。
本申请的实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述视频解析方法。
图12示出根据本申请一实施例的电子设备1200的结构图。如图12所示,该电子设备1200可以是上述视频解析系统100。该电子设备1200包括至少一个处理器1801,至少一个存储器1802、至少一个通信接口1803。此外,该电子设备还可以包括天线等通用部件,在此不再详述。
下面结合图12对电子设备1200的各个构成部件进行具体的介绍。
处理器1801可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integratedcircuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。处理器1801可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphicsprocessing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器也可以是上述处理器110。
通信接口1803,用于与其他电子设备或通信网络通信,如以太网,无线接入网(RAN),核心网,无线局域网(Wireless Local Area Networks,WLAN)等。
存储器1802可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器1802用于存储执行以上方案的应用程序代码,并由处理器1801来控制执行。所述处理器1801用于执行所述存储器1802中存储的应用程序代码。
可选地,该电子设备1200还可包括上述视频解析卡121-123,视频解析卡通过硬件总线可以与处理器进行连接,以实现上述视频解析方法。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RandomAccess Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(Electrically Programmable Read-Only-Memory,EPROM或闪存)、静态随机存取存储器(Static Random-Access Memory,SRAM)、便携式压缩盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能盘(Digital Video Disc,DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
这里所描述的计算机可读程序指令或代码可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(Instruction Set Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(Local Area Network,LAN)或广域网(WideArea Network,WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(Field-ProgrammableGate Array,FPGA)或可编程逻辑阵列(Programmable Logic Array,PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
这里参照根据本申请实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件(例如电路或ASIC(Application SpecificIntegrated Circuit,专用集成电路))来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (19)
1.一种视频解析方法,其特征在于,所述方法包括:
获取视频数据;
获取一个或多个视频解析卡的执行引擎状态信息;
根据所述视频数据和所述执行引擎状态信息,生成数据流信息,所述数据流信息包括插件实例的调用顺序和所述视频数据;
根据所述插件实例的调用顺序,将所述数据流信息发送至视频解析卡,所述数据流信息用于视频解析卡根据所述插件实例的调用顺序,通过插件实例调用相应的执行引擎对所述视频数据进行处理,得到视频解析结果。
2.根据权利要求1所述的方法,其特征在于,所述执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,所述根据所述视频数据和所述执行引擎状态信息,生成数据流信息,包括:
根据所述视频数据的业务类型信息,确定所述业务类型对应的一个或多个插件,所述插件在视频解析卡上实例化为对应的一个或多个插件实例;
根据所述一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态,确定所述数据流信息中所述插件实例的调用顺序。
3.根据权利要求2所述的方法,其特征在于,所述根据所述一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态,确定所述数据流信息中所述插件实例的调用顺序,包括:
根据所述一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为多个的情况下,确定候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序为所述插件实例的调用顺序。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态,确定所述数据流信息中所述插件实例的调用顺序,包括:
根据所述一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态,确定候选的调用顺序;
在候选的调用顺序的数量为零的情况下,根据所述执行引擎的资源空闲状态,在视频解析卡上部署新的插件实例;
根据所述执行引擎的资源空闲状态和所述新的插件实例,确定所述插件实例的调用顺序。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述视频解析卡根据所述插件实例的调用顺序,通过插件实例调用相应的执行引擎对所述视频数据进行处理,得到视频解析结果,包括:
所述视频解析卡根据所述数据流信息,确定第一插件实例对应的数据输入队列,所述第一插件实例为所述插件实例的调用顺序中的第一个插件实例;
所述视频解析卡通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列进行处理,得到数据输出队列;
所述视频解析卡以所述第一插件实例之后的第二插件实例作为新的第一插件实例,根据所述数据输出队列确定新的数据输入队列,重复执行所述视频解析卡通过所述第一插件实例调用相应的执行引擎,对所述数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为所述插件实例的调用顺序中的最后一个插件实例,得到所述视频解析结果。
6.根据权利要求5所述的方法,其特征在于,所述数据输入队列包括所述数据输入队列中一项或多项数据对应的优先级信息,所述视频解析卡通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列进行处理,得到数据输出队列,包括:
所述视频解析卡根据所述优先级信息,通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
7.根据权利要求5或6所述的方法,所述视频解析卡通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列进行处理,得到数据输出队列,包括:
所述视频解析卡通过所述第一插件实例,调用相应的执行引擎对应的线程池中的线程,对所述数据输入队列中的一项或多项数据进行处理,得到数据输出队列,所述线程池中并发的最大线程数量根据硬件资源的大小决定。
8.一种视频解析方法,其特征在于,所述方法包括:
获取处理器根据插件实例的调用顺序发送的数据流信息,所述数据流信息为所述处理器根据视频数据和执行引擎状态信息生成,所述数据流信息包括所述插件实例的调用顺序和所述视频数据;
根据所述插件实例的调用顺序,通过插件实例调用相应的执行引擎对所述视频数据进行处理,得到视频解析结果。
9.根据权利要求8所述的方法,其特征在于,所述根据所述插件实例的调用顺序,通过插件实例调用相应的执行引擎对所述视频数据进行处理,得到视频解析结果,包括:
根据所述数据流信息,确定第一插件实例对应的数据输入队列,所述第一插件实例为所述插件实例的调用顺序中的第一个插件实例;
通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列进行处理,得到数据输出队列;
以所述第一插件实例的之后的第二插件实例作为新的第一插件实例,根据所述数据输出队列确定新的数据输入队列,重复执行所述通过所述第一插件实例调用相应的执行引擎,对所述数据输入队列进行处理,得到数据输出队列及之后的步骤,直至第二插件实例为所述插件实例的调用顺序中的最后一个插件实例,得到所述视频解析结果。
10.根据权利要求9所述的方法,其特征在于,所述数据输入队列包括所述数据输入队列中一项或多项数据对应的优先级信息,所述通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列进行处理,得到数据输出队列,包括:
根据所述优先级信息,通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列中的一项或多项数据进行处理,得到数据输出队列。
11.根据权利要求9或10所述的方法,所述通过所述第一插件实例,调用相应的执行引擎对所述数据输入队列进行处理,得到数据输出队列,包括:
通过所述第一插件实例,调用相应的执行引擎对应的线程池中的线程,对所述数据输入队列中的一项或多项数据进行处理,得到数据输出队列,所述线程池中并发的最大线程数量根据硬件资源的大小决定。
12.根据权利要求8-11任一项所述的方法,其特征在于,所述执行引擎状态信息包括一个或多个视频解析卡的一个或多个执行引擎的资源空闲状态,所述数据流信息中所述插件实例的调用顺序根据一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态确定,所述插件在视频解析卡上实例化为对应的一个或多个插件实例,所述一个或多个插件根据所述视频数据的业务类型信息确定。
13.根据权利要求12所述的方法,其特征在于,在候选的调用顺序的数量为多个的情况下,确定所述插件实例的调用顺序为候选的调用顺序中插件实例跨视频解析卡进行交互的数据量最小的一个候选的调用顺序,所述候选的调用顺序根据所述一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态确定。
14.根据权利要求12或13所述的方法,其特征在于,在候选的调用顺序的数量为零的情况下,所述插件实例的调用顺序根据所述执行引擎的资源空闲状态和新的插件实例确定,所述新的插件实例为根据所述执行引擎的资源空闲状态,在视频解析卡上部署的,所述候选的调用顺序根据所述一个或多个插件对应的执行引擎的资源消耗信息和所述执行引擎的资源空闲状态确定。
15.一种视频解析装置,其特征在于,所述装置包括:
第一获取模块,用于获取视频数据;
第二获取模块,用于获取一个或多个视频解析卡的执行引擎状态信息;
生成模块,用于根据所述视频数据和所述执行引擎状态信息,生成数据流信息,所述数据流信息包括插件实例的调用顺序和所述视频数据;
发送模块,用于根据所述插件实例的调用顺序,将所述数据流信息发送至视频解析卡,所述数据流信息用于视频解析卡根据所述插件实例的调用顺序,通过插件实例调用相应的执行引擎对所述视频数据进行处理,得到视频解析结果。
16.一种视频解析装置,其特征在于,所述装置包括:
第三获取模块,用于获取处理器根据插件实例的调用顺序发送的数据流信息,所述数据流信息为所述处理器根据视频数据和执行引擎状态信息生成,所述数据流信息包括所述插件实例的调用顺序和所述视频数据;
确定模块,用于根据所述插件实例的调用顺序,通过插件实例调用相应的执行引擎对所述视频数据进行处理,得到视频解析结果。
17.一种视频解析装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现权利要求1-7中任意一项所述的方法,或者实现权利要求8-14中任意一项所述的方法。
18.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-7中任意一项所述的方法,或者,实现权利要求8-14中任意一项所述的方法。
19.一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行权利要求1-7中任意一项所述的方法,或者,执行权利要求8-14中任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211042853.2A CN117667245A (zh) | 2022-08-29 | 2022-08-29 | 视频解析方法、装置和存储介质 |
PCT/CN2023/100986 WO2024045780A1 (zh) | 2022-08-29 | 2023-06-19 | 视频解析方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211042853.2A CN117667245A (zh) | 2022-08-29 | 2022-08-29 | 视频解析方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667245A true CN117667245A (zh) | 2024-03-08 |
Family
ID=90077515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211042853.2A Pending CN117667245A (zh) | 2022-08-29 | 2022-08-29 | 视频解析方法、装置和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117667245A (zh) |
WO (1) | WO2024045780A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7830387B2 (en) * | 2006-11-07 | 2010-11-09 | Microsoft Corporation | Parallel engine support in display driver model |
CN112650578A (zh) * | 2019-10-12 | 2021-04-13 | 阿里巴巴集团控股有限公司 | 数据处理方法、调度平台、视频存储平台和视频处理引擎 |
CN112132120B (zh) * | 2020-11-24 | 2021-03-30 | 北京沃东天骏信息技术有限公司 | 用于视频结构化的方法及装置 |
-
2022
- 2022-08-29 CN CN202211042853.2A patent/CN117667245A/zh active Pending
-
2023
- 2023-06-19 WO PCT/CN2023/100986 patent/WO2024045780A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024045780A1 (zh) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11055516B2 (en) | Behavior prediction method, behavior prediction system, and non-transitory recording medium | |
CN109409513B (zh) | 一种基于神经网络的任务处理方法及相关设备 | |
Ali et al. | RES: Real-time video stream analytics using edge enhanced clouds | |
WO2018102062A1 (en) | Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization | |
CN108829469B (zh) | 一种应用程序页面展示方法及装置 | |
CN107492383B (zh) | 直播内容的筛选方法、装置、设备及存储介质 | |
CN107295352B (zh) | 一种视频压缩方法、装置、设备及存储介质 | |
CN109274999A (zh) | 一种视频播放控制方法、装置、设备及介质 | |
US20220374219A1 (en) | Deployment of service | |
CN112351337B (zh) | 视频质检方法、装置、计算机设备和存储介质 | |
CN112749666B (zh) | 一种动作识别模型的训练及动作识别方法与相关装置 | |
WO2023124428A1 (zh) | 芯片、加速卡以及电子设备、数据处理方法 | |
CN116456496B (zh) | 资源调度的方法、存储介质及电子设备 | |
CN117667245A (zh) | 视频解析方法、装置和存储介质 | |
CN110704182A (zh) | 深度学习的资源调度方法、装置及终端设备 | |
CN112088369B (zh) | 音频和视频多媒体的修改和呈现 | |
WO2023124361A1 (zh) | 芯片、加速卡、电子设备和数据处理方法 | |
CN112637538B (zh) | 用于优化视频分析的智能标签方法、系统、介质及终端 | |
CN112926420B (zh) | 一种显示设备和菜单文字识别方法 | |
CN114390307A (zh) | 图像画质增强方法、装置、终端及可读存储介质 | |
CN112835626A (zh) | 流水线配置方法、装置、可读存储介质和电子设备 | |
WO2021229345A1 (en) | Optimized deployment of analytic models in an edge topology | |
CN113391795A (zh) | 一种应用场景和软件开发包自适应映射的实现方法和系统 | |
CN113992493A (zh) | 视频处理方法、系统、设备及存储介质 | |
US9066071B2 (en) | Method and apparatus for providing screen data |
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 |