视频拍摄的防抖方法及相关装置与流程

文档序号:20286623发布日期:2020-04-07 16:11阅读:361来源:国知局
视频拍摄的防抖方法及相关装置与流程

本申请涉及电子设备技术领域,具体涉及一种视频拍摄的防抖方法及相关装置。



背景技术:

随着电子设备的普及,各种各样的相机应用软件运用越来越广泛,而随着用户对于相机应用处理数据的要求越来越高,第三方应用软件需要使用更强的增强功能或者是通过算法处理过的图像,以此来满足用户的需求。

目前,相机应用软件在针对视频进行防抖算法的时候只能拿到低频率的陀螺仪数据,而且,防抖算法需要和陀螺仪进行时延、精度等参数适配,而相机应用软件无法做到一套参数适配多家平台厂商,同时,相机应用软件对于防抖算法只能做到软件剪裁,因此,相机应用软件在防抖算法处理方面精度较低。



技术实现要素:

本申请实施例提供了一种视频拍摄的防抖方法及相关装置,以期提升防抖处理的灵活性,以及视频防抖处理后的清晰度。

第一方面,本申请实施例提供一种视频拍摄的防抖方法,应用于电子设备,所述电子设备包括操作系统和媒体服务模块、所述操作系统的应用层设置有第三方相机应用,所述方法包括:

所述第三方相机应用向所述操作系统的硬件抽象层发送第一数据请求;

所述硬件抽象层当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值;

所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。

第二方面,本申请实施例提供一种视频拍摄的防抖装置,应用于电子设备,所述电子设备包括操作系统和媒体服务模块、所述操作系统的应用层设置有第三方相机应用,所述装置包括处理单元和通信单元,其中,

所述处理单元,用于所述第三方相机应用通过所述通信单元向所述操作系统的硬件抽象层发送第一数据请求;所述硬件抽象层当通过所述通信单元接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据通过所述通信单元发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值;所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。

第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面任一方法中的步骤的指令。

第四方面,本申请实施例提供了一种芯片,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。

第五方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。

第六方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

可以看出,本申请实施例中,电子设备中第三方相机应用向所操作系统的硬件抽象层发送第一数据请求,然后,所述硬件抽象层当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值,之后所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。可见,第三方相机应用可以通过媒体服务模块使能高频率的陀螺仪,拿到高频率陀螺仪数据,有利于提升防抖算法中数据的精度,以及视频防抖处理后的清晰度,同时,将第一数据发送给第三方相机应用,使第三方相机应用可以自行进行防抖算法,有利于提升防抖算法的灵活性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供一种电子设备的结构示意图;

图2是本申请实施例提供的一种视频拍摄的防抖方法的流程示意图;

图3是本申请实施例提供的另一种视频拍摄的防抖方法的流程示意图;

图4是本申请实施例提供的一种电子设备的结构示意图;

图5是本申请实施例提供的一种视频拍摄的防抖装置的功能单元组成框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

本申请实施例所涉及到的电子设备可以是具备通信能力的电子设备,该电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(userequipment,ue),移动台(mobilestation,ms),终端设备(terminaldevice)等等。

目前,android平台,三方相机应用现在通过标准的android应用程序接口(applicationprogramminginterface,api)可以访问底层的相机数据,但是若是想使用底层的更多的增强功能或通过算法处理后的图像,却没有相应的标准接口来映射底层的能力给三方访问。例如,三方相机应用在针对视频进行防抖算法的时候只能拿到低频率的陀螺仪数据,而无法使用底层高频率的陀螺仪,造成防抖算法的精度较低。

针对上述问题,本申请实施例提供一种视频拍摄的防抖方法及相关装置,下面结合附图对本申请实施例进行详细介绍。

