一种数据录制方法、装置、计算机设备及存储介质与流程

文档序号:33190460发布日期:2023-02-04 08:12阅读:32来源:国知局
一种数据录制方法、装置、计算机设备及存储介质与流程

1.本公开涉及计算机技术领域,具体而言,涉及一种数据录制方法、装置、计算机设备及存储介质。


背景技术:

2.随着互联网技术和移动终端设备技术的快速发展,使用手机等终端智能设备进行消遣逐渐成为了人们主流的生活方式,用于在使用终端设备时,出于媒体内容分享等实际需求,往往有对终端设备中运行的应用程序的媒体内容进行录制的需要。
3.相关技术中,在应用程序中运行有子程序时,在录制子程序的相关音视频数据时,会将应用程序中与该子程序无关的音视频数据一起录制,导致录制了一些用户不需要的音视频数据,从而无法满足用户的实际录制需求。


技术实现要素:

4.本公开实施例至少提供一种数据录制方法、装置、计算机设备及存储介质。
5.第一方面,本公开实施例提供了一种数据录制方法,包括:
6.响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求,确定与所述目标子程序匹配的音视频来源;
7.在所述音视频来源包括所述目标子程序的前端的情况下,按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据;
8.基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。
9.一种可能的实施方式中,所述方法还包括:
10.在所述音视频来源还包括所述目标应用程序对应的客户端的情况下,获取从所述客户端本地采集的第二音视频数据;
11.所述基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据,包括:
12.基于所述第一音视频数据和第二音视频数据,生成所述目标子程序对应的媒体内容录制数据。
13.一种可能的实施方式中,所述确定与所述目标子程序匹配的音视频来源,包括:
14.基于所述目标子程序代码中携带的录制类型参数和/或所述目标子程序使用的画面渲染参数,确定与所述目标子程序的画面渲染属性信息匹配的视频来源。
15.一种可能的实施方式中,所述客户端的属性信息包括所述客户端对应的系统版本信息;
16.所述按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据,包括:
17.在检测到所述客户端对应的系统版本信息位于目标版本范围内的情况下,控制所
述前端发起携带有所述第一音视频数据的可扩展标记语言xml请求,并基于所述客户端拦截所述xml请求,从所述xml请求中提取所述第一音视频数据;以及,
18.在检测到所述客户端对应的系统版本信息位于目标版本范围外的情况下,控制所述前端发起携带有所述第一音视频数据的安全超文本传输协议https请求,并在所述客户端通过调用第一目标接口拦截所述https请求,从所述https请求中提取所述第一音视频数据。
19.一种可能的实施方式中,根据以下步骤获取所述第一音视频数据中的视频数据:
20.调用第二目标接口对所述目标子程序的第一画面渲染内容进行纹理数据采集,得到与所述第一画面渲染内容对应的目标视频数据;其中,所述目标子程序的画面渲染代码中包含提前注入的用于指示所述第一画面渲染内容可被进行纹理数据采集的目标代码。
21.一种可能的实施方式中,根据以下步骤获取所述第一音视频数据中的音频数据:
22.响应于音频播放请求,创建用于播放音频的目标音源节点;以及,生成与所述目标音源节点对应的音频数据采集节点;其中,所述音频数据采集节点用于监听所述目标音源节点的音频播放事件;
23.基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据。
24.一种可能的实施方式中,所述目标音源节点的数量为多个;
25.在基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据之后,所述方法还包括:
26.对多个所述目标音源节点分别对应的目标音频数据进行切分处理,得到每个目标音源节点对应的多个子音频数据;
27.将多个所述目标音频节点中对应相同时间片段的子音频数据进行混合处理,得到从所述前端向所述客户端传输的混合音频数据。
28.一种可能的实施方式中,根据以下步骤获取所述第二音视频数据中的视频数据:
29.调用第三目标接口对所述目标应用程序的第二画面渲染内容进行纹理数据采集,得到与所述第二画面渲染内容对应的目标视频数据。
30.第二方面,本公开实施例还提供一种数据录制装置,包括:
31.确定模块,用于响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求,确定与所述目标子程序匹配的音视频来源;
32.获取模块,用于在所述音视频来源包括所述目标子程序的前端的情况下,按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据;
33.生成模块,用于基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。
34.一种可能的实施方式中,所述获取模块还用于:
35.在所述音视频来源还包括所述目标应用程序对应的客户端的情况下,获取从所述客户端本地采集的第二音视频数据;
36.所述生成模块,在基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据时,用于:
37.基于所述第一音视频数据和第二音视频数据,生成所述目标子程序对应的媒体内
容录制数据。
38.一种可能的实施方式中,所述确定模块,在确定与所述目标子程序匹配的音视频来源时,用于:
39.基于所述目标子程序代码中携带的录制类型参数和/或所述目标子程序使用的画面渲染参数,确定与所述目标子程序的画面渲染属性信息匹配的视频来源。
40.一种可能的实施方式中,所述客户端的属性信息包括所述客户端对应的系统版本信息;
41.所述获取模块,在按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据时,用于:
42.在检测到所述客户端对应的系统版本信息位于目标版本范围内的情况下,控制所述前端发起携带有所述第一音视频数据的可扩展标记语言xml请求,并基于所述客户端拦截所述xml请求,从所述xml请求中提取所述第一音视频数据;以及,
43.在检测到所述客户端对应的系统版本信息位于目标版本范围外的情况下,控制所述前端发起携带有所述第一音视频数据的安全超文本传输协议https请求,并在所述客户端通过调用第一目标接口拦截所述https请求,从所述https请求中提取所述第一音视频数据。
44.一种可能的实施方式中,所述获取模块用于根据以下步骤获取所述第一音视频数据中的视频数据:
45.调用第二目标接口对所述目标子程序的第一画面渲染内容进行纹理数据采集,得到与所述第一画面渲染内容对应的目标视频数据;其中,所述目标子程序的画面渲染代码中包含提前注入的用于指示所述第一画面渲染内容可被进行纹理数据采集的目标代码。
46.一种可能的实施方式中,所述获取模块用于根据以下步骤获取所述第一音视频数据中的音频数据:
47.响应于音频播放请求,创建用于播放音频的目标音源节点;以及,生成与所述目标音源节点对应的音频数据采集节点;其中,所述音频数据采集节点用于监听所述目标音源节点的音频播放事件;
48.基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据。
49.一种可能的实施方式中,所述目标音源节点的数量为多个;
50.在基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据之后,所述获取模块还用于:
51.对多个所述目标音源节点分别对应的目标音频数据进行切分处理,得到每个目标音源节点对应的多个子音频数据;
52.将多个所述目标音频节点中对应相同时间片段的子音频数据进行混合处理,得到从所述前端向所述客户端传输的混合音频数据。
53.一种可能的实施方式中,所述获取模块用于根据以下步骤获取所述第二音视频数据中的视频数据:
54.调用第三目标接口对所述目标应用程序的第二画面渲染内容进行纹理数据采集,得到与所述第二画面渲染内容对应的目标视频数据。
55.第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所
述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
56.第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
57.本公开实施例提供的数据录制方法、装置、计算机设备及存储介质,在响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求后,可以通过确定的与所述目标子程序匹配的音视频来源,以及与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据,并基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。这样,通过确定目标子程序匹配的音视频来源,只录制匹配的音视频来源下的音视频数据,可以避免录制到一些不需要的音视频数据,其中,在音视频来源包括前端的情况下,可以将前端的音视频数据按照匹配的目标数据传输方式传输至客户端(其中针对音视频来源为客户端本地的情况,可以直接对客户端的音视频数据进行采集),从而实现针对不同音视频来源下的音视频数据的录制,避免录制一些不需要的音视频来源下的音视频数据。
58.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
59.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
60.图1示出了本公开实施例所提供的一种数据录制方法的流程图;
61.图2示出了本公开实施例所提供的一种数据录制方法中,确定数据录制过程中视频来源的流程图;
62.图3示出了本公开实施例所提供的一种数据录制方法中,获取从所述目标子程序的前端采集的第一音视频数据的示意图;
63.图4示出了本公开实施例所提供的一种数据录制方法中,获取第一画面渲染内容对应的目标视频数据的流程图;
64.图5示出了本公开实施例所提供的一种数据录制方法中,音频数据采集和混合处理的流程图;
65.图6示出了本公开实施例所提供的一种数据录制方法中,处理第二画面渲染内容对应的目标视频数据的流程图;
66.图7示出了本公开实施例所提供的一种数据录制方法中,另一种数据录制方法的流程图;
67.图8示出了本公开实施例所提供的一种数据录制装置的架构示意图;
68.图9示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
69.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
70.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
71.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
72.可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
73.例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
74.作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
75.可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
76.经研究发现,在应用程序中运行有子程序时,在录制子程序的相关音视频数据时,会将应用程序中与该子程序无关的音视频数据一起录制,导致录制了一些用户不需要的音视频数据,从而无法满足用户的实际录制需求。
77.示例性的,以操作系统为ios系统,程序运行环境为wkwebview环境为例,相关技术中在进行媒体内容录制时可以通过以下方案:
78.1、调用mediarecorder接口进行媒体内容录制
79.在这种方案中,由于兼容性和系统版本的原因,在ios系统上可能存在不兼容的问题,且录制音频的能力有限,比如无法做到实时录制。
80.2、基于文档对象模型(document object model,dom)的媒体内容片段还原方案
81.在这种方案中,只能支持画面渲染方式为dom的子程序进行媒体内容录制,而不支
持采用其他画面渲染方式的子程序。
82.3、客户端录制方案
83.在这种方案中,可以调用应用程序客户端的drawviewhierarchyinrect接口或者takesnapshotwithconfiguration接口实现客户端webview的视频数据获取,然后再调用avfoundation接口将视频数据写入录屏文件,以完成屏幕内容录制,但无法获取到音频数据。
84.此外,由于wkwebview开启了硬件加速,drawviewhierarchyinrect接口和takesnapshotwithconfiguration接口在ios15.4以下版本无法获取到子程序前端渲染的画面内容,且接口本身性能较差。
85.4、使用replaykit录制工具进行录制
86.在这种方案中,在录制过程中可能会录制到webview容器以外的ui组件,比如应用程序内的私信或推送消息,从而会产生用户隐私问题,且在ios14以下版本开发人员无法获取录制完成后的视频文件的存储路径,用户只能基于录制完成后系统提供的ui界面分享视频,交互限制较大。
87.此外,使用replaykit录制工具进行录制仍然无法录制wkwebview运行环境下的音频数据。
88.基于上述研究,本公开提供了一种数据录制方法、装置、计算机设备及存储介质,在响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求后,可以通过确定的与所述目标子程序匹配的音视频来源,以及与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据,并基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。这样,通过确定目标子程序匹配的音视频来源,只录制匹配的音视频来源下的音视频数据,可以避免录制到一些不需要的音视频数据,其中,在音视频来源包括前端的情况下,可以将前端的音视频数据按照匹配的目标数据传输方式传输至客户端(其中针对音视频来源为客户端本地的情况,可以直接对客户端的音视频数据进行采集),从而实现针对不同音视频来源下的音视频数据的录制,避免录制一些不需要的音视频来源下的音视频数据。
89.为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据录制方法进行详细介绍,本公开实施例所提供的数据录制方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为带有显示功能的智能终端设备,例如,可以为智能手机、平板电脑、智能穿戴设备等。在一些可能的实现方式中,该数据录制方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
90.参见图1所示,为本公开实施例提供的数据录制方法的流程图,所述方法包括s101~s103,其中:
91.s101:响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求,确定与所述目标子程序匹配的音视频来源。
92.s102:在所述音视频来源包括所述目标子程序的前端的情况下,按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据。
93.s103:基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。
94.以下是对上述步骤的详细介绍。
95.针对s101,所述目标应用程序可以是目标操作系统上部署的应用程序,所述目标子程序可以是在所述目标应用程序上运行的,运行环境为目标运行环境的小程序;其中,所述目标操作系统例如可以是ios系统,所述目标运行环境例如可以是wkwebview环境;所述目标子程序例如可以是基于html5技术开发的游戏子程序;所述音视频来源可以包括音频来源和/或视频来源;其中,所述音频来源用于表征在媒体内容录制过程中音频数据的来源,所述音频来源可以包括所述目标子程序的前端和/或所述目标应用程序对应的客户端,所述音频数据例如可以是脉冲编码调制(pulse code modulation,pcm)数据;所述视频来源用于表征在媒体内容录制过程中视频数据的来源,所述视频来源可以包括所述目标子程序的前端和/或所述目标应用程序对应的客户端,所述视频数据例如可以是画面渲染内容的纹理数据。
96.一种可能的实施方式中,在确定与所述目标子程序匹配的音视频来源时,可以基于所述目标子程序代码中携带的录制类型参数和/或所述目标子程序使用的画面渲染参数,确定与所述目标子程序的画面渲染属性信息匹配的视频来源。
97.具体的,所述录制类型参数例如可以是recordtype参数,所述recordtype参数的参数值用于表征录制所述目标子程序的媒体内容时的视频来源,所述recordtype参数的参数值例如可以是目标应用程序的客户端,用于表征录制时的视频来源为目标应用程序的客户端;所述画面渲染参数例如可以是html5中用于进行画面渲染的canvas标签,通过解析所述目标子程序对应的执行代码,即可根据所述执行代码中canvas标签的类型确定所述目标子程序的画面渲染方式,所述画面渲染方式可以包括2d canvas和3d canvas,不同的画面渲染方式可以对应不同的视频来源。
98.实际应用中,由于通过解析canvas标签的类型只能确定出使用了canvas标签的画面渲染方式,但所述目标子程序在进行画面渲染时也可以不使用canvas标签进行画面渲染,比如可以使用dom进行画面渲染。
99.进一步的,为了确保能够准确的确定出所述目标子程序的画面渲染方式,以得到更为准确的画面渲染属性信息,在基于所述目标子程序的画面渲染属性信息,确定与所述目标子程序的画面渲染属性信息匹配的视频来源时,可以先通过对所述目标子程序的前端的执行代码进行解析,并基于解析的结果和所述目标子程序对应的画面渲染参数,确定所述目标子程序的画面渲染方式,并基于预先存储的画面渲染方式与视频来源的映射关系,确定与所述目标子程序的画面渲染方式对应的视频来源,并将确定的视频来源作为与所述目标子程序的画面渲染属性信息匹配的视频来源。
100.其中,所述画面渲染方式与视频来源的映射关系可以包括2d canvas-客户端、3d canvas-前端、dom-客户端,分别表示当使用了2d canvas进行画面渲染时视频来源包括所述目标应用程序的客户端、使用了3d canvas进行画面渲染时视频来源包括所述目标子程序的前端、使用了dom进行画面渲染时视频来源包括所述目标应用程序的客户端。
101.示例性的,确定数据录制过程中视频来源的流程图可以如图2所示,图2中,在用户点击客户端按钮触发录屏功能后,前端即可检测当前所有canvas标签的类型,若使用了3d canvas,则视频来源为前端;若同时使用了2d canvas和3d canvas,则视频来源为前端和客
户端;若使用了2d canvas或没有使用canvas,则视频来源为客户端;并传递recordtype参数给客户端,客户端结合recordtype参数和上述判断结果以判断是否需要补充客户端视频采集来源。
102.这样,通过结合所述目标子程序的画面渲染参数和所述目标子程序的执行代码的解析结果,可以准确的确定出所述目标子程序的画面渲染方式,从而可以进一步的确定出与所述目标子程序的画面渲染属性信息匹配的视频来源。
103.s102:在所述音视频来源包括所述目标子程序的前端的情况下,按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据。
104.这里,所述客户端的属性信息可以包括所述目标应用程序的客户端对应的系统版本信息,所述客户端对应的系统版本信息用于表征所述目标应用程序客户端部署的终端设备的操作系统的版本信息;所述第一音视频数据可以包括音频数据和/或视频数据。
105.一种可能的实施方式中,在按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据时,可以包括以下两种情况:
106.情况1、客户端对应的系统版本信息位于目标版本范围内
107.这里,在检测到所述客户端对应的系统版本信息位于目标版本范围内的情况下,可以控制所述前端发起携带有所述第一音视频数据的可扩展标记语言xml请求,并基于所述客户端拦截所述xml请求,从所述xml请求中提取所述第一音视频数据。
108.示例性的,以所述目标操作系统为ios系统为例,所述客户端对应的系统版本信息位于目标版本范围内可以是客户端对应的ios版本大于等于ios13,所述第一音视频数据可以位于所述xml请求中,通过拦截并解析所述xml请求即可获取所述第一音视频数据。
109.情况2、客户端对应的系统版本信息位于目标版本范围外
110.这里,在检测到所述客户端对应的系统版本信息位于目标版本范围外的情况下,可以控制所述前端发起携带有所述第一音视频数据的安全超文本传输协议https请求,并在所述客户端通过调用第一目标接口拦截所述https请求,从所述https请求中提取所述第一音视频数据。
111.承接上例,仍以所述目标操作系统为ios系统为例,所述客户端对应的系统版本信息位于目标版本范围外可以是客户端对应的ios版本小于ios13,所述第一音视频数据可以位于所述https请求中,通过调用handleurlscheme接口,使得客户端可以获取到拦截https请求的能力,再通过调用webview:starturlschemetask接口(也即第一目标接口),即可拦截并解析所述https请求,从而可以获取所述第一音视频数据。
112.示例性的,获取从所述目标子程序的前端采集的第一音视频数据的示意图可以如图3所示,图3中,根据ios系统版本是否大于等于13,可以确定出两种数据传输方式,当ios系统版本大于等于13时,即可采用xml请求进行数据传输,而当ios系统版本小于13时,即可采用https请求进行数据传输,并通过调用handleurlscheme接口实现数据传输功能;客户端可以通过webview:starturlschemetask接口拦截请求,以获取请求中携带的第一音视频数据。
113.一种可能的实施方式中,在获取所述第一音视频数据中的视频数据时,可以调用
第二目标接口对所述目标子程序的第一画面渲染内容进行纹理数据采集,得到与所述第一画面渲染内容对应的目标视频数据;其中,所述目标子程序的画面渲染代码中包含提前注入的用于指示所述第一画面渲染内容可被进行纹理数据采集的目标代码。
114.这里,所述第二目标接口可以是readpixels接口,所述readpixels接口可以用于对所述目标子程序前端渲染的第一画面渲染内容进行解析,从而能够得到所述第一画面渲染内容对应的目标视频数据;所述目标代码例如可以是“preservedrawingbuffer:true”,通过在所述目标子程序前端渲染第一画面渲染内容之前,提前在所述目标子程序前端对应的执行代码中注入用于指示所述第一画面渲染内容可被进行纹理数据采集的目标代码,从而可以通过调用所述第二目标接口获取到所述第一画面渲染内容对应的目标视频数据。
115.示例性的,以目标子程序为游戏子程序为例,则获取第一画面渲染内容对应的目标视频数据的流程图可以如图4所示,图4中,在游戏子程序启动后,可以自动找到游戏子程序运行时使用的canvas标签,并通过劫持webgl的drawarrays、drawelements、getcontext接口,以强制接口preservedrawingbuffer为true,也即注入“preservedrawingbuffer:true”;然后,即可启动计时器函数animate按照预设时间间隔读取pixel数据,从而获取到第一画面渲染内容对应的目标视频数据,以将目标视频数据发送至客户端。
116.一种可能的实施方式中,在获取所述第一音视频数据中的音频数据时,可以通过下述步骤a1~a2:
117.a1:响应于音频播放请求,创建用于播放音频的目标音源节点;以及,生成与所述目标音源节点对应的音频数据采集节点。
118.其中,所述目标音源节点可以是基于web audio标准创建的用于存储音频数据的mediaelementaudiosourcenode节点,所述音频数据采集节点用于监听所述目标音源节点的音频播放事件,所述音频数据采集节点例如可以是scriptprocessornode节点。
119.具体的,当检测到所述目标子程序前端响应于音频播放请求,创建用于播放音频的目标音源节点后,可以在所述目标子程序前端对应的执行代码中注入scriptprocessornode节点对应的节点代码,从而为目标音源节点绑定scriptprocessornode节点。
120.a2:基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据。
121.具体的,所述音频数据采集节点在绑定对应的目标音源节点后,即可在监听到所述目标音源节点的音频播放事件后,通过回调的方式获取所述目标音源节点在每个预设时间段内的音频数据,所述预设时间段例如可以是3s。
122.进一步的,在所述目标音源节点的数量为多个的情况下,在获取所述目标音源节点对应的目标音频数据之后,还可以执行下述步骤a3~a4:
123.a3:对多个所述目标音源节点分别对应的目标音频数据进行切分处理,得到每个目标音源节点对应的多个子音频数据。
124.这里,在对目标音频数据进行切分处理时,可以按照预设的音频时长切分间隔进行切分,所述音频时长切分间隔例如可以是1s。
125.a4:将多个所述目标音频节点中对应相同时间片段的子音频数据进行混合处理,得到从所述前端向所述客户端传输的混合音频数据。
126.这里,为了确保参与混合处理的各子音频数据对应的时间片段是相同的,在存储
各子音频数据时可以使用单独的存储数组进行存储,每个目标音源节点对应一个存储数组,从而在进行混合处理时只需要从每个存储数组中读取第一个元素(也即第一个音频子数据)进行混合处理即可。
127.此外,为了确保音频数据对应有音频内容,可以根据目标音频节点对应的音频数据进行内容判断,当检测到音频数据均为“0”等代表无音频内容的数据时,可以将当前检测的目标音频节点作为静默节点并进行删除。
128.进一步的,为了提高音频数据的处理效率,可以设置单独的音频处理线程以处理音频数据的采集和混合处理,从而可以避免占用用于执行子程序画面渲染等任务的主线程的计算资源,减少音频数据处理过程对子程序的影响。
129.示例性的,仍以目标子程序为游戏子程序为例,则音频数据采集和混合处理的流程图可以如图5所示,图5中,可以通过检测是否创建了新的sourcenode节点的方式,确定当前是否有音频在进行播放,当检测到创建了新的音源节点sourcenode节点,创建额外的音频数据采集节点scriptprocessornode节点以实时监听sourcenode节点的play事件;当监听到play事件时,即可通过onprocess函数回调sourcenode节点的pcm数据;将pcm数据保存并传输至预先设置的用于进行音频数据处理的子线程;子线程在接收到pcm数据后,可以依次对pcm数据进行切分处理、归一化处理以及数据格式转换处理,从而完成对pcm数据的处理过程,然后将处理完成的音频数据发送至主线程,并由主线程将音频数据发送至客户端。
130.一种可能的实施方式中,在所述音视频来源还包括所述目标应用程序对应的客户端的情况下,还可以获取从所述客户端本地采集的第二音视频数据。
131.这里,所述第二音视频数据可以包括音频数据和/或视频数据。
132.一种可能的实施方式中,在获取所述第二音视频数据中的视频数据时,可以调用第三目标接口对所述目标应用程序的第二画面渲染内容进行纹理数据采集,得到与所述第二画面渲染内容对应的目标视频数据。
133.这里,所述第三目标接口可以是所述目标应用程序的webview容器中的takesnapshotwithconfiguration接口;所述第二画面渲染内容为所述目标应用程序的客户端渲染的画面内容。
134.具体的,通过调用所述takesnapshotwithconfiguration接口即可回调出所述webview容器中的初始视频数据(也即纹理数据);进一步的,在得到所述初始视频数据后,可以对所述初始视频数据进行格式转换处理,将初始视频数据转换为二进制格式(例如nsdata格式)的目标视频数据。
135.示例性的,处理第二画面渲染内容对应的目标视频数据的流程图可以如图6所示,图6中,客户端可以在拦截到前端发送的视频数据获取请求后,发起一次客户端视频数据采集;通过调用takesnapshotwithconfiguration接口即可回调出webview容器中的视频数据(也即第二画面渲染内容对应的目标视频数据),将视频数据绑定至纹理数据节点texture节点进行处理,并将视频数据存储至音视频录制器的缓存区中。
136.s103:基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。
137.这里,在得到所述第一音视频数据后,可以将得到的所述第一音视频数据存储至所述目标应用程序客户端的音视频录制器的缓存区中,以便基于音视频生成请求,根据所述音视频录制器的缓存区中缓存的第一音视频数据生成对应的音视频内容。
138.一种可能的实施方式中,在基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据时,可以基于所述第一音视频数据和第二音视频数据,生成所述目标子程序对应的媒体内容录制数据。
139.这里,在基于所述第一音视频数据和第二音视频数据,生成所述目标子程序对应的媒体内容录制数据时,可以将所述第一音视频数据和第二音视频数据中的目标视频数据传入所述目标应用程序客户端的音视频录制器,所述音视频录制器可以将接收到的目标视频数据绑定至对应的opengl texture节点,从而可以通过混合着色器将绑定的目标视频数据按照像素点的rgb值进行视频混合处理,从而得到视频混合处理后的目标视频数据。
140.进一步的,在生成所述目标子程序对应的媒体内容录制数据后,还可以响应于针对媒体内容录制数据中视频录制结果的播放请求,将应用程序的系统当前时间作为视频帧的写入时间戳,从音视频录制器的缓存区中的视频缓存区中获取视频数据,并交由系统编码器进行视频编码处理,以得到可用于进行视频播放的录制视频;以及,还可以响应于针对媒体内容录制数据中音频录制结果的播放请求,根据请求中的数据长度和音频时长确定音频帧的写入时间戳,并将音频数据和写入时间戳交由系统编码器进行音频编码处理,以得到可用于进行音频播放的录制音频。
141.下面,将结合具体实施例对本公开实施例所提供的数据录制方法进行介绍,如图7所示,本公开实施例所提供的数据录制方法可以包括以下步骤:
142.步骤一、用户点击前端按钮触发录屏。
143.步骤二、通知前端开始录屏,前端决定视频采集方式。
144.步骤三、客户端初始化录制器。
145.步骤四、分别创建视频编码器和音频编码器。
146.步骤五、创建opengl context、pbuffer,编译链接shader program。
147.步骤六、启动录屏流程。
148.其中,收到视频数据的情况下,将系统当前时间作为写入时间戳,交由视频编码器进行编码;收到音频数据的情况下,根据前端传入的时间戳,交由音频编码器进行编码。
149.步骤七、判断是否写入失败。
150.这里,录入失败即为录制数据写入失败,也即录制失败。
151.具体的,若写入失败,则通知前端错误,停止录屏;若写入不失败,则可以等待前端或用户触发停止录屏,并返回视频文件地址,以便获取到录制完成的视频文件。
152.上述步骤的具体内容可以参照上文相关内容,在此不再赘述。
153.本公开实施例提供的数据录制方法,在响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求后,可以通过确定的与所述目标子程序匹配的音视频来源,以及与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据,并基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。这样,通过确定目标子程序匹配的音视频来源,只录制匹配的音视频来源下的音视频数据,可以避免录制到一些不需要的音视频数据,其中,在音视频来源包括前端的情况下,可以将前端的音视频数据按照匹配的目标数据传输方式传输至客户端(其中针对音视频来源为客户端本地的情况,可以直接对客户端的音视频数据进行采集),从而实现针对不同音视频来源下的音视频数据的录制,避免录制一些不需要的音视频来源下的
音视频数据。
154.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
155.基于同一发明构思,本公开实施例中还提供了与数据录制方法对应的数据录制装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据录制方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
156.参照图8所示,为本公开实施例提供的一种数据录制装置的架构示意图,所述装置包括:确定模块801、获取模块802、生成模块803;其中,
157.确定模块801,用于响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求,确定与所述目标子程序匹配的音视频来源;
158.获取模块802,用于在所述音视频来源包括所述目标子程序的前端的情况下,按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据;
159.生成模块803,用于基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。
160.一种可能的实施方式中,所述获取模块802还用于:
161.在所述音视频来源还包括所述目标应用程序对应的客户端的情况下,获取从所述客户端本地采集的第二音视频数据;
162.所述生成模块803,在基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据时,用于:
163.基于所述第一音视频数据和第二音视频数据,生成所述目标子程序对应的媒体内容录制数据。
164.一种可能的实施方式中,所述确定模块801,在确定与所述目标子程序匹配的音视频来源时,用于:
165.基于所述目标子程序代码中携带的录制类型参数和/或所述目标子程序使用的画面渲染参数,确定与所述目标子程序的画面渲染属性信息匹配的视频来源。
166.一种可能的实施方式中,所述客户端的属性信息包括所述客户端对应的系统版本信息;
167.所述获取模块802,在按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据时,用于:
168.在检测到所述客户端对应的系统版本信息位于目标版本范围内的情况下,控制所述前端发起携带有所述第一音视频数据的可扩展标记语言xml请求,并基于所述客户端拦截所述xml请求,从所述xml请求中提取所述第一音视频数据;以及,
169.在检测到所述客户端对应的系统版本信息位于目标版本范围外的情况下,控制所述前端发起携带有所述第一音视频数据的安全超文本传输协议https请求,并在所述客户端通过调用第一目标接口拦截所述https请求,从所述https请求中提取所述第一音视频数据。
170.一种可能的实施方式中,所述获取模块802用于根据以下步骤获取所述第一音视
频数据中的视频数据:
171.调用第二目标接口对所述目标子程序的第一画面渲染内容进行纹理数据采集,得到与所述第一画面渲染内容对应的目标视频数据;其中,所述目标子程序的画面渲染代码中包含提前注入的用于指示所述第一画面渲染内容可被进行纹理数据采集的目标代码。
172.一种可能的实施方式中,所述获取模块802用于根据以下步骤获取所述第一音视频数据中的音频数据:
173.响应于音频播放请求,创建用于播放音频的目标音源节点;以及,生成与所述目标音源节点对应的音频数据采集节点;其中,所述音频数据采集节点用于监听所述目标音源节点的音频播放事件;
174.基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据。
175.一种可能的实施方式中,所述目标音源节点的数量为多个;
176.在基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据之后,所述获取模块802还用于:
177.对多个所述目标音源节点分别对应的目标音频数据进行切分处理,得到每个目标音源节点对应的多个子音频数据;
178.将多个所述目标音频节点中对应相同时间片段的子音频数据进行混合处理,得到从所述前端向所述客户端传输的混合音频数据。
179.一种可能的实施方式中,所述获取模块802用于根据以下步骤获取所述第二音视频数据中的视频数据:
180.调用第三目标接口对所述目标应用程序的第二画面渲染内容进行纹理数据采集,得到与所述第二画面渲染内容对应的目标视频数据。
181.本公开实施例提供的数据录制装置,在响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求后,可以通过确定的与所述目标子程序匹配的音视频来源,以及与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据,并基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。这样,通过确定目标子程序匹配的音视频来源,只录制匹配的音视频来源下的音视频数据,可以避免录制到一些不需要的音视频数据,其中,在音视频来源包括前端的情况下,可以将前端的音视频数据按照匹配的目标数据传输方式传输至客户端(其中针对音视频来源为客户端本地的情况,可以直接对客户端的音视频数据进行采集),从而实现针对不同音视频来源下的音视频数据的录制,避免录制一些不需要的音视频来源下的音视频数据。
182.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
183.基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图9所示,为本公开实施例提供的计算机设备900的结构示意图,包括处理器901、存储器902、和总线903。其中,存储器902用于存储执行指令,包括内存9021和外部存储器9022;这里的内存9021也称内存储器,用于暂时存放处理器901中的运算数据,以及与硬盘等外部存储器9022交换的数据,处理器901通过内存9021与外部存储器9022进行数据交换,当计算机设备900运行时,处理器901与存储器902之间通过总线903通信,使得处理器901在执行以下指令:
184.响应于针对目标应用程序中运行的目标子程序的媒体内容录制请求,确定与所述目标子程序匹配的音视频来源;
185.在所述音视频来源包括所述目标子程序的前端的情况下,按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据;
186.基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据。
187.一种可能的实施方式中,所述处理器901的指令中还包括:
188.在所述音视频来源还包括所述目标应用程序对应的客户端的情况下,获取从所述客户端本地采集的第二音视频数据;
189.所述基于所述第一音视频数据,生成所述目标子程序对应的媒体内容录制数据,包括:
190.基于所述第一音视频数据和第二音视频数据,生成所述目标子程序对应的媒体内容录制数据。
191.一种可能的实施方式中,所述处理器901的指令中,所述确定与所述目标子程序匹配的音视频来源,包括:
192.基于所述目标子程序代码中携带的录制类型参数和/或所述目标子程序使用的画面渲染参数,确定与所述目标子程序的画面渲染属性信息匹配的视频来源。
193.一种可能的实施方式中,所述处理器901的指令中,所述客户端的属性信息包括所述客户端对应的系统版本信息;
194.所述按照与所述目标应用程序的客户端的属性信息匹配的目标数据传输方式,获取从所述目标子程序的前端采集的第一音视频数据,包括:
195.在检测到所述客户端对应的系统版本信息位于目标版本范围内的情况下,控制所述前端发起携带有所述第一音视频数据的可扩展标记语言xml请求,并基于所述客户端拦截所述xml请求,从所述xml请求中提取所述第一音视频数据;以及,
196.在检测到所述客户端对应的系统版本信息位于目标版本范围外的情况下,控制所述前端发起携带有所述第一音视频数据的安全超文本传输协议https请求,并在所述客户端通过调用第一目标接口拦截所述https请求,从所述https请求中提取所述第一音视频数据。
197.一种可能的实施方式中,所述处理器901的指令中,根据以下步骤获取所述第一音视频数据中的视频数据:
198.调用第二目标接口对所述目标子程序的第一画面渲染内容进行纹理数据采集,得到与所述第一画面渲染内容对应的目标视频数据;其中,所述目标子程序的画面渲染代码中包含提前注入的用于指示所述第一画面渲染内容可被进行纹理数据采集的目标代码。
199.一种可能的实施方式中,所述处理器901的指令中,根据以下步骤获取所述第一音视频数据中的音频数据:
200.响应于音频播放请求,创建用于播放音频的目标音源节点;以及,生成与所述目标音源节点对应的音频数据采集节点;其中,所述音频数据采集节点用于监听所述目标音源节点的音频播放事件;
201.基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据。
202.一种可能的实施方式中,所述处理器901的指令中,所述目标音源节点的数量为多个;
203.在基于所述音频数据采集节点,获取所述目标音源节点对应的目标音频数据之后,所述方法还包括:
204.对多个所述目标音源节点分别对应的目标音频数据进行切分处理,得到每个目标音源节点对应的多个子音频数据;
205.将多个所述目标音频节点中对应相同时间片段的子音频数据进行混合处理,得到从所述前端向所述客户端传输的混合音频数据。
206.一种可能的实施方式中,所述处理器901的指令中,根据以下步骤获取所述第二音视频数据中的视频数据:
207.调用第三目标接口对所述目标应用程序的第二画面渲染内容进行纹理数据采集,得到与所述第二画面渲染内容对应的目标视频数据。
208.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据录制方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
209.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据录制方法的步骤,具体可参见上述方法实施例,在此不再赘述。
210.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
211.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
212.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
213.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
214.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件
产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
215.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1