一种基于视频通话数据流处理实现趣味贴图的方法与流程

文档序号:11779048阅读:527来源:国知局
一种基于视频通话数据流处理实现趣味贴图的方法与流程

本发明涉及移动终端的操作系统,尤其涉及在系统中基于视频通话数据流的处理,对所有有需要的应用程序增加趣味贴图的方法。



背景技术:

随着移动终端功能的不断升级,现有的移动终端已经成为了人们日常生活的必备品之一了。例如,人们经常会拿手机或者ipad进行视频聊天,该方式是现代社会远距离的人与人之间沟通交流的重要桥梁。

为了增加视频聊天中的趣味性及装饰性,有部分第三方应用在其视频聊天功能中增加了趣味贴图功能,例如:使用qq来进行视频聊天时,有一个功能按钮叫特效互动,点击该功能按钮,就可以在视频中对应的人脸上贴图,例如给人脸打上腮红或者戴上兔子耳朵等。但是这种第三方视频聊天功能中的趣味应用开发都有一定局限性,仅支持自家应用的视频聊天,无法提供给其他不具备该功能的应用在视频聊天时使用,譬如,利用苹果自带的facetime聊天时,由于facetime并没有相应的功能,因此就不可以使用趣味贴图。这样造成了资源应用的局限性。

因此,如何提供一种全系统可用的趣味贴图方法是业界亟待解决的技术问题。



技术实现要素:

本发明为了解决上述现有技术中存在的技术问题,提出一种基于视频通话数据流处理实现趣味贴图的方法,包括如下步骤:

步骤1,当用户启动预先收录在内的第三方应用时,判断此时相机是否打开,若相机未打开,则执行步骤2,若相机打开,则执行步骤3;

步骤2,持续监控相机是否开启直至所述第三方应用关闭,一旦相机打开,则转入步骤3;

步骤3,弹出贴图按钮,同时搜索已有的贴图资源;

步骤4,用户点击贴图按钮,展示所有搜索到的贴图资源的子按钮;

步骤5,用户点击所述子按钮,把所述子按钮状态开关参数、对应的贴图资源路径参数下传至系统底层;

步骤6,系统底层获取所述子按钮状态开关参数、对应的贴图资源路径参数,同时根据子按钮的开关状态来决定是否截取视频通话影像数据流;

步骤7,判断视频通话影像数据流中人脸检测是否为连续帧,如果是,转至下一步;如果不是,则不进行贴图处理,直接系统默认显示。

步骤8,将不同格式的视频通话影像数据流转换为rgba格式,通过gpu叠加转换格式后的视频通话影像数据流和贴图,然后再把gpu叠加处理后的数据进行格式转换成系统底层所支持格式的影像数据流,再进行显示。

本发明基于系统底层,来实现趣味贴图,可以在系统中实现任何第三方应用的视频通话和第三方应用相机趣味贴图功能,使用范围广且资源复用率高,并且在底层时,通过人脸检测连续帧的方法,使视频通话时用户手机晃动预览更流畅,用户体验效果更佳。

附图说明

图1为本发明贴图子按钮显示流程图。

图2为本发明视频通话底层数据流截取处理图。

图3为本发明贴图加载条件流程图。

具体实施方式

下面结合附图及示例对本发明的原理及方法进行详细说明。

微信是人们日常沟通交流的工具之一,现有的其他软件如qq等都有趣味贴图功能,但是微信使用虽然广泛,但是并没有贴图功能,且qq贴图无法应用于微信贴图,因此下面以微信视频通话为例,进行说明。

如图1至图3所示,目前本发明的方法将市面上使用较广泛的视频通话应用均收录在内,包括facetime、微信等。当然用户也可以选择其习惯的第三方应用添加至收录目录内,还可以对已收录的应用进行移除。