如图1所示,本申请实施例所涉及的电子设备100包括媒体服务模块和操作系统,所述操作系统例如可以是安卓操作系统,在此不做限定,所述操作系统的应用层设置有第三方应用(包括第三方相机应用)和媒体管理模块(又称为媒体接口模块),所述操作系统的硬件抽象层设置有硬件抽象模块(此为安卓原生模块,如原生相机硬件抽象模块camerahal)、媒体策略模块和算法管理模块,此外,操作系统原生架构还包括框架层、驱动层层,框架层包括各种原生应用的应用接口(如原生相机应用程序接口)、应用服务(如原生相机服务)、框架层接口(如googlehal3interface),硬件抽象层包括硬件抽象层接口(例如:hal3.0)、各种原生应用的硬件抽象模块(如相机硬件抽象模块),驱动层包括各种驱动(例如屏幕display驱动、音频audio驱动等),该驱动层用于使能电子设备的各种硬件,例如图像信号处理器isp+陀螺仪。

其中,媒体服务模块独立于操作系统设置,第三方应用可以通过媒体管理模块与媒体服务模块进行通信,媒体服务模块可以通过由应用接口、应用服务、框架层接口、硬件抽象层接口以及相机硬件抽象模块组成的安卓原生信息链路与媒体策略模块通信,媒体策略模块与算法管理模块通信,算法管理模块维护安卓原生的算法库,算法库包括各种原生应用所支持的增强功能,如针对原生相机应用,支持其实现双目拍照、美颜、锐化、夜景等各类增强功能。此外,媒体服务模块也可以与媒体策略模块或者算法管理模块直连通信。

基于上述架构,所述媒体服务模块可以通过安卓原生信息链路、媒体策略模块、算法管理模块使能算法库中的算法模块,或者,直接通过媒体策略模块和算法管理模块使能算法库中的算法模块,或者,直接通过算法管理模块使能算法库中的算法模块,从而实现针对第三方应用开放原生应用关联的增强功能。

基于上述架构,所述媒体服务模块可以通过安卓原生信息链路,或者,通过由媒体策略模块和相机硬件抽象模块组成的第一信息链路,或者,通过由媒体策略模块、算法管理模块和相机硬件抽象模块组成的第二信息链路,调用应用的驱动以使能某些硬件,从而实现针对第三方应用开放原生应用关联的硬件。

请参阅图2,图2是本申请实施例提供了一种视频拍摄的防抖方法的流程示意图,该视频拍摄的防抖方法可以应用于如图1所示的电子设备。

如图所示,本视频拍摄的防抖方法包括以下操作。

s201,第三方相机应用向操作系统的硬件抽象层发送第一数据请求;

s202,所述硬件抽象层当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值;

其中,所述预设频率阈值为电子设备的厂商在所述电子设备出厂前根据经验值设置在所述电子设备中的,在此不做限定。

其中,携带有时间戳的第一数据为,在使能陀螺仪gyro得到陀螺仪数据后,陀螺仪数据通过第一通道从硬件层回传给硬件抽象层的过程中,通过硬件层的图像信号处理器对该陀螺仪数据进行预处理得到所述携带有时间戳的第一数据,然后,通过驱动层发送给硬件抽象层,硬件抽象层将携带有时间戳的第一数据和视频预览数据发送给第三方相机应用,所述预处理包括对数据添加时间戳,校正处理等,在此不做限定。

其中,所述硬件抽象层在获取所述携带有时间戳的第一数据后,将所述携带有时间戳的第一数据存储在元数据metadata中,并将携带有第一数据的metadata发送给第三方相机应用,使第三方相机应用可以从metadata中提取所述第一数据。

s203,所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。

其中,所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理的具体实现方式可以是多种多样的,例如可以是,将所述第一数据和所述视频预览数据发送给相机硬件抽象模块请求算法处理,相机硬件抽象模块通过算法管理模块对第一数据和所述视频预览数据通过eis算法对视频进行防抖处理,然后将处理后的视频数据反馈给第三方相机应用,在该种方式中,相机硬件抽象通过算法模块进行eis算法处理,得到第二剪裁范围,然后通过颜色空间yuv模块对视频数据进行硬件剪裁得到防抖处理后的视频数据,并将处理好的视频数据发送给第三方相机应用,有利于提升视频剪裁的准确性,获取高精度的防抖视频,或者可以是,第三方相机应用对所述第一数据和所述视频预览数据进行eis算法处理,得到防抖处理后的视频数据。

