本发明涉及计算机领域,具体而言,涉及一种多媒体数据的处理方法及装置。
背景技术:
相关技术中deepstream技术实现了从摄像头/磁盘上获取视频流,并进行加速的深度学习前向的一套框架,整体基于gstreamer的流处理pipeline来完成。其中视频解码依赖了gpu解码模块,深度学习前向加速依赖了tensorrt加速引擎。但是,现有deepstream技术存在下列缺点:首先,其仅适配指定型号的gpu设备,其他平台无法使用,导致通用性较差。此外,在使用官方插件时比较简单,但是需要自定义实现一些功能时开发门槛高(需要基于gstreamer使用的c语言gobject编程模型开发),导致易用性较差。从而能够看出,相关技术中多媒体数据的处理效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种多媒体数据的处理方法及装置,以至少解决多媒体数据的处理效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种多媒体数据的处理方法,包括:从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据;
从预定的一组解码插件中选择一个或多个解码插件,其中所述一个或多个解码插件中的每一个与所述一路或多路目标多媒体数据中的每一路对应;使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据;
将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,其中,所述共享内存中的存储区域与深度学习计算服务对应;
在所述深度学习计算服务被请求的情况下,从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据;
对所述一路或多路解码数据执行所述深度学习计算服务对应的目标深度学习计算处理。
根据本发明实施例的另一方面,还提供了一种多媒体数据的处理装置,包括:
第一获取模块,用于从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据;
解码模块,用于从预定的一组解码插件中选择一个或多个解码插件,其中所述一个或多个解码插件中的每一个与所述一路或多路目标多媒体数据中的每一路对应;使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据;
存储模块,用于将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,其中,所述共享内存中的存储区域与深度学习计算服务对应;
第二获取模块,用于在所述深度学习计算服务被请求的情况下,从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据;
执行模块,用于对所述一路或多路解码数据执行所述深度学习计算服务对应的目标深度学习计算处理。
可选地,所述解码模块,包括:
第一创建单元,用于在所述一个或多个解码插件中为所述每一路目标多媒体数据创建目标实例;
第一解码单元,用于使用所述目标实例对对应的一路所述目标多媒体数据进行解码。
可选地,在为所述每一路目标多媒体数据选择对应的解码插件时,所述每一路目标多媒体数据被视为当前多媒体数据,其中,所述解码模块,用于:
在所述一组解码插件中为所述当前多媒体数据选择与目标条件匹配的解码插件,其中,所述目标条件包括以下至少之一:所述一个或多个多媒体数据产生设备中产生所述当前多媒体数据的目标设备的设备属性、所述当前多媒体数据的数据格式、是否需要硬件解码。
可选地,所述多路目标多媒体数据为n路目标多媒体数据,n为大于或等于1的自然数,其中,所述解码模块,包括:
选择单元,用于在所述一组解码插件中为所述每一路目标多媒体数据选择对应的目标解码插件,得到n个目标解码插件;
第二创建单元,用于创建所述n个目标解码插件对应的实例,得到n个目标实例;
第二解码单元,用于使用所述n个目标实例中的每一个目标实例对对应的一路所述目标多媒体数据进行解码,得到n路解码数据。
可选地,所述第二解码单元,用于:
通过第一进程中的n个线程并行地调用所述n个目标实例对对应的一路所述目标多媒体数据进行解码。
可选地,所述存储模块,用于:
通过所述n个线程并行地将所述n路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域。
可选地,所述存储模块用于:将解码后得到的所述一路或多路解码数据直接写入所述共享内存中每一路解码数据对应的存储区域;
所述第二获取模块用于:从所述共享内存中与所述深度学习计算服务对应的所述存储区域中读取所述一路或多路解码数据;
所述执行模块用于:直接使用读取到的所述一路或多路解码数据执行所述目标深度学习计算处理。
可选地,在所述一路或多路解码数据为yuv数据的情况下,所述装置还用于:
将所述yuv数据在所述共享内存中的存储地址输入到目标转换函数,得到rgb数据;
使用所述rgb数据执行所述目标深度学习计算处理。
可选地,所述第一获取模块用于:通过第一进程从所述一个或多个多媒体数据产生设备处获取所述多媒体数据,得到所述一路或多路目标多媒体数据;
所述解码模块用于:通过所述第一进程在所述一个或多个解码插件中使用与每一路所述目标多媒体数据对应的解码插件对每一路所述目标多媒体数据进行解码,得到所述一路或多路解码数据;
所述存储模块用于:通过所述第一进程将所述一路或多路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域;
所述第二获取模块用于:通过第二进程从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据。
可选地,所述装置还包括:第三获取模块,用于在从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据之前,获取目标配置文件,其中,所述目标配置文件用于被所述第一进程和所述第二进程读取,所述目标配置文件用于指示对所述一路或多路目标多媒体数据进行解码得到的一路或多路解码数据与深度学习计算服务之间的对应关系;
所述存储模块用于:通过所述第一进程读取所述目标配置文件,并按照所述目标配置文件中指示的所述对应关系将所述一路或多路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域;
所述第二获取模块用于:通过第二进程读取所述目标配置文件,并按照所述目标配置文件中指示的所述对应关系从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据。
可选地,所述装置还包括:
第四获取模块,用于在从一个或多个多媒体数据产生设备处获取多媒体数据之前,获取深度学习算法插件的配置信息;
创建模块,用于根据所述配置信息创建所述深度学习算法插件的实例,其中,所述深度学习算法插件的实例与所述深度学习计算服务对应,所述深度学习算法插件的实例在运行时用于触发从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据的步骤。
可选地,所述装置还包括:
添加模块,用于将待添加的解码插件加入到所述一组解码插件中;和/或
停用模块,用于停用所述一组解码插件中的部分解码插件。
在本发明实施例中,采用从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据;从预定的一组解码插件中选择一个或多个解码插件,其中一个或多个解码插件中的每一个与一路或多路目标多媒体数据中的每一路对应;使用一个或多个解码插件对一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据;将一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,其中,共享内存中的存储区域与深度学习计算服务对应;在深度学习计算服务被请求的情况下,从共享内存中与深度学习计算服务对应的存储区域中获取一路或多路解码数据;对一路或多路解码数据执行深度学习计算服务对应的目标深度学习计算处理的方式,通过使用预定的一组解码插件中与每一路目标多媒体数据对应的解码插件对每一路目标多媒体数据进行解码,得到一路或多路解码数据,使得解码过程能够使用多种解码插件,提高了处理过程的通用性,解码过程使用的解码方式能够与处理的目标多媒体数据适配,提高了处理过程的易用性,从而实现了提高多媒体数据的处理效率的技术效果,进而解决了多媒体数据的处理效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的多媒体数据的处理方法的示意图;
图2是根据本发明实施例的一种可选的多媒体数据的处理方法的应用环境示意图;
图3是根据本发明可选的实施方式的一种可选的多媒体数据的处理方法的示意图一;
图4是根据本发明可选的实施方式的一种可选的多媒体数据的处理方法的示意图二;
图5是根据本发明实施例的一种可选的多媒体数据的处理装置的示意图;
图6是根据本发明实施例的一种可选的多媒体数据的处理方法的应用场景示意图一;
图7是根据本发明实施例的一种可选的多媒体数据的处理方法的应用场景示意图二;以及
图8是根据本发明实施例的一种可选的电子装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种多媒体数据的处理方法,如图1所示,该方法包括:
步骤s102,从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据;
步骤s104,从预定的一组解码插件中选择一个或多个解码插件,其中所述一个或多个解码插件中的每一个与所述一路或多路目标多媒体数据中的每一路对应;使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据;
步骤s106,将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,其中,所述共享内存中的存储区域与深度学习计算服务对应;
步骤s108,在所述深度学习计算服务被请求的情况下,从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据;
步骤s110,对所述一路或多路解码数据执行所述深度学习计算服务对应的目标深度学习计算处理。
可选地,在本实施例中,上述多媒体数据的处理方法可以应用于如图2所示的设备202所构成的硬件环境中。如图2所示,设备202从一个或多个多媒体数据产生设备(多媒体数据产生设备1-多媒体数据产生设备n)处获取多媒体数据,得到一路或多路目标多媒体数据(目标多媒体数据1-目标多媒体数据n);从预定的一组解码插件中选择一个或多个解码插件,其中一个或多个解码插件中的每一个与一路或多路目标多媒体数据中的每一路对应;使用一个或多个解码插件对一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据(解码数据1-解码数据n);将一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域(存储区域1-存储区域n),其中,共享内存中的存储区域与深度学习计算服务对应;在深度学习计算服务被请求的情况下,从共享内存中与深度学习计算服务对应的存储区域中获取一路或多路解码数据;对一路或多路解码数据执行深度学习计算服务对应的目标深度学习计算处理。在本实施例中,降低了数据产生(取流)、数据存储和数据处理三个流程的耦合性,并且剥离了数据采集、预处理,使得算法模块可以均衡利用cpu/gpu/vpu的计算资源进行深度学习计算,大大提高设备整体的运算能力。
可选地,在本实施例中,上述多媒体数据的处理方法可以但不限于应用于对多媒体数据进行处理的场景中。其中,上述设备可以但不限于为用于进行多媒体数据处理的终端设备或者服务器设备等等。例如:上述多媒体数据的处理方法可部署于目前几大主流平台,如nvidiategra和intelmovidius为代表的soc设备,如带geforcegpu的个人pc机,或者是带有tesla/quadrogpu的服务器设备。
可选地,在本实施例中,上述多媒体数据可以但不限于包括:音频数据,视频数据,图像数据等等。多媒体数据的传输形式可以但不限于包括:多媒体文件、多媒体码流等等。
可选地,在本实施例中,上述一组解码插件可以但不限于包括:中央处理器cpu,图像处理器gpu,视频处理单元vpu等等。
可选地,在本实施例中,多媒体数据产生设备可以但不限于包括:多媒体客户端、摄像设备(球形摄像头、枪形摄像头、摄像机、数码相机、运动相机等等)、移动终端等等。
可选地,在本实施例中,共享内存被划分为与一路或多路解码数据对应的存储区域,共享内存中的存储区域与深度学习计算服务对应。
可选地,在本实施例中,上述深度学习计算服务可以但不限于包括:人脸识别、人脸跟踪、人体跟踪、人体识别、语义分割等等。
可见,通过上述步骤,通过使用预定的一组解码插件中与每一路目标多媒体数据对应的解码插件对每一路目标多媒体数据进行解码,得到一路或多路解码数据,使得解码过程能够使用多种解码插件,提高了处理过程的通用性,解码过程使用的解码方式能够与处理的目标多媒体数据适配,提高了处理过程的易用性,从而实现了提高多媒体数据的处理效率的技术效果,进而解决了多媒体数据的处理效率较低的技术问题。
作为一种可选的方案,使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据,包括:
s1,在所述一个或多个解码插件中为所述每一路目标多媒体数据创建目标实例;
s2,使用所述目标实例对对应的一路所述目标多媒体数据进行解码。
可选地,在本实施例中,上述解码的过程可以但不限于通过创建解码插件的目标实例,并通过目标实例来进行解码的过程来实现。
比如:在一组解码插件中为视频文件的多媒体数据选择对应的目标解码插件为gpu,创建gpu的目标实例,使用gpu的目标实例对视频文件进行解码。
作为一种可选的方案,在为所述每一路目标多媒体数据选择对应的解码插件时,所述每一路目标多媒体数据被视为当前多媒体数据,其中,从预定的一组解码插件中选择一个或多个解码插件,包括:
s1,在所述一组解码插件中为所述当前多媒体数据选择与目标条件匹配的解码插件,其中,所述目标条件包括以下至少之一:所述一个或多个多媒体数据产生设备中产生所述当前多媒体数据的目标设备的设备属性、所述当前多媒体数据的数据格式、是否需要硬件解码。
可选地,在本实施例中,可以但不限于根据所述一个或多个多媒体数据产生设备中产生所述当前多媒体数据的目标设备的设备属性、所述当前多媒体数据的数据格式、是否需要硬件解码等一个或者多个目标条件来选择与当前多媒体数据匹配的解码插件。从而使得选择的解码插件是适合对当前多媒体数据进行处理的。
在一个可选的实施方式中,如图3所示,取流模块由取流管理和各类取流解码插件组成,为了兼顾效率和通用性,取流模块实现了硬件平台的硬解码器插件的集成,称取流硬解插件,如intel集成gpu上的qsv硬解码器插件、nvidia的tegra平台上gstreamer硬解码器插件和geforce/tesla/quadro平台上的cuda硬解码器插件。取流模块在实际运行时根据硬件平台信息选择并创建、启动对应的取流硬解插件。
作为一种可选的方案,所述一路或多路目标多媒体数据为n路目标多媒体数据,n为大于或等于1的自然数,其中,
从预定的一组解码插件中选择一个或多个解码插件包括:在所述一组解码插件中为所述每一路目标多媒体数据选择对应的目标解码插件,得到n个目标解码插件;
使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据包括:
s1,创建所述n个目标解码插件的实例,得到n个目标实例;
s2,使用所述n个目标实例中的每一个目标实例对对应的一路所述目标多媒体数据进行解码,得到n路解码数据。
可选地,在本实施例中,如果为几路的目标多媒体数据均选择了同一个目标解码插件,则为这几路的目标多媒体数据分别创建各自对应的目标实例分别对多媒体数据进行解码处理。
作为一种可选的方案,所述使用所述n个目标实例中的每一个目标实例对对应的一路所述目标多媒体数据进行解码,包括:
s1,通过第一进程中的n个线程并行地调用所述n个目标实例对对应的一路所述目标多媒体数据进行解码。
可选地,在本实施例中,可以但不限于使用单独的第一进程来进行解码的处理过程。在解码过程中可以创建n个线程并行地调用所述n个目标实例对对应的一路所述目标多媒体数据进行解码。
作为一种可选的方案,将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,包括:
s1,通过所述n个线程并行地将所述n路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域。
可选地,在本实施例中,还可以但不限于使用第一进程中创建的n个线程并行地将所述n路解码数据分别存入所述共享内存中对应的存储区域。
例如:一个取流进程中10个线程并行对10路输入进行解码处理,在每一路上串行进行取流,解码,存储到共享内存,按照预先分配的10个区域进行存储,互相隔离。
作为一种可选的方案,将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,包括:将解码后得到的所述一路或多路解码数据直接写入所述共享内存中每一路解码数据对应的存储区域;
从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据,包括:从所述共享内存中与所述深度学习计算服务对应的存储区域中读取所述一路或多路解码数据;
对所述一路或多路解码数据执行所述深度学习计算服务对应的目标深度学习计算处理,包括:直接使用读取到的所述一路或多路解码数据执行所述目标深度学习计算处理。
可选地,在本实施例中,对于共享内存的读写过程均不必进行缓存的处理,可以直接对共享内存进行读写。
作为一种可选的方案,在所述一路或多路解码数据为yuv数据的情况下,从所述共享内存中与所述深度学习计算服务对应的存储区域中读取所述一路或多路解码数据,直接使用读取到的所述一路或多路解码数据执行所述目标深度学习计算处理,包括:
s1,将所述yuv数据在所述共享内存中的存储地址输入到目标转换函数,得到rgb数据;
s2,使用所述rgb数据执行所述目标深度学习计算处理。
可选地,在本实施例中,可以但不限于通过目标转换函数来实现对共享内存中的数据进行读写。从而实现yuv数据与rgb数据之间的转换。
在一个可选的实施方式中,为了最大化提升数据传输的效率,共享内存模块设计时避免了多余的数据拷贝操作,如图4所示。数据的生产者(相当于取流服务)和消费者(相当于算法服务)均直接使用共享内存中分配的内存块进行读写,而不需要有将数据拷贝到共享内存,再拷贝出共享内存的操作。在本框架中,数据传输的流程还针对解码后的视频数据做了额外的优化,写入视频帧时写入yuv格式,获取视频帧时转换为rgb格式,并且转换的过程适配了arm平台neon指令集及x86平台sse/avx指令集优化。
作为一种可选的方案,从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据,包括:通过第一进程从所述一个或多个多媒体数据产生设备处获取所述多媒体数据,得到所述一路或多路目标多媒体数据;
使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据,包括:通过所述第一进程在所述一个或多个解码插件中使用与每一路所述目标多媒体数据对应的解码插件对每一路所述目标多媒体数据进行解码,得到所述一路或多路解码数据;
将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,包括:通过所述第一进程将所述一路或多路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域;
从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据,包括:通过第二进程从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据。
可选地,在本实施例中,可以通过第一进程处理取流解码过程,通过第二进程处理数据的读取运算过程。
在相关技术中,视频解码、数据预处理、深度学习算法前向计算等步骤合在一个流水线处理流程中,耦合程度较高,问题定位和调试困难,导致扩展性较差。通过上述步骤,将取流模块与算法处理模块分离,扩展性更好。
作为一种可选的方案,在从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据之前,所述方法还包括:获取目标配置文件,其中,所述目标配置文件用于被所述第一进程和所述第二进程读取,所述目标配置文件用于指示对所述一路或多路目标多媒体数据进行解码得到的一路或多路解码数据与深度学习计算服务之间的对应关系;
通过所述第一进程将所述一路或多路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域,包括:通过所述第一进程读取所述目标配置文件,并按照所述目标配置文件中指示的所述对应关系将所述一路或多路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域;
所述通过第二进程从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据,包括:通过第二进程读取所述目标配置文件,并按照所述目标配置文件中指示的所述对应关系从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据。
可选地,在本实施例中,通过配置文件实现数据存储位置的对应以及数据读取位置的对应。
例如:算法进程和取流进程共同读取一个配置文件,配置文件说明了摄像头与算法服务的对应关系。
作为一种可选的方案,在从一个或多个多媒体数据产生设备处获取多媒体数据之前,还包括:
s1,获取深度学习算法插件的配置信息;
s2,根据所述配置信息创建所述深度学习算法插件的实例,其中,所述深度学习算法插件的实例与所述深度学习计算服务对应,所述深度学习算法插件的实例在运行时用于触发从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据的步骤。
可选地,在本实施例中,用户可以对插件进行配置,还可以基于插件模板进行创建新的插件。这样,用户只要对插件进行配置,以及,基于插件模板进行创建新的插件即可完成深度学习算法的配置,提高了系统的易用性和系统的配置效率。
作为一种可选的方案,还包括:
s1,将待添加的解码插件加入到所述一组解码插件中;和/或
s2,停用所述一组解码插件中的部分解码插件。
可选地,在本实施例中,可以对解码插件进行添加和停用等操作。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述多媒体数据的处理方法的多媒体数据的处理装置,如图5所示,该装置包括:
第一获取模块502,用于从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据;
解码模块504,用于从预定的一组解码插件中选择一个或多个解码插件,其中所述一个或多个解码插件中的每一个与所述一路或多路目标多媒体数据中的每一路对应;使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据;
存储模块506,用于将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,其中,所述共享内存中的存储区域与深度学习计算服务对应;
第二获取模块508,用于在所述深度学习计算服务被请求的情况下,从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据;
执行模块510,用于对所述一路或多路解码数据执行所述深度学习计算服务对应的目标深度学习计算处理。
可选地,所述解码模块,包括:
第一创建单元,用于在所述一个或多个解码插件中为所述每一路目标多媒体数据创建目标实例;
第一解码单元,用于使用所述目标实例对对应的一路所述目标多媒体数据进行解码。
可选地,在为所述每一路目标多媒体数据选择对应的解码插件时,所述每一路目标多媒体数据被视为当前多媒体数据,其中,所述解码模块,用于:
在所述一组解码插件中为所述当前多媒体数据选择与目标条件匹配的解码插件,其中,所述目标条件包括以下至少之一:所述一个或多个多媒体数据产生设备中产生所述当前多媒体数据的目标设备的设备属性、所述当前多媒体数据的数据格式、是否需要硬件解码。
可选地,所述多路目标多媒体数据为n路目标多媒体数据,n为大于或等于1的自然数,其中,所述解码模块,包括:
选择单元,用于在所述一组解码插件中为所述每一路目标多媒体数据选择对应的目标解码插件,得到n个目标解码插件;
第二创建单元,用于创建所述n个目标解码插件对应的实例,得到n个目标实例;
第二解码单元,用于使用所述n个目标实例中的每一个目标实例对对应的一路所述目标多媒体数据进行解码,得到n路解码数据。
可选地,所述第二解码单元,用于:
通过第一进程中的n个线程并行地调用所述n个目标实例对对应的一路所述目标多媒体数据进行解码。
可选地,所述存储模块,用于:
通过所述n个线程并行地将所述n路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域。
可选地,所述存储模块用于:将解码后得到的所述一路或多路解码数据直接写入所述共享内存中每一路解码数据对应的存储区域;
所述第二获取模块用于:从所述共享内存中与所述深度学习计算服务对应的所述存储区域中读取所述一路或多路解码数据;
所述执行模块用于:直接使用读取到的所述一路或多路解码数据执行所述目标深度学习计算处理。
可选地,在所述一路或多路解码数据为yuv数据的情况下,所述装置还用于:
将所述yuv数据在所述共享内存中的存储地址输入到目标转换函数,得到rgb数据;
使用所述rgb数据执行所述目标深度学习计算处理。
可选地,所述第一获取模块用于:通过第一进程从所述一个或多个多媒体数据产生设备处获取所述多媒体数据,得到所述一路或多路目标多媒体数据;
所述解码模块用于:通过所述第一进程在所述一个或多个解码插件中使用与每一路所述目标多媒体数据对应的解码插件对每一路所述目标多媒体数据进行解码,得到所述一路或多路解码数据;
所述存储模块用于:通过所述第一进程将所述一路或多路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域;
所述第二获取模块用于:通过第二进程从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据。
可选地,所述装置还包括:第三获取模块,用于在从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据之前,获取目标配置文件,其中,所述目标配置文件用于被所述第一进程和所述第二进程读取,所述目标配置文件用于指示对所述一路或多路目标多媒体数据进行解码得到的一路或多路解码数据与深度学习计算服务之间的对应关系;
所述存储模块用于:通过所述第一进程读取所述目标配置文件,并按照所述目标配置文件中指示的所述对应关系将所述一路或多路解码数据中的每一路解码数据存入所述共享内存中对应的存储区域;
所述第二获取模块用于:通过第二进程读取所述目标配置文件,并按照所述目标配置文件中指示的所述对应关系从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据。
可选地,所述装置还包括:
第四获取模块,用于在从一个或多个多媒体数据产生设备处获取多媒体数据之前,获取深度学习算法插件的配置信息;
创建模块,用于根据所述配置信息创建所述深度学习算法插件的实例,其中,所述深度学习算法插件的实例与所述深度学习计算服务对应,所述深度学习算法插件的实例在运行时用于触发从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据的步骤。
可选地,所述装置还包括:
添加模块,用于将待添加的解码插件加入到所述一组解码插件中;和/或
停用模块,用于停用所述一组解码插件中的部分解码插件。
本发明实施例的应用环境可以但不限于参照上述实施例中的应用环境,本实施例中对此不再赘述。本发明实施例提供了用于实施上述实时通信的连接方法的一种可选的具体应用示例。
作为一种可选的实施例,上述基于区块链的身份信息的授权方法可以但不限于应用于如图6所示的多媒体采集到深度学习计算的框架的场景中。在本框架中,集成了多媒体采集的取流模块、多媒体数据传输的共享内存模块和深度学习计算的算法模块。多媒体数据流首先被取流模块采集,接着解码成视频帧,最后被存储到共享内存队列模块;紧接着算法服务根据需要从对应的共享内存队列中取出视频帧数据,进行相应的深度学习计算处理,如人脸识别、人脸跟踪、人体跟踪等。整个框架分成取流、共享内存队列和算法3个模块最大的优势是剥离了数据采集、预处理,使得算法模块可以均衡利用cpu/gpu/vpu的计算资源进行深度学习计算,大大提高设备整体的运算能力。
在本场景中,算法模块架构如图7所示,用户可见的为用户层的模块,采用了微服务+插件的设计模式,微服务作为服务的入口,抽象化了整个ai视频应用的流程及关键的接口,而其中应用部分的详细逻辑,则通过动态加载用户自定义的插件形式实现。配置管理类实现了外部通用配置文件加载的功能;插件管理类用于配置和启动各个视频流处理插件,可根据每一路视频流的功能动态加载对应的功能插件;设备管理类用于管理硬件计算资源(如使用哪几块计算卡进行计算);消息发送类提供了基础的数据后处理功能,从而完成整个视频ai应用与其他业务层模块的对接工作。
在计算层部分,列举的各个sdk是视频ai的常见功能封装,底层采用各类深度学习前向加速计算库,从而兼容intelcpu/gpu、movidius计算卡、armcpu、nvidiagpu等多种架构的计算硬件。
由于同时使用了cpu/gpu/vpu(movidius计算卡),本项目采用了异构计算并行的方法来最大化计算资源的利用率,使用多线程软件流水线技术来隐藏异构芯片数据传输带来的延迟。计算资源的分配策略是:将计算负载小、逻辑复杂的任务分配在cpu上;将计算负载大的任务分配在vpu和gpu上。并将计算资源平均分配到每一路视频流的处理中。
本场景中提供的系统框架适用性广,可以适用于soc,pc甚至是服务器平台。运算效率高,取流和算法模块充分、均衡利用cpu/gpu/vpu的资源,提高整个设备的计算能力。实际应用落地的可操作性强,首创性提出了一套多媒体数据的采集、预处理、存储到最终深度学习计算处理框架。
根据本发明实施例的又一个方面,还提供了一种用于实施上述多媒体数据的处理方法的电子装置,如图8所示,该电子装置包括:一个或多个(图中仅示出一个)处理器802、存储器804、传感器806、编码器808以及传输装置810,该存储器中存储有计算机程序,该处理器被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
s1,从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据;
s2,从预定的一组解码插件中选择一个或多个解码插件,其中所述一个或多个解码插件中的每一个与所述一路或多路目标多媒体数据中的每一路对应;使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据;
s3,将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,其中,所述共享内存中的存储区域与深度学习计算服务对应;
s4,在所述深度学习计算服务被请求的情况下,从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据;
s5,对所述一路或多路解码数据执行所述深度学习计算服务对应的目标深度学习计算处理。
可选地,本领域普通技术人员可以理解,图8所示的结构仅为示意,电子装置也可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图8其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图8中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图8所示不同的配置。
其中,存储器804可用于存储软件程序以及模块,如本发明实施例中的多媒体数据的处理方法和装置对应的程序指令/模块,处理器802通过运行存储在存储器804内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的目标组件的控制方法。存储器804可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器804可进一步包括相对于处理器802远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置810用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置810包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置810为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器804用于存储应用程序。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
s1,从一个或多个多媒体数据产生设备处获取多媒体数据,得到一路或多路目标多媒体数据;
s2,从预定的一组解码插件中选择一个或多个解码插件,其中所述一个或多个解码插件中的每一个与所述一路或多路目标多媒体数据中的每一路对应;使用所述一个或多个解码插件对所述一路或多路目标多媒体数据中的对应的每一路目标多媒体数据进行解码,得到一路或多路解码数据;
s3,将所述一路或多路解码数据中的每一路解码数据存入共享内存中对应的存储区域,其中,所述共享内存中的存储区域与深度学习计算服务对应;
s4,在所述深度学习计算服务被请求的情况下,从所述共享内存中与所述深度学习计算服务对应的存储区域中获取所述一路或多路解码数据;
s5,对所述一路或多路解码数据执行所述深度学习计算服务对应的目标深度学习计算处理。
可选地,存储介质还被设置为存储用于执行上述实施例中的方法中所包括的步骤的计算机程序,本实施例中对此不再赘述。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。