当用户打开微信,通过在当前进程设置监听来判断此时相机是否打开,若相机未打开,持续监控相机是否开启直至所述第三方应用关闭,若相机打开,获取当前打开的camera实例对像,并创建toast浮动窗口显示贴图按钮,同时搜索已有的贴图资源,并把搜索到的贴图资源路径保存下来,同步在贴图按钮中将作为子按钮显示所搜索到的贴图资源。弹出来的贴图按钮为可移动的浮窗按钮,这样不会因为各种第三方应用的设计不同,而挡住应用原有的功能键。而搜索的贴图资源不仅仅是系统内目前存在的贴图资源,同时还包括网络贴图资源,例如某贴图开发方放在云中的共享贴图资源等。

当用户点击贴图按钮,将会展示所有搜索到的贴图资源的子按钮,譬如兔子耳朵、胡子等等子按钮。这些子按钮有开和关两种状态,分别标记为1和0。子按钮的初始状态为关状态0,当子按钮的初始状态为关状态,此时不截取视频通话影像数据流,用户点击所述子按钮后,子按钮将转换开关状态,若子按钮转为开状态,截取视频通话影像数据流。当用户点击子按钮,会把子按钮的开或关状态,和用户所点击的贴纸资源路径以字符串的形式,通过系统自带的setkey方法,applyparamters下传到系统底层代码。

在系统底层通过getkey方法,解析字符串,获取子按钮的开、关状态和字符串指令路径下的贴纸资源。

当子按钮的开关状态为0时,不截取视频通话影像数据流,数据流不做任何处理直接按照系统默认显示,不带任何贴图效果。

当子按钮的开关状态为1时,截断正在视频通话时影像数据流,获取当前数据流的相关参数:缓冲类型buftype、格式format、宽width、高height、跨度stride、缓冲大小bufsize及数据流yuvvirtaddr,通过对yuv数据的分析,判断当前一帧影像数据是否有检测到人脸,且定义检测到人脸变量为mfacedetectedcount,如果检测到人脸,mfacedetectedcount+1;如果没有检测到人脸,mfacedetectedcount赋值为0,通过多帧影像数据的连续检测判断,mfacedetectedcount累加到n数值时(n为变数,可自定义),即判断人脸是连续稳定的人脸帧,然后开启贴图的渲染显示。

根据不同格式的视频通话影像数据流,进行格式转换,将不同格式的视频通话影像数据流转换为rgba格式(opengl底层必须格式),根据下传的贴图资源路径下的贴图特效包,进行gpu各种渲染技术的效果叠加,把处理完毕的影像数据流返回之前截取时视频通话影像数据流通道上,传至系统显示贴图效果,即当前视频通话时贴图显示效果。

本发明基于系统底层代码,对底层视频聊天时影像数据流的截取特殊处理,兼容数据格式种类较多,数据流处理较为前端,且不针对具体某个应用,适用于所有第三方应用的视频通话功能,保证了功能可靠性和适用范围广度性。对于没有贴图功能的第三方应用提供了一种超级趣味性的视频聊天和用户体验。

以上具体实施例仅用以举例说明本发明的结构,本领域的普通技术人员在本发明的构思下可以做出多种变形和变化,这些变形和变化均包括在本发明的保护范围之内。



技术特征:

技术总结
本发明公开了一种基于视频通话数据流处理实现趣味贴图的方法,当启动第三方应用时,判断此时相机是否打开,相机打开时,弹出贴图按钮,同时搜索已有的贴图资源;点击贴图按钮,展示所有搜索到的贴图资源的子按钮;点击所述子按钮,把所述子按钮参数、对应的贴图资源路径参数下传至系统底层;系统底层获取这些参数,同时根据子按钮的开关状态来决定是否截取视频通话影像数据流;判断视频通话影像数据流中人脸检测是否为连续帧,如果不是,则直接显示。如果是,进行格式转换,然后通过GPU叠加转换格式后的视频通话影像数据流和贴图,再显示。本发明可以在本系统运行的任意视频通话应用及相机应用提供趣味贴图功能,提高资源利用率。

技术研发人员:黄子恺;李新良;张果;杨秋平
受保护的技术使用者:硕诺科技(深圳)有限公司
技术研发日:2017.07.24
技术公布日:2017.10.20
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1