可以看出,本申请实施例中,电子设备中第三方相机应用向所操作系统的硬件抽象层发送第一数据请求,然后,所述硬件抽象层当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值,之后所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。可见,第三方相机应用可以通过媒体服务模块使能高频率的陀螺仪,拿到高频率陀螺仪数据,有利于提升防抖算法中数据的精度,以及视频防抖处理后的清晰度,同时,将第一数据发送给第三方相机应用,使第三方相机应用可以自行进行防抖算法,有利于提升防抖算法的灵活性。

在一个可能的示例中,所述操作系统的应用层设置有媒体管理模块,所述第三方相机应用与所述媒体管理模块通信连接,所述媒体管理模块与所述媒体服务模块通信连接,在所述第三方相机应用向所述操作系统的硬件抽象层发送第一数据请求之前,所述方法还包括:

所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的携带有鉴权码的版本信息获取请求;

所述媒体服务模块根据所述鉴权码对所述第三方相机应用进行鉴权;

当鉴权成功时,所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述版本信息。

其中,第三方相机应用与媒体管理模块通信连接,该媒体管理模块还与媒体服务模块通信连接,故第三方相机应用和媒体服务模块能通过媒体管理模块进行通信。

举例来说,媒体服务模块通过媒体管理模块接收来自第三方相机应用的携带有授权码的版本信息获取请求,会对这个授权码进行校验,如果校验成功通过,就会向该第三方相机应用返回该版本信息,例如可以返回例如“1.1:1.2”这种字符串;如果媒体服务模块校验所述授权码未通过,则通过所述媒体管理模块向第三方相机应用返回空字符串。

其中,所述鉴权码为rsa加密的密文,rsa算法是非对称加密算法的一种,rsa算法的密钥较长,安全性较高。

可见,本示例中,媒体服务模块通过鉴权之后再向第三方相机应用开放底层能力,且并不是直接使用底层的能力,能够有效的控制安全,有利于安全的开放底层功能。

在这个可能的示例中,所述操作系统的硬件抽象层设置有相机硬件抽象模块、媒体策略模块和算法管理模块,所述媒体策略模块与所述相机硬件抽象模块和所述算法管理模块通信连接,所述鉴权成功之后,所述方法还包括:

所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的第二数据请求,所述第二数据请求用于获取相机标识列表;

所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述相机标识列表;

所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的第三数据请求,所述第三数据请求包括所述相机标识列表中第一相机的相机标识,所述第三数据请求用于获取所述第一相机关联的所述版本信息的功能列表,所述第一相机关联当前所述第三方相机应用的场景信息;

所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述第一相机关联的所述版本信息的功能列表;

所述媒体管理模块接收到来自所述第三方相机应用发送的所述功能列表中电子防抖eis功能对应的第一标识;

所述媒体管理模块设置所述第一标识到所述媒体服务模块;

所述媒体策略模块接收来自所述媒体服务模块发送的所述第一标识,并将所述第一标识转换为第二标识,发送给所述相机硬件抽象模块;

所述相机硬件抽象模块根据所述第二标识通过所述媒体策略模块指示所述算法管理模块使能gyro。

其中,相机标识列表包括电子设备每个相机的标识,例如前置相机标识、后置第一相机标识、后置第二相机标识等。

其中,第三方相机应用根据所述相机标识列表和当前的第一场景确定使用的第一相机标识(例如自拍场景,对应前置相机标识),根据第一相机标识通过媒体管理模块向媒体服务模块发送第三数据请求,其中第一相机标识包括至少一个相机标识,该至少一个相机标识可以是前置相机标识,也可以是后置两个相机标识,在此不做限定。

其中,媒体服务模块根据第三数据请求收集上述版本信息的第一相机的功能列表,如果成功,则媒体服务模块返回该版本信息的功能列表。

其中,该第一相机的功能列表中可以列出目前正在使用的媒体平台针对这个第三方相机应用所支持的所有的功能,即可以开放给这个第三方相机应用访问的全部功能,使第三方相机应用可以通过功能列表确定媒体平台是否对所述第一相机开放eis功能,如果开放,则可以通过媒体平台使用该功能,使第三方相机应用可以通过功能列表确定eis功能对应的第一标识。

其中,在上述第二数据请求和第二数据请求之后,若第三方相机应用接收到通过媒体管理模块反馈的空字符,则,表明相机标识列表或第一相机的功能列表获取失败。

其中,所述第一标识为第三方相机应用发送给媒体管理模块的,然后,媒体管理模块将第一标识配置给媒体服务模块。

其中,第一标识为媒体服务模块可以识别的标识,例如可以是json字串{“eis”:1}。

其中,所述第二标识与第一标识对应,而第二标识为所述相机硬件抽象模块可以识别的标识,例如可以是{“key”:value},其中value可以为0,1等,在此不做限定。

其中,媒体服务模块可以通过原有操作系统将所述第二标识发送给相机硬件抽象模块,具体实现方式可以是:媒体服务模块将所述第二标识首先通过操作系统框架层的相机服务模块,然后到第三硬件抽象接口,最后到达操作系统硬件抽象层中的相机硬件抽象模块,其中,媒体服务模块还可以通过媒体策略模块发送给相机硬件抽象模块,在此不做限定。

可见,本示例中,第三方相机应用可以通过媒体管理模块向媒体服务模块请求数据,进而确定是否可以使用当前需要的eis功能,使第三方相机应用可以访问底层功能,有利于提升第三方相机应用功能使用的便捷性以及多样性和全面性。

在这个可能的示例中,所述通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据之前,所述方法还包括:

所述媒体策略模块根据所述第二标识选择所述eis功能对应的所述第一通道;

所述媒体策略模块将所述第一通道配置给所述相机硬件抽象模块。

其中,该第一通道用于gyro向相机硬件抽象模块传递数据。

其中,所述媒体策略模块可以接收来自于所述相机硬件抽象模块或者所述媒体服务模块发送的所述第二标识,在此不做限定。

可见,本示例中,针对硬件gyro配置专有的数据通道,有利于提升数据传输的灵活性和稳定性,同时,不影响原有的平台架构。

在一个可能的示例中,所述第三相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理,包括:

将所述第一数据和所述视频预览数据进行时间同步得到第二数据;

对所述第二数据执行所述eis算法获得视频预览数据的第一剪裁范围;

根据所述第一剪裁范围裁剪所述视频预览数据获得第一目标视频数据。

其中,所述将所述第一数据和所述视频预览数据进行时间同步得到第二数据的具体实现过程为通过时间戳和帧号将第一数据与视频预览数据进行同步。

其中,eis算法为电子防抖算法,主要包括缩小图像范围匹配,计划运动估计等执行过程,在此不做赘述。

可见,本示例中,第三方相机应用将均通过底层获取的第一数据和所述视频预览数据进行同步,并根据eis算法确定第一剪裁范围,对视频预览数据进行防抖处理,而不是,第一数据和视频预览数据中一个通过底层获取,一个通过第三方相机应用获取,有利于提升视频防抖处理精度。

在一个可能的示例中,所述硬件抽象层当接收到来自所述第三方相机应用发送的第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,包括:

所述硬件抽象层中的相机硬件抽象模块当接收到来自所述第三方相机应用发送的所述第一数据请求时,通知底层驱动获取所述第一数据;

所述底层驱动通过gyro获取所述第一数据,所述第一数据为硬件层中图像信号处理器对陀螺仪数据进行预处理后得到的数据;

所述底层驱动通过所述第一通道将所述第一数据反馈给所述相机硬件抽象模块;

所述相机硬件抽象模块将所述第一数据存储在元数据metadata中。

其中,所述算法管理模块使能所述gyro后,gyro将运行得到的陀螺仪数据传输给图像信号处理器,图像信号处理器对陀螺仪数据进行预处理得到第一数据后,通过底层驱动发送给相机硬件抽象模块,相机硬件抽象模块将第一数据存储在metadata中。

可见,本示例中,相机硬件抽象将第一数据存储插入在metadata信息中,利用系统原有的数据库输送数据,不需要新增数据存储区域,避免改变原有架构,提升数据存储的便捷性。

请参阅图3,图3是本申请实施例提供的另一种视频拍摄的防抖方法的流程示意图,该视频拍摄的防抖方法可以应用于如图1所示的电子设备中。

如图所示,本视频拍摄的防抖方法包括以下操作:

s301,媒体服务模块通过媒体管理模块接收来自第三方相机应用发送的携带有鉴权码的版本信息获取请求。

s302,所述媒体服务模块根据所述鉴权码对所述第三方相机应用进行鉴权。

s303,当鉴权成功时,所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述版本信息。

s304,所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的第二数据请求,所述第二数据请求用于获取相机标识列表。

s305,所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述相机标识列表。

s306,所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的第三数据请求,所述第三数据请求包括所述相机标识列表中第一相机的相机标识,所述第三数据请求用于获取所述第一相机关联的所述版本信息的功能列表,所述第一相机关联当前所述第三方相机应用的场景信息。

s307,所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述第一相机关联的所述版本信息的功能列表。

s308,所述媒体管理模块接收到来自所述第三方相机应用发送的所述功能列表中电子防抖eis功能对应的第一标识。

s309,所述媒体管理模块配置所述第一标识给所述媒体服务模块。

s310,所述媒体策略模块接收来自所述媒体服务模块发送的所述第一标识,并将所述第一标识转换为第二标识,发送给相机硬件抽象模块。

s311,所述媒体策略模块根据所述第二标识选择所述eis功能对应的第一通道。

s312,所述媒体策略模块将所述第一通道配置给所述相机硬件抽象模块。

s313,所述相机硬件抽象模块根据所述第二标识通过所述媒体策略模块指示所述算法管理模块使能陀螺仪gyro,所述陀螺仪gyro的运行频率大于预设频率阈值。

s314,所述第三方相机应用向所述操作系统的硬件抽象层中的相机硬件抽象模块发送第一数据请求。

s315,所述相机硬件抽象模块当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过所述第一通道获取通过使能所述gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用。

s316,所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。

可以看出,本申请实施例中,电子设备中第三方相机应用向所操作系统的硬件抽象层发送第一数据请求,然后,所述硬件抽象层当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值,之后所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。可见,第三方相机应用可以通过媒体服务模块使能高频率的陀螺仪,拿到高频率陀螺仪数据,有利于提升防抖算法中数据的精度,以及视频防抖处理后的清晰度,同时,将第一数据发送给第三方相机应用,使第三方相机应用可以自行进行防抖算法,有利于提升防抖算法的灵活性。

此外,针对硬件gyro配置专有的数据通道,有利于提升数据传输的灵活性和稳定性,同时,不影响原有的平台架构。

此外,第三方相机应用可以通过媒体管理模块向媒体服务模块请求数据,进而确定是否可以使用当前需要的eis功能,使第三方相机应用可以访问底层功能,有利于提升第三方相机应用功能使用的便捷性以及多样性和全面性。

此外,媒体服务模块通过鉴权之后再向第三方相机应用开放底层能力,且并不是直接使用底层的能力,能够有效的控制安全,有利于安全的开放底层功能。

与上述图2、图3所示的实施例一致的,请参阅图4,图4是本申请实施例提供的一种电子设备400的结构示意图,其中,所述电子设备400包括操作系统和媒体服务模块、所述操作系统的应用层设置有第三方相机应用,如图所示,所述电子设备400还包括应用处理器410、存储器420、通信接口430以及一个或多个程序421,其中,所述一个或多个程序421被存储在上述存储器420中,并且被配置由上述应用处理器410执行,所述一个或多个程序421包括用于执行上述方法实施例中任一步骤的指令。

在一个可能的示例中,所述程序421中包括用于执行以下步骤的指令:所述第三方相机应用向所述操作系统的硬件抽象层发送第一数据请求;所述硬件抽象层当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值;所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。

在一个可能的示例中,所述操作系统的应用层设置有媒体管理模块,所述第三方相机应用与所述媒体管理模块通信连接,所述媒体管理模块与所述媒体服务模块通信连接,所述程序421还包括用于执行以下操作的指令:在所述第三方相机应用向所述操作系统的硬件抽象层发送第一数据请求之前,所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的携带有鉴权码的版本信息获取请求;所述媒体服务模块根据所述鉴权码对所述第三方相机应用进行鉴权;当鉴权成功时,所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述版本信息。

在这个可能的示例中,所述操作系统的硬件抽象层设置有相机硬件抽象模块、媒体策略模块和算法管理模块,所述媒体策略模块与所述相机硬件抽象模块和所述算法管理模块通信连接,所述程序421还包括用于执行以下操作的指令:所述鉴权成功之后,所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的第二数据请求,所述第二数据请求用于获取相机标识列表;所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述相机标识列表;所述媒体服务模块通过所述媒体管理模块接收来自所述第三方相机应用发送的第三数据请求,所述第三数据请求包括所述相机标识列表中第一相机的相机标识,所述第三数据请求用于获取所述第一相机关联的所述版本信息的功能列表,所述第一相机关联当前所述第三方相机应用的场景信息;所述媒体服务模块通过所述媒体管理模块向所述第三方相机应用反馈所述第一相机关联的所述版本信息的功能列表;所述媒体管理模块接收到来自所述第三方相机应用发送的所述功能列表中电子防抖eis功能对应的第一标识;所述媒体管理模块设置所述第一标识到所述媒体服务模块;所述媒体策略模块接收来自所述媒体服务模块发送的所述第一标识,并将所述第一标识转换为第二标识,发送给所述相机硬件抽象模块;所述相机硬件抽象模块根据所述第二标识通过所述媒体策略模块指示所述算法管理模块使能gyro。

在这个可能的示例中,所述程序421还包括用于执行以下操作的指令:所述通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据之前,所述媒体策略模块根据所述第二标识选择所述eis功能对应的所述第一通道;所述媒体策略模块将所述第一通道配置给所述相机硬件抽象模块。

在一个可能的示例中,在所述第三相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理方面,所述程序421中的指令具体用于执行以下操作:将所述第一数据和所述视频预览数据进行时间同步得到第二数据;对所述第二数据执行所述eis算法获得视频预览数据的第一剪裁范围;根据所述第一剪裁范围裁剪所述视频预览数据获得第一目标视频数据。

在一个可能的示例中,在所述硬件抽象层当接收到来自所述第三方相机应用发送的第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据方面,所述程序421中的指令具体用于执行以下操作:所述硬件抽象层中的相机硬件抽象模块当接收到来自所述第三方相机应用发送的所述第一数据请求时,通知底层驱动获取所述第一数据;所述底层驱动通过gyro获取所述第一数据,所述第一数据为硬件层中图像信号处理器对陀螺仪数据进行预处理后得到的数据;所述底层驱动通过所述第一通道将所述第一数据反馈给所述相机硬件抽象模块;所述相机硬件抽象模块将所述第一数据存储在元数据metadata中。

上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

图5是本申请实施例中所涉及的视频拍摄的防抖装置500的功能单元组成框图。该视频拍摄的防抖装置500应用于电子设备,所述电子设备包括操作系统和媒体服务模块、所述操作系统的应用层设置有第三方相机应用,所述视频拍摄的防抖装置包括处理单元501和通信单元502,其中,所述处理单元501,用于执行如上述方法实施例中的任一步骤,且在执行诸如发送等数据传输时,可选择的调用所述通信单元502来完成相应操作。下面进行详细说明。

所述处理单元501,用于所述第三方相机应用通过所述通信单元502向所述操作系统的硬件抽象层发送第一数据请求;所述硬件抽象层当通过所述通信单元502接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据通过所述通信单元502发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值;所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。

可以看出,本申请实施例中,电子设备中第三方相机应用向所操作系统的硬件抽象层发送第一数据请求,然后,所述硬件抽象层当接收到来自所述第三方相机应用发送的所述第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据,并将所述第一数据和视频预览数据发送给所述第三方相机应用,其中,所述使能陀螺仪gyro是所述第三方相机应用通过所述媒体服务模块预先请求操作系统针对所述第三方相机应用开放的功能,所述陀螺仪gyro的运行频率大于预设频率阈值,之后所述第三方相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理。可见,第三方相机应用可以通过媒体服务模块使能高频率的陀螺仪,拿到高频率陀螺仪数据,有利于提升防抖算法中数据的精度,以及视频防抖处理后的清晰度,同时,将第一数据发送给第三方相机应用,使第三方相机应用可以自行进行防抖算法,有利于提升防抖算法的灵活性。

在一个可能的示例中,所述操作系统的应用层设置有媒体管理模块,所述第三方相机应用与所述媒体管理模块通信连接,所述媒体管理模块与所述媒体服务模块通信连接,所述处理单元501在所述第三方相机应用向所述操作系统的硬件抽象层发送第一数据请求之前,还用于:所述媒体服务模块通过所述媒体管理模块和所述通信单元502接收来自所述第三方相机应用发送的携带有鉴权码的版本信息获取请求;所述媒体服务模块根据所述鉴权码对所述第三方相机应用进行鉴权;当鉴权成功时,所述媒体服务模块通过所述媒体管理模块和所述通信单元502向所述第三方相机应用反馈所述版本信息。

在这个可能的示例中,所述操作系统的硬件抽象层设置有相机硬件抽象模块、媒体策略模块和算法管理模块,所述媒体策略模块与所述相机硬件抽象模块和所述算法管理模块通信连接,所述处理单元501在所述鉴权成功之后,还用于:所述媒体服务模块通过所述媒体管理模块和所述通信单元502接收来自所述第三方相机应用发送的第二数据请求,所述第二数据请求用于获取相机标识列表;所述媒体服务模块通过所述媒体管理模块和所述通信单元502向所述第三方相机应用反馈所述相机标识列表;所述媒体服务模块通过所述媒体管理模块和所述通信单元502接收来自所述第三方相机应用发送的第三数据请求,所述第三数据请求包括所述相机标识列表中第一相机的相机标识,所述第三数据请求用于获取所述第一相机关联的所述版本信息的功能列表,所述第一相机关联当前所述第三方相机应用的场景信息;所述媒体服务模块通过所述媒体管理模块和所述通信单元502向所述第三方相机应用反馈所述第一相机关联的所述版本信息的功能列表;所述媒体管理模块通过所述通信单元502接收到来自所述第三方相机应用发送的所述功能列表中电子防抖eis功能对应的第一标识;所述媒体管理模块设置所述第一标识到所述媒体服务模块;所述媒体策略模块通过所述通信单元502接收来自所述媒体服务模块发送的所述第一标识,并将所述第一标识转换为第二标识,通过所述通信单元502发送给所述相机硬件抽象模块;所述相机硬件抽象模块根据所述第二标识通过所述媒体策略模块指示所述算法管理模块使能gyro。

在一个可能的示例中,所述处理单元501在所述通过第一通道和所述通信单元502获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据之前,还用于:所述媒体策略模块根据所述第二标识选择所述eis功能对应的所述第一通道;所述媒体策略模块将所述第一通道配置给所述相机硬件抽象模块。

在一个可能的示例中,在所述第三相机应用根据所述第一数据和所述视频预览数据通过eis算法对视频进行防抖处理方面,所述处理单元501具体用于:将所述第一数据和所述视频预览数据进行时间同步得到第二数据;对所述第二数据执行所述eis算法获得视频预览数据的第一剪裁范围;根据所述第一剪裁范围裁剪所述视频预览数据获得第一目标视频数据。

在一个可能的示例中,在所述硬件抽象层当通过所述通信单元502接收到来自所述第三方相机应用发送的第一数据请求时,通过第一通道获取通过使能陀螺仪gyro得到的携带有时间戳的第一数据方面,所述处理单元501具体用于:所述硬件抽象层中的相机硬件抽象模块当通过所述通信单元502接收到来自所述第三方相机应用发送的所述第一数据请求时,通过所述通信单元502通知底层驱动获取所述第一数据;所述底层驱动通过gyro获取所述第一数据,所述第一数据为硬件层中图像信号处理器对陀螺仪数据进行预处理后得到的数据;所述底层驱动通过所述第一通道将所述第一数据反馈给所述相机硬件抽象模块;所述相机硬件抽象模块将所述第一数据存储在元数据metadata中。

其中,所述视频拍摄的防抖装置500还可以包括存储单元503,用于存储电子设备的程序代码和数据。所述处理单元501可以是处理器,所述通信单元502可以是触控显示屏或者收发器,存储单元503可以是存储器。

可以理解的是,由于方法实施例与装置实施例为相同技术构思的不同呈现形式,因此,本申请中方法实施例部分的内容应同步适配于装置实施例部分,此处不再赘述。

本申请实施例还提供了一种芯片,其中,该芯片包括处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如上述方法实施例中电子设备所描述的部分或全部步骤。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。

本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1