CN115543649A - 一种数据获取方法及电子设备 - Google Patents

一种数据获取方法及电子设备 Download PDF

Info

Publication number
CN115543649A
CN115543649A CN202211061023.4A CN202211061023A CN115543649A CN 115543649 A CN115543649 A CN 115543649A CN 202211061023 A CN202211061023 A CN 202211061023A CN 115543649 A CN115543649 A CN 115543649A
Authority
CN
China
Prior art keywords
data
application
video
audio
frame
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.)
Granted
Application number
CN202211061023.4A
Other languages
English (en)
Other versions
CN115543649B (zh
Inventor
肖瑶
杨毅轩
俞健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211061023.4A priority Critical patent/CN115543649B/zh
Publication of CN115543649A publication Critical patent/CN115543649A/zh
Application granted granted Critical
Publication of CN115543649B publication Critical patent/CN115543649B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/16Storage of analogue signals in digital stores using an arrangement comprising analogue/digital [A/D] converters, digital memories and digital/analogue [D/A] converters 

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)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本申请实施例提供一种数据获取方法及电子设备,涉及终端技术领域,在多个应用需要从底层获取数据时,可以仅使用一个while循环来获取,从而降低CPU占用率。在第一应用需要获取第一数据的情况下,第一应用在第三应用中注册第一监听对象。在第二应用需要获取第一数据的情况下,第二应用在第三应用中注册第二监听对象。第三应用采用while循环获取第一数据,将第一数据回调给第一监听对象和第二监听对象。

Description

一种数据获取方法及电子设备
技术领域
本申请涉及终端技术领域,尤其涉及一种数据获取方法及电子设备。
背景技术
while循环是计算机的一种基本循环模式。while循环的一般表达式为:while(条件){循环体}。该表达式的含义为:当满足条件时进入循环,执行循环体;当不满足条件时,则跳出循环。while循环可用于应用从底层获取数据,如在满足一定条件下,则从底层的数据提供模块持续获取数据。
然而,发明人在实施本申请实施例的过程中发现:当多个应用并行通过while循环从底层获取数据时,会导致电子设备的中央处理器(Central Processing Unit,CPU)占用过高,影响电子设备的性能。
发明内容
有鉴于此,本申请提供了一种数据获取方法及电子设备,在多个应用需要从底层获取数据时,可以仅使用一个While循环来获取,从而降低CPU占用率。
第一方面,本申请实施例提供一种数据获取方法,可应用于包括第一应用、第二应用和第三应用的电子设备,如智能电视、手机、平板等。在第一应用需要获取第一数据的情况下,第一应用在第三应用中注册第一监听对象。在第二应用需要获取第一数据的情况下,第二应用在第三应用中注册第二监听对象。第三应用采用while循环获取第一数据,将第一数据回调给第一监听对象和第二监听对象。
综上所述,采用本申请实施例的方法,当电子设备中的多个应用(如第一应用、第二应用,下同)都需要获取第一数据时,该多个应用可以分别在第三应用中注册监听对象,然后由第三应用采用一个while循环获取第一数据并回调给各个监听对象。从而在多个应用需要从底层获取数据时,可以仅使用一个while循环来获取,降低CPU占用率,而且可以避免出现ANR现象。
在一种可能的设计方式中,第一应用具有音视频录制的功能,第一数据包括音频数据、视频数据和/或UI信息,上述方法还包括:响应于电子设备开始播放视频,电子设备确定第一应用需要获取第一数据。上述第三应用采用while循环获取第一数据,包括:第三应用采用while循环获取第k帧视频的音频数据、视频数据和/或UI信息,第k帧视频是电子设备当前正在播放的一帧视频,1≤k,k为整数。上述将第一数据回调给第一监听对象,包括:将第k帧视频的音频数据、视频数据和/或UI信息回调给第一监听对象。
也就是说,采用本实施例的方法,可以将当前播放的视频的每一帧数据(包括音频数据、视频数据和/或UI信息)都获取到并回调给需要的应用,如具有音视频录制的功能的第一应用。
在一种可能的设计方式中,上述第三应用采用while循环获取第k帧视频的音频数据、视频数据和/或UI信息,包括:第三应用采用while循环从电子设备的音频捕获模块AudioCapture获取第k帧视频的音频数据,从电子设备的屏幕捕获模块ScreenCapture获取第k帧视频的屏幕显示数据,屏幕显示数据包括视频数据,或者,屏幕显示数据包括视频数据和UI信息。
也就是说,采用本实施例的方法,由AudioCapture提供音频数据,由ScreenCapture提供屏幕显示数据,从而使第三应用可以获取到每一帧视频的音频数据和屏幕显示数据,有利于后续各个应用获取到每一帧视频的音频和显示内容的信息。
在一种可能的设计方式中,AudioCapture产生视频数据的时间间隔不固定,ScreenCapture产生屏幕显示数据的时间间隔不固定。
也就是说,采用本实施例的方法,数据提供模块(即AudioCapture和ScreenCapture)产生相应数据的时间间隔不固定,针对该场景,采用while循环从数据提供模块获取相应数据,可以避免数据遗漏。
在一种可能的设计方式中,在将第k帧视频的音频数据、视频数据和/或UI信息回调给第一监听对象之后,上述方法还包括:第一应用将当前回调给第一监听对象的第k帧视频的音频数据、视频数据和/或UI信息存储在第一应用的缓存中,且若缓存中存储有第k-m帧视频的音频数据、视频数据和/或UI信息,第k-m帧视频的音频数据、视频数据和/或UI信息会被覆盖,1<m,m为整数。
也就是说,采用本实施例的方法,第一应用可以在缓存中存储最新的m帧视频的数据。一方面可以保留数据供后续使用,另一方面不会占用过多的存储空间。
在一种可能的设计方式中,在第一应用将当前回调给第一监听对象的第k帧视频的音频数据、视频数据和/或UI信息存储在第一应用的缓存中之后,上述方法还包括:第一应用响应于第一请求,基于缓存中存储的数据合成视频文件。第一应用存储视频文件。
也就是说,采用本实施例的方法,第一应用可以基于缓存中的数据生成视频文件,从而可以实现回录,即生成已经播放过的视频片段的视频文件。无需用户调节播放进度条确定回录的起始位置和结束位置,即可实现回录。同时,在直播场景中,也可以实现回录。
在一种可能的设计方式中,在第一应用在第三应用中注册第一监听对象之后,上述方法还包括:在第一应用不需要获取第一数据的情况下,第一应用取消在第三应用中注册的第一监听对象,在取消第一监听对象后,第三应用不再将获取的第一数据回调给第一监听对象。在第二应用在第三应用中注册第二监听对象之后,上述方法还包括:在第二应用不需要获取第一数据的情况下,第二应用取消在第三应用中注册的第二监听对象,在取消第二监听对象后,第三应用不再将获取的第一数据回调给第二监听对象。
也就是说,采用本实施例的方法,在各个应用无需获取第一数据后,则可以取消在第三应用中注册的监听对象,从而不会再接收到第三应用回调的数据。
在一种可能的设计方式中,第一应用具有音视频录制的功能,第一数据包括音频数据、视频数据和/或UI数据信息,上述方法还包括:电子设备结束播放视频,确定第一应用不需要获取第一数据。
在一种可能的设计方式中,电子设备中还包括第四应用,上述方法还包括:在第四应用需要获取第一数据的情况下,第四应用在第三应用中注册第三监听对象。第三应用将第一数据回调给第三监听对象。
也就是说,采用本实施例的方法,除前述第一应用和第二应用外,还可以由更多的应用,如第四应用在需要获取第一数据的情况下,通过在第三应用中注册监听对象,以实现获取第一数据。
在一种可能的设计方式中,电子设备是智能电视,第三应用为电视服务应用,电视服务应用具有隔离应用与第一数据的数据提供模块,且具有调用数据提供模块中获取第一数据的接口的功能。
第二方面,本申请实施例提供一种电子设备,电子设备包括存储器和处理器,所述存储器和所述处理器耦合;其中,存储器中存储有计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被处理器执行时,使得电子设备执行如第一方面及其任一种可能的设计方式的方法。
第三方面,本申请实施例提供一种芯片系统,该芯片系统应用于包括显示屏和存储器的电子设备;所述芯片系统包括一个或多个接口电路和一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述电子设备执行如第一方面及其任一种可能的设计方式所述的方法。
第四方面,本申请提供一种计算机存储介质,该计算机存储介质包括计算机指令,当所述计算机指令在电子设备上运行时,使得电子设备执行如第一方面及其任一种可能的设计方式所述的方法。
第五方面,本申请提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面及其任一种可能的设计方式所述的方法。
可以理解地,上述提供的第二方面所述的电子设备,第三方面所述的芯片系统,第四方面所述的计算机存储介质,第五方面所述的计算机程序产品所能达到的有益效果,可参考第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的获取数据的原理图之一;
图2为本申请实施例提供的获取数据的原理图之二;
图3为本申请实施例提供的一种智能电视300的硬件结构图;
图4为本申请实施例提供的一种智能电视300的软件结构图;
图5为本申请实施例提供的获取数据的原理图之三;
图6为本申请实施例提供的触发录屏应用开始和结束音视频录制的实现交互图;
图7为本申请实施例提供的应用获取数据的实现交互图;
图8为本申请实施例提供的录屏应用获取音视频数据后的处理过程示意图;
图9为本申请实施例提供的芯片系统的结构图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
while循环可用于应用从底层获取数据,该数据可以是视频数据、音频数据、文本数据或其他业务数据等。当某个应用需要获取电子设备的底层产生的数据时,该应用可以通过while循环调用底层(如下文中数据提供模块110)中获取相应数据的接口,实现数据获取,
以视频数据为例,while循环可如下所示:
while(IsInVideo){//IsInVideo为表示电子设备正在播放视频的标志位,(IsInVideo)表示满足正在播放视频的条件;
byte[]buffer=getVideoBuffer()//调用getVideoBuffer接口获取视频数据;
}。
也就是说,上述示例中的while循环表示:只要满足电子设备正在播放视频,则获取视频数据。
当仅有单个应用采用上述方式来获取数据时,效果较为良好。但是,参见图1,在应用1、应用2……应用n都需要(即多个应用需要)从同一数据提供模块110中获取相同数据的情况下,应用1、应用2……应用n则需要分别通过while循环调用数据提供模块110中获取相应数据的接口,如获取视频数据的getVideoBuffer接口。相应的,数据提供模块110需要根据应用1、应用2……应用n分别的调用请求来调度数据,从而使各个应用可以获取到数据。一方面,应用1、应用2……应用n对应的多个while循环会占用较高的CPU资源,影响电子设备的性能。另一方面,应用1、应用2……应用n都需要调用数据提供模块110中的同一接口,从而可能导致该接口的调度出错,使应用1、应用2……应用n都出现应用不响应(Application Not Response,ANR)的现象。
基于上述问题,参见图2,本申请实施例提供一种数据获取方法,可应用于智能电视、手机、平板等电子设备。在电子设备中的应用1,应用2……应用n都需要从同一数据提供模块110中获取相同数据的情况下,应用1,应用2……应用n可以分别在接口应用210中注册各自的监听对象,以及,接口应用210采用一个while循环调用数据提供模块110中获取相应数据的接口获取到数据并回调给各个监听对象。从而应用1,应用2……应用n可以获取到该同一数据。其中,接口应用210是电子设备中用于隔离应用层和底层的应用,底层提供的各个接口都可以通过接口应用210来访问,如此,电子设备中的接口应用210可以仅通过一个while循环实现多个应用从同一数据提供模块110获取相同数据,由多个while循环缩减到一个while循环,可以降低CPU的占用率,并且可以避免出现ANR现象。
为了方便说明,可以将应用1,应用2……应用n中的任意三个应用分别为第一应用、第二应用和第四应用;可以将接口应用210称为第三应用;可以将第一应用、第二应用和第四应用分别在第三应用中注册的监听对象依次称为第一监听对象,第二监听对象和第三监听对象;以及,可以将应用1,应用2……应用n需要获取的相同数据称为第一数据。
需要说明的是,在下文中,主要以应用1为第一应用,且第一应用是智能电视中的录屏APP(WonderfulTV),以及第一数据为音视频数据(包括下文中的音频数据、视频数据和/或UI信息)为例来说明。
示例性的,本申请实施例中的电子设备可以是智能电视(也可以称为智慧屏、大屏等)、手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备等设备,本申请实施例对该电子设备的具体形态不作特殊限制。下面以电子设备是智能电视为例,说明本申请实施例提供的电子设备的硬件结构和软件结构。
参见图3,为本申请实施例提供的一种智能电视300的硬件结构图。如图3所示,智能电视300可以包括:处理器310,外部存储器接口320,内部存储器321,通用串行总线(universal serial bus,USB)接口330,电源管理模块340,天线,无线通信模块360,音频模块370,扬声器370A,麦克风370C,音箱接口370B,传感器模块380,按键390,指示器391,摄像头393,以及显示屏392等。
其中,上述传感器模块380可以包括距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器等传感器。
可以理解的是,本实施例示意的结构并不构成对智能电视300的具体限定。在另一些实施例中,智能电视300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器310可以包括一个或多个处理单元,例如:处理器310可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是智能电视300的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
在一些实施例中,处理器310可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,和/或USB接口等。
电源管理模块340用于连接电源。充电管理模块340还可以与处理器310、内部存储器321、显示屏392、摄像头393和无线通信模块360等连接。电源管理模块341接收电源的输入,为处理器310、内部存储器321、显示屏392、摄像头393和无线通信模块360等供电。在一些实施例中,电源管理模块341也可以设置于处理器310中。
智能电视300的无线通信功能可以通过天线和无线通信模块360等实现。其中,无线通信模块360可以提供应用在智能电视300上的包括无线局域网(wireless local areanetworks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
智能电视300通过GPU,显示屏392,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏392和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器310可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
智能电视300可以通过ISP,摄像头393,视频编解码器,GPU,显示屏392以及应用处理器等实现拍摄功能。ISP用于处理摄像头393反馈的数据。在一些实施例中,ISP可以设置在摄像头393中。
或者,智能电视300可以不包括摄像头,即上述摄像头393并未设置于智能电视300中。智能电视300可以通过接口(如USB接口330)外接摄像头393。该外接的摄像头393可以通过外部固定件(如带夹子的摄像头支架)固定在智能电视300上。例如,外接的摄像头393可以通过外部固定件,固定在智能电视300的显示屏392的边缘处,如上侧边缘处。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当智能电视300在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。视频编解码器用于对数字视频压缩或解压缩。智能电视300可以支持一种或多种视频编解码器。这样,智能电视300可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现智能电视300的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口320可以用于连接外部存储卡,例如Micro SD卡,实现扩展智能电视300的存储能力。外部存储卡通过外部存储器接口320与处理器310通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器321可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器310通过运行存储在内部存储器321的指令,从而执行智能电视300的各种功能应用以及数据处理。例如,在本申请实施例中,处理器310可以通过执行存储在内部存储器321中的指令,内部存储器321可以包括存储程序区和存储数据区。
智能电视300可以通过音频模块370,扬声器370A,麦克风370C,音箱接口370B,以及应用处理器等实现音频功能。例如,音乐播放,录音等。
音频模块370用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块370还可以用于对音频信号编码和解码。在一些实施例中,音频模块370可以设置于处理器310中,或将音频模块370的部分功能模块设置于处理器310中。扬声器370A,也称“喇叭”,用于将音频电信号转换为声音信号。麦克风370C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
音箱接口370B用于连接有线音箱。音箱接口370B可以是USB接口330,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
按键390包括开机键,音量键等。按键390可以是机械按键。也可以是触摸式按键。智能电视300可以接收按键输入,产生与智能电视300的用户设置以及功能控制有关的键信号输入。
指示器391可以是指示灯,可以用于指示智能电视300处于开机状态、待机状态或者关机状态等。例如,指示灯灭灯,可指示智能电视300处于关机状态;指示灯为绿色或者蓝色,可指示智能电视300处于待机状态;指示灯为红色,可指示智能电视300处于待机状态。
上述智能电视300的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明智能电视300的软件结构。分层架构将智能电视300的软件系统分成若干个层,每一层都有清晰的角色和分工,层与层之间通过软件接口通信。
参见图4,智能电视300的软件架构分为五层,分别为应用程序层(applications)、应用程序框架层(application framework)、抽象层(HAL)、内核层(kernel)以及驱动层。在图4中,将抽象层(HAL)和内核层(kernel)合并在一层中说明。
应用程序层中可以安装通话,备忘录,浏览器,联系人,相机,图库,日历,地图,蓝牙,音乐,短信息等APP(应用,application)。如图4所示,应用程序层中还可以包括电视服务APP(TvServiceTv)和录屏APP(WonderfulTV)。WonderfulTV提供有音视频录制功能,开启音视频录制功能后,WonderfulTV可以在智能电视300播放视频的情况下,录制音视频。音频视频录制需要获取音频数据和视频数据的。即,WonderfulTV是一种需要获取音频数据和视频数据的APP。TvServiceTv可作为一种接口应用210,TvServiceTv可以通过while循环调用底层的接口,获取到音频数据和视频数据而后回调给有需求的应用,如WonderfulTV。以及,应用程序层中还可以包括视频APP,视频APP是一种视频内容的提供方,可以由视频APP提供视频内容并在智能电视300上播放。应理解,视频APP提供的视频内容通常主要是点播内容。
应用程序框架层为应用程序层的APP提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图4所示,应用程序框架层中可以包括音频管理模块(AudioFlinger)、媒体播放器(MediaPlayer)以及窗口系统(Surfaceflinger)。其中,AudioFlinger主要用于传输视频APP提供的视频内容中的音频数据,MediaPlayer主要用于传输视频APP提供的视频内容中的视频数据,Surfaceflinger主要用于传输视频播放界面中的播放进度条、暂停/播放按钮、倍速调节按钮、画质调节按钮等用户界面(User Interface,UI)信息。
如图4所示,硬件抽象层/内核层中包括音频输出(AudioOutput,AO)、视频输出(VideoOutput,VO)以及屏幕菜单式调节方式模块(OnScreenDisplay,OSD)。其中,AO用于输出音频。VO用于输出视频。OSD用于输出UI信息。
以及,如图4所示,硬件抽象层/内核层中还包括数据融合模块(可简称MIX),音频捕获模块(AudioCapture)以及屏幕捕获模块(ScreenCapture)。其中,MIX用于将VO输出的视频数据和OSD输出的UI内容融合,得到视频播放过程中播放界面显示的内容(可记为屏幕数据)。也就是说,屏幕数据包括界面上显示的视频画面和UI内容。AudioCapture以及ScreenCapture可作为两个数据提供模块110。AudioCapture用于从AO获取音频数据。ScreenCapture则用于从MIX获取屏幕数据。
如图4所示,驱动层中包括直播输入模块。直播输入模块是另一种视频内容的提供方,可以由直播输入模块提供直播内容并在智能电视300上播放。直播输入模块可以是高清多媒体接口(High Definition Multimedia Interface,HDMI)、数字电视(Digital TV,DTV)或者复合式视频接口(Audio Video,AV)等。直播输入模块可以接入机顶盒、天线等,从而可以提直播内容。并且,直播输入模块接收到的直播内容会在解码得到音频数据和视频数据后分别通过AO和VO输出。
本申请实施例提供的数据获取方法,可以在具有上述硬件结构和软件结构的智能电视300中实现。参见图5,在下文中,主要以WonderfulTV为应用1,应用2……应用n中的应用1,TvServiceTv是前文中的接口应用210,AudioCapture和ScreenCapture是前文中的数据提供模块110为例来说明本申请方案。
在智能电视300中,WonderfulTV提供有音视频录制功能。在开启音视频录制功能后,智能电视300开始播放视频内容(包括直播内容或点播内容),则可以触发WonderfulTV录制音视频,从而需要获得音频数据和视频数据。智能电视300结束播放视频内容(包括直播内容或点播内容),则可以触发WonderfulTV结束录制音视频,从而不再需要获得音频数据和视频数据。
应理解,图5中的应用2……应用n也是需要获取音频数据和视频数据的应用。例如,应用2可以是用于手机控制智能电视300的应用,在播放视频时,该应用也需要获取音频数据和视频数据,以用于实现对智能电视300的控制。
继续参见图5,在智能电视300中的WonderfulTV、应用2……应用n都需要从AudioCapture中获取音频数据,以及从ScreenCapture中获取融合后的屏幕数据(包括视频数据,下同)的情况下,WonderfulTV、应用2……应用n可以分别在TvServiceTv中注册各自的监听对象,以及,TvServiceTv采用一个while循环分别调用AudioCapture和ScreenCapture中获取相应数据的接口,以获取音频数据和融合后的屏幕数据并回调给各个监听对象,从而各个监听对象都可以获取到音频数据和屏幕数据。
下面依次说明开启WonderfulTV的音视频录制功能(记为步骤一)、触发WonderfulTV开始音视频录制(可记为步骤二)、音视频录制(可记为步骤三)以及WonderfulTV结束音视频录制(可记为步骤四)的具体实现。
步骤一,开启WonderfulTV的音视频录制功能。在智能电视300的设置中或者在WonderfulTV的设置中,可以提供WonderfulTV的音视频录制功能的控制开关。控制开关默认可以是开启状态或者关闭状态。在控制开关处于关闭状态的情况下,WonderfulTV响应于用户对该控制开关的触发操作(如点击、长按等操作),可以开启音视频录制功能。在控制开关处于开启状态的情况下,WonderfulTV响应于用户对该控制开关的触发操作(如点击、长按等操作),可以关闭音视频录制功能。
步骤二,触发WonderfulTV开始音视频录制。在开启WonderfulTV的音视频录制功能后,在视频APP播放视频内容的情况下,视频APP一方面需要播放每一帧视频中的音频数据,例如,可采用图6所示S601-S603实现播放第1帧视频中的音频;另一方面需要播放每一帧视频中的视频数据,例如,可采用图6所示S607-S609实现播放第1帧视频中的视频;再一方面需要显示每一帧视频的播放界面中的UI内容,例如,可采用图6所示S604-S606实现显示第1帧视频的播放界面中的UI内容。需要说明的是,上述三个方面的执行顺序并没有严格限制,实际实施时,为了保证音频、视频和UI内容同步输出,可以同步执行上述三个方面,例如,可以同步执行S601-S603,S604-S606以及S607-S609。
S601、视频APP向AudioFlinger发送第1帧视频的音频数据。
S602、AudioFlinger向AO发送第1帧视频的音频数据。
S603、AO基于输出第1帧视频的音频数据。
AO输出第1帧视频的音频数据后,智能电视300则可以播放第1帧视频的音频。
S604、视频APP向Surfaceflinger发送第1帧视频的播放界面的UI信息。
S605、Surfaceflinger向OSD发送第1帧视频的播放界面的UI信息。
S606、OSD基于第1帧视频的播放界面的UI信息输出第1帧视频的播放界面的UI内容。
OSD输出第1帧视频的播放界面的UI内容后,智能电视300则可以显示第1帧视频的播放界面中的进度条、播放/暂停按钮等UI内容。
S607、视频APP向MediaPlayer发送第1帧视频的视频数据。
S608、MediaPlayer向VO发送第1帧视频的视频数据。
S609、VO输出第1帧视频的视频数据。
VO输出第1帧视频的视频数据后,智能电视300则可以显示第1帧视频的视频画面。
S610、VO响应于输出第1帧视频的视频数据,向TvServiceTv发送送显信号。
在本申请实施例中,VO开始输出视频数据(即输出第1帧视频数据)时则会向TvServiceTv发送送显信号,送显信号用于通知当前已开始播放视频。需要在此说明的是,可以由VO或者由其它辅助模块来识别当前输出的是否为第1帧视频的视频数据,本申请实施例对此不作具体限定。
S611、TvServiceTv向WonderfulTV发送送显通知。
TvServiceTv在接收到送显信号后,则进一步向WonderfulTV发送送显通知,从而通知WonderfulTV当前已经开始播放视频。
S612、WonderfulTV响应于送显通知,开始音视频录制。
如此,每当开始播放视频APP提供的视频后,则会触发WonderfulTV开始音视频录制,此时则需要获取音视频数据。换言之,智能电视300开始播放视频,则可以确定WonderfulTV需要获取所述第一数据。
在说明下述步骤三之前,需要先在此说明的是:在采用前述图6的流程,通过AO输出第1帧视频的音频数据,通过VO输出第1帧视频的视频数据以及通过OSD输出第1帧视频的UI内容之后,会继续通过AO输出第2帧视频、第3帧视频……的音频数据,通过VO输出第2帧视频、第3帧视频……的视频数据以及通过OSD输出第2帧视频、第3帧视频……的UI内容。为了方便说明,可以将智能电视300当前正在播放的一帧视频称为第k帧视频,显然,第k帧视频为当前播放的视频中的第1帧视频至第最后一帧视频中的一帧视频。其中,1≤k,k为整数。
步骤三,音视频录制。在触发WonderfulTV开始音视频录制后,WonderfulTV则需要获取每一帧视频的音频数据和屏幕数据,从而完成音视频录制。参见图7,音视频录制的的具体实现包括以下步骤。
S701、wonderfulTV响应于接收到送显通知,在TvServiceTv中注册监听对象1。
也就是说,在前述S612中,wonderfulTV接收到送显通知后,则可以在TvServiceTv中注册一个监听对象,即监听对象1。应理解,在wonderfulTV注册监听对象后,TvServiceTv获取到的数据则可以回调给该监听对象,从而wonderfulTV也可以获取到数据。
在一些实施例中,TvServiceTv可以开放预设接口,该预设接口用于需要获取音频数据和视频数据的应用注册监听对象。示例性的,wonderfulTV响应于送显通知,则可以调用该预设接口注册监听对象1。
在一些实施例中,TvServiceTv可以维护监听对象数组,该监听对象数组中记录有需要获取音频数据和视频数据的应用注册的监听对象。应理解,当应用无需继续获取音频数据和视频数据后,也可以取消监听,TvServiceTv则会从监听对象数组中删除相应的监听对象。
当TvServiceTv检测到第一个需要获取音频数据和视频数据的监听对象后,如监听对象数组从空值变为有监听对象后,则表明有应用需要通过TvServiceTv获取音频数据和视频数据。该情况下,一方面需要执行下述S702,以通知AudioCapture获取音频数据,从而可以提供音频数据供TvServiceTv获取。另一方面需要执行下述S703-S704,以通知ScreenCapture获取屏幕数据,从而可以提供屏幕数据供TvServiceTv获取。
需要说明的是:在开始播放视频后,则会开启wonderfulTV的音视频录制功能,从而需要获取音频数据和视频数据,则需要注册监听对象1。也就是说,在开始播放视频后,wonderfulTV则在TvServiceTv注册监听对象1。那么,wonderfulTV注册的监听对象1极有可能是第一个需要获取音频数据和视频数据的监听对象。本文中,主要以监听对象1是第一个需要获取音频数据和视频数据的监听对象为例来说明。
S702、TvServiceTv在检测到监听对象1后,向AudioCapture发送数据获取通知。
S703、TvServiceTv在检测到监听对象1后,向ScreenCapture发送数据获取通知。
S704、ScreenCapture向MIX发送数据获取通知。
S705、AudioCapture响应于数据获取通知,从AO获取第k帧视频的音频数据并存入音频数据的缓存中。
如此,AudioCapture可以提供音频数据供TvServiceTv获取。
S706、MIX响应于数据获取通知,从VO获取第k帧视频的视频数据,从OSD获取第k帧视频的UI信息。
S707、MIX将第k帧视频对应的视频数据和UI信息融合,得到第k帧视频的屏幕数据。
其中,屏幕数据也可以称为屏幕显示数据。
S708、ScreenCapture从MIX获取第k帧视频的屏幕数据并存储屏幕数据的缓存中。
如此,AudioCapture可以提供屏幕数据供TvServiceTv获取。
经过上述S706-S708,可以提供包括视频数据和UI信息的屏幕数据供TvServiceTv获取,那么后续使用该屏幕数据则可以确定播放第k帧视频时界面上显示的所有内容,而不仅仅是确定视频画面。当然,在另一些实施例中,ScreenCapture也可以直接从VO获取第k帧视频的视频数据并存入缓存中。本申请实施例对此不作具体限定。
经过上述S701-S708,在智能电视300开始播放视频后,则可以触发AudioCapture获取第k帧视频的音频数据,以及触发ScreenCapture获取第k帧视频的屏幕数据。与此同时,TvServiceTv可以采用while循环,即下述S709-S710,使各个监听对象可以获取到第k帧视频的音频数据和屏幕数据。
S709、TvServiceTv从AudioCapture获取第k帧视频的音频数据,从ScreenCapture获取第k帧视频的屏幕数据。
在一些场景中,原始的视频数据和音频数据的数据量较大,不利于存储。例如,原始的视频数据通常是以像素数据存储的,而一帧视频画面中包括的像素点数量极大,不利于存储。基于此,在一些实施例中,在上述S705中获取到第k帧视频的音频数据后,AudioCapture可以先对其编码,然后存入音频数据的缓存中;在上述S708中获取到第k帧视频的屏幕数据后,ScreenCapture可以先对其编码然后存入屏幕数据的缓存中。例如,将第k帧视频的屏幕数据编码为H264格式,从而可以极大的缩减数据量。
在本实施例中,编码的过程是需要占用CPU资源的。若智能电视300当前的CPU占用较高,则为编码过程分配的CPU资源可能较少,编码的耗时可能较长;若智能电视300当前的CPU占用较低,则为编码过程分配的CPU资源较多,编码的耗时可能较短。也就是说,编码过程的耗时是不固定的。那么,AudioCapture向音频数据的缓存中存入音频数据的时间间隔和ScreenCapture向屏幕数据的缓存中存入屏幕数据的时间间隔是不固定的。针对这种情况,若以固定周期从音频数据的缓存中获取音频数据,以及从屏幕数据的缓存中获取屏幕数据,则可能导致数据遗漏,从而出现丢帧的问题。
以从屏幕数据的缓存中获取屏幕数据为例,正常情况下,ScreenCapture以40ms的时间间隔存入新一帧视频的屏幕数据至屏幕数据的缓存中,此时以16ms的固定周期从屏幕数据的缓存获取数据,则可以获取到每一帧视频的屏幕数据。但是,若某段时间智能电视300的CPU占用较高,导致ScreenCapture只能分别以大概20ms的时间间隔存入新一帧视频的屏幕数据至屏幕数据的缓存。其中,新一帧视频的屏幕数据会覆盖历史的屏幕数据。此时若仍以16ms的固定周期从音频数据的缓存和屏幕数据的缓存获取数据,则可能导致数据遗漏,从而出现丢帧的情况。
而采用while循环,则可以灵活控制while循环以较短的时间间隔从音频数据的缓存中获取音频数据,以及从屏幕数据的缓存中获取屏幕数据。从而保证可以在AudioCapture以较短的时间完成编码并存入新的音频数据,以及ScreenCapture以较短的时间完成编码并存入新的屏幕数据的情况下,TvServiceTv不会遗漏数据。并且,当采用while循环从音频数据的缓存获取到空数据或者从屏幕数据的缓存获取到空数据后,while循环可以停顿固定时间,然后继续以较短的时间间隔从音频数据的缓存中获取音频数据,以及从屏幕数据的缓存中获取屏幕数据。从而保证可以在AudioCapture以较长的时间完成编码并存入新的音频数据,以及ScreenCapture以较场的时间完成编码并存入新的屏幕数据的情况下,TvServiceTv也不会遗漏数据。也就是说,采用while循环,在数据提供模块110产生数据的时间间隔不固定的场景中,可以保证不会遗漏数据。
S710、TvServiceTv将第k帧视频的音频数据和屏幕数据回调给监听对象1。
在本文中,主要说明了WonderfulTV在智能电视300开始播放视频后,则在TvServiceTv中注册监听对象1的具体实现。实际中,其他应用在需要获取当前播放的视频的音频数据和视频数据的情况下,也可以在TvServiceTv中注册相应的监听对象。示例性的,图7中的应用2在需要获取音频数据和视频数据的情况下,可以在TvServiceTv中注册监听对象2……图7中的应用n在需要获取音频数据和视频数据的情况下,可以在TvServiceTv中注册监听对象n。
那么,TvServiceTv在获取到第k帧视频的音频数据和屏幕数据后,TvServiceTv可以遍历所有监听对象,实现将第k帧视频的音频数据和屏幕数据回调给所有的监听对象。例如,还可以回调给图7所示S710中括号内的监听对象2……监听对象n。
为了便于对上述S709-S710的理解,下面以将各个监听对象存储在监听对象数组Listener[]中,并且获取的数据仅包括视频数据为例,说明一个while循环的具体实现:
while(IsInVideo){//IsInVideo为表示电子设备正在播放视频的标志位,(IsInVideo)表示满足正在播放视频的条件;
Byte[]buffer=getVideoBuffer()//调用getVideoBuffer接口从ScreenCapture获取视频数据;
For(int i=1;i<n;i++){//从监听对象数组中的第1个监听对象开始遍历,n为监听对象数组中监听对象的数量;
Listener[i].onvideobuffer(buffer);//将获取到的视频数据回调给当前遍历到的监听对象i的onvideobuffer方法,onvideobuffer是需要监听对象i中需要使用视频数据的方法。
}。
TvServiceTv将第k帧视频的音频数据和屏幕数据回调给各个监听对象后,WonderfulTV、应用2……应用n则可以获取到第k帧视频的音频数据和屏幕数据。并且,TvServiceTv执行回调的动作也会触发WonderfulTV、应用2……应用n分别按照各自的业务逻辑来处理第k帧视频的音频数据和屏幕数据。示例性的,TvServiceTv执行回调语句“Listener[i].onvideobuffer(buffer)”则会触发相应的应用执行其onvideobuffer方法,从而可以完成对视频数据的处理。例如,应用2的onvideobuffer方法是将第k帧视频的视频数据发送给与智能电视300连接的手机,则TvServiceTv执行回调语句“Listener[i].onvideobuffer(buffer)”会同时触发应用2执行onvideobuffer方法,将第k帧视频的视频数据发送给与智能电视300连接的手机。
其中,WonderfulTV按照其业务逻辑,可以执行下述S711。
S711、WonderfulTV存储第k视频的音频数据和屏幕数据。
WonderfulTV在存储第k视频的音频数据和屏幕数据后,后续则可以使用存储的数据合成用户需要的视频。
在一些视频播放场景中,用户在观看到精彩的视频片段后,想要保存下该视频片段(可称为回录)。此时,由于该视频片段已经播放过了,用户若想要录制该视频片段,则需要将视频回退到该视频片段的起始位置,然后开启录制,并在录制到该视频片段的结束位置时,关闭录制,上述录制视频片段的过程操作复杂。并且,上述录制视频片段的方式通常仅适用于点播视频,而对于直播视频,则根本无法回退,从而无法实现对已播放的视频片段的录制。例如,在球赛直播的1小时整进了一个漂亮的球,用户想要录制该进球的过程,则难以实现。
基于此,在一些实施例中,参见图8,WonderfulTV可以存储m帧视频的数据,即m帧视频的音频数据和屏幕数据。WonderfulTV在获取到第k帧视频的音频数据和屏幕数据后,可以将第k帧数据存储到缓存中,并且缓存中的第k-m帧数据则会被覆盖掉。其中,1<m,m为整数。应理解,随着视频播放,WonderfulTV的缓存中会存储越来越多的音频数据和屏幕数据,当存储的音频数据和屏幕数据超过m帧后,每次新存入第k帧视频的音频数据和屏幕数据,则会覆盖第k-m帧视频的音频数据和屏幕数据。
在本实施例中,用户可以发起回录请求。示例性的,用户点击或者长按智能电视300配套的遥控器上的预设按键(如“ok”按键)可以发起回录请求。或者,用户点击或者长按智能电视300的视频播放界面中的预设控件(如视频播放界面中设置有“回录”按钮)可以发起回录请求(也可以称为第一请求)。回录请求用于请求合成已经播放的视频片段。WonderfulTV响应于回录请求,则可以从缓存中获取最新的t帧视频的音频数据和屏幕数据,即第k-t+1至第k帧的音频数据和屏幕数据。以每秒30帧的帧率为例,若回录的视频片段的长度为15s,则t=20*15=450,即从缓存中获取最新的450帧视频的音频数据和屏幕数据。其中,t<m,从而可以保证缓存中有足够的数据用于回录。然后,WonderfulTV基于该t帧视频的音频数据和屏幕数据合成视频文件,如MP4文件,并存入智能电视300的媒体存储数据库中,以供用户查看。
需要说明的是,上述图8的示例中,以从缓存中获取t帧视频的音频数据和屏幕数据并合成视频文件的方式来说明。在另一些实施例中,WonderfulTV在获取到第k帧视频的音频数据和屏幕数据后,可以记录第k帧视频的音频数据和屏幕数据的时间戳。WonderfulTV响应于回录请求,则可以基于时间戳从缓存中获取距离当前时刻的时间间隔在预设间隔(如15s)之内的音频数据和屏幕数据。然后,WonderfulTV基于预设间隔(如15s)内的音频数据和屏幕数据合成视频文件,并存入智能电视300的媒体存储数据库中,以供用户查看。
步骤四、WonderfulTV结束音视频录制。在视频播放结束后,AO可以向TvServiceTv发送结束送显信号,结束送显信号用于指示当前已结束播放视频。TvServiceTv响应于结束送显通知,可以向WonderfulTV发送结束送显通知,结束送显通知用于通知WonderfulTV当前已结束播放视频。WonderfulTV响应于结束送显通知,在TvServiceTv中取消监听。后续TvServiceTv则不会遍历到监听对象1,从而不会将数据回调给监听对象1。WonderfulTV则无法获取到相应的数据。
类似的,应用2……应用n中的任一应用在不需要获取音频数据和视频数据后,也可以在TvServiceTv中取消监听。后续TvServiceTv则不会遍历到相应应用的监听对象。最终,WonderfulTV则无法获取到相应的数据。
需要说明的是,在结束播放视频后,WonderfulTV才会取消监听,则WonderfulTV极有可能比应用2……应用n取消监听的时机更晚。也就是说,WonderfulTV可能是最后一个取消监听的,在WonderfulTV取消监听后,TvServiceTv中则没有监听对象了。该情况下,TvServiceTv则可以停止采用while循环从AudioCapture获取音频数据,以及停止采用while循环从ScreenCapture获取屏幕数据。
最后,前述实施例中主要以视频APP提供视频内容说明了本申请方案。当然,也可以是直播输入模块提供视频内容。与视频APP提供视频内容不同的是:在由直播APP提供视频内容的情况下,由于直播输入模块将音频数据解码并通过AO输出,以及直播输入模块将直播的视频数据解码并通过VO输出,而并没有UI内容通过OSD输出,那么,TvServiceTv从ScreenCapture获取的仅有视频数据,而不是视频数据和UI内容融合后的屏幕数据。
本申请实施例还提供一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中设备执行的各个功能或者步骤。
本申请实施例还提供一种芯片系统,如图9所示,该芯片系统900包括至少一个处理器901和至少一个接口电路902。处理器901和接口电路902可通过线路互联。例如,接口电路902可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路902可用于向其它装置(例如处理器901)发送信号。示例性的,接口电路902可读取存储器中存储的指令,并将该指令发送给处理器901。当所述指令被处理器901执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的图像处理方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的图像处理方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的图像处理方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。

Claims (13)

1.一种数据获取方法,其特征在于,应用于包括第一应用、第二应用和第三应用的电子设备,所述方法包括:
在所述第一应用需要获取第一数据的情况下,所述第一应用在所述第三应用中注册第一监听对象;
在所述第二应用需要获取所述第一数据的情况下,所述第二应用在所述第三应用中注册第二监听对象;
所述第三应用采用while循环获取所述第一数据,将所述第一数据回调给所述第一监听对象和所述第二监听对象。
2.根据权利要求1所述的方法,其特征在于,所述第一应用具有音视频录制的功能,所述第一数据包括音频数据、视频数据和/或UI信息,所述方法还包括:
响应于所述电子设备开始播放视频,所述电子设备确定所述第一应用需要获取所述第一数据;
所述第三应用采用while循环获取所述第一数据,包括:
所述第三应用采用所述while循环获取第k帧所述视频的所述音频数据、所述视频数据和/或所述UI信息,所述第k帧视频是所述电子设备当前正在播放的一帧视频,1≤k,k为整数;
所述将所述第一数据回调给所述第一监听对象,包括:
将所述第k帧视频的所述音频数据、所述视频数据和/或所述UI信息回调给所述第一监听对象。
3.根据权利要求2所述的方法,其特征在于,所述第三应用采用所述while循环获取第k帧所述视频的所述音频数据、所述视频数据和/或所述UI信息,包括:
所述第三应用采用所述while循环从所述电子设备的音频捕获模块AudioCapture获取所述第k帧视频的所述音频数据,从所述电子设备的屏幕捕获模块ScreenCapture获取所述第k帧视频的屏幕显示数据,所述屏幕显示数据包括所述视频数据,或者,所述屏幕显示数据包括所述视频数据和所述UI信息。
4.根据权利要求3所述的方法,其特征在于,所述AudioCapture产生所述视频数据的时间间隔不固定,所述ScreenCapture产生所述屏幕显示数据的时间间隔不固定。
5.根据权利要求2-4中任一项所述的方法,其特征在于,在所述将所述第k帧视频的所述音频数据、所述视频数据和/或所述UI信息回调给所述第一监听对象之后,所述方法还包括:
所述第一应用将当前回调给所述第一监听对象的所述第k帧视频的所述音频数据、所述视频数据和/或所述UI信息存储在所述第一应用的缓存中,且若所述缓存中存储有第k-m帧视频的所述音频数据、所述视频数据和/或所述UI信息,所述第k-m帧视频的所述音频数据、所述视频数据和/或所述UI信息会被覆盖,1<m,m为整数。
6.根据权利要求5所述的方法,其特征在于,在所述第一应用将当前回调给所述第一监听对象的所述第k帧视频的所述音频数据、所述视频数据和/或所述UI信息存储在所述第一应用的缓存中之后,所述方法还包括:
所述第一应用响应于第一请求,基于所述缓存中存储的数据合成视频文件;
所述第一应用存储所述视频文件。
7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述第一应用在所述第三应用中注册第一监听对象之后,所述方法还包括:
在所述第一应用不需要获取所述第一数据的情况下,所述第一应用取消在所述第三应用中注册的所述第一监听对象,在取消所述第一监听对象后,所述第三应用不再将获取的所述第一数据回调给所述第一监听对象;
在所述第二应用在所述第三应用中注册第二监听对象之后,所述方法还包括:
在所述第二应用不需要获取所述第一数据的情况下,所述第二应用取消在所述第三应用中注册的所述第二监听对象,在取消所述第二监听对象后,所述第三应用不再将获取的所述第一数据回调给所述第二监听对象。
8.根据权利要求7所述的方法,其特征在于,所述第一应用具有音视频录制的功能,所述第一数据包括音频数据、视频数据和/或UI数据信息,所述方法还包括:
所述电子设备结束播放所述视频,确定所述第一应用不需要获取所述第一数据。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述电子设备中还包括第四应用,所述方法还包括:
在所述第四应用需要获取所述第一数据的情况下,所述第四应用在所述第三应用中注册第三监听对象;
所述第三应用将所述第一数据回调给所述第三监听对象。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述电子设备是智能电视,所述第三应用为电视服务应用,所述电视服务应用具有隔离应用与所述第一数据的数据提供模块,且具有调用所述数据提供模块中获取所述第一数据的接口的功能。
11.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器和所述处理器耦合;其中,所述存储器中存储有计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
13.一种芯片系统,其特征在于,所述芯片系统应用于包括处理器和存储器的电子设备,所述芯片系统包括一个或多个接口电路和一个或多个处理器,所述接口电路和所述处理器通过线路互联,所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令,当所述处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
CN202211061023.4A 2022-08-31 2022-08-31 一种数据获取方法及电子设备 Active CN115543649B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211061023.4A CN115543649B (zh) 2022-08-31 2022-08-31 一种数据获取方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211061023.4A CN115543649B (zh) 2022-08-31 2022-08-31 一种数据获取方法及电子设备

Publications (2)

Publication Number Publication Date
CN115543649A true CN115543649A (zh) 2022-12-30
CN115543649B CN115543649B (zh) 2023-11-03

Family

ID=84725605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211061023.4A Active CN115543649B (zh) 2022-08-31 2022-08-31 一种数据获取方法及电子设备

Country Status (1)

Country Link
CN (1) CN115543649B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019066926A (ja) * 2017-09-28 2019-04-25 Kddi株式会社 コネクテッドカー車載器のアプリケーション管理方法および装置
CN109726026A (zh) * 2018-12-29 2019-05-07 北京字节跳动网络技术有限公司 一种交互数据处理方法、装置、设备及存储介质
CN111143583A (zh) * 2019-12-31 2020-05-12 五八有限公司 一种媒体数据库数据变化监听方法以及监听装置
CN111200744A (zh) * 2018-11-19 2020-05-26 Tcl集团股份有限公司 一种多媒体播放控制方法、装置及智能设备
CN113971073A (zh) * 2021-11-19 2022-01-25 阿里巴巴新加坡控股有限公司 数据调用方法、装置、电子设备及计算机存储介质
WO2022052712A1 (zh) * 2020-09-09 2022-03-17 华为技术有限公司 处理交互事件的方法和装置
CN114615423A (zh) * 2019-09-12 2022-06-10 华为技术有限公司 一种回调流的处理方法及设备
CN114666516A (zh) * 2022-02-17 2022-06-24 海信视像科技股份有限公司 显示设备及流媒体文件合成方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019066926A (ja) * 2017-09-28 2019-04-25 Kddi株式会社 コネクテッドカー車載器のアプリケーション管理方法および装置
CN111200744A (zh) * 2018-11-19 2020-05-26 Tcl集团股份有限公司 一种多媒体播放控制方法、装置及智能设备
CN109726026A (zh) * 2018-12-29 2019-05-07 北京字节跳动网络技术有限公司 一种交互数据处理方法、装置、设备及存储介质
CN114615423A (zh) * 2019-09-12 2022-06-10 华为技术有限公司 一种回调流的处理方法及设备
CN111143583A (zh) * 2019-12-31 2020-05-12 五八有限公司 一种媒体数据库数据变化监听方法以及监听装置
WO2022052712A1 (zh) * 2020-09-09 2022-03-17 华为技术有限公司 处理交互事件的方法和装置
CN113971073A (zh) * 2021-11-19 2022-01-25 阿里巴巴新加坡控股有限公司 数据调用方法、装置、电子设备及计算机存储介质
CN114666516A (zh) * 2022-02-17 2022-06-24 海信视像科技股份有限公司 显示设备及流媒体文件合成方法

Also Published As

Publication number Publication date
CN115543649B (zh) 2023-11-03

Similar Documents

Publication Publication Date Title
CN110109636B (zh) 投屏方法、电子设备以及系统
US11019124B2 (en) Screen mirroring method and apparatus thereof
US8019272B2 (en) Content reproducing apparatus and communication method therefor
CN107168666B (zh) 基于usb接口的音视频传输和多屏映射的系统和方法
CN106412687B (zh) 一种音视频片段的截取方法和装置
CN108282612B (zh) 视频处理方法及计算机存储介质、终端
CN113556598A (zh) 多窗口投屏方法及电子设备
CN108769726B (zh) 多媒体数据推送方法、装置、存储介质及设备
US20230162324A1 (en) Projection data processing method and apparatus
US20050076371A1 (en) Mobile terminal and moving picture recording/reproducing system
KR20150022532A (ko) 컨텐츠 재생 방법 및 그에 따른 단말, 그에 따른 시스템
WO2021143362A1 (zh) 资源传输方法及终端
CN110996117B (zh) 视频转码方法、装置、电子设备和存储介质
WO2023125657A1 (zh) 图像处理方法、装置和电子设备
US8605217B1 (en) Jitter cancellation for audio/video synchronization in a non-real time operating system
CN108605159A (zh) 共享从视频传输中提取的快照的方法和系统
CN116170629A (zh) 一种传输码流的方法、电子设备及计算机可读存储介质
CN113497851B (zh) 控制显示方法及电子设备
WO2024037352A1 (zh) 一种分屏显示方法及相关装置
CN115543649B (zh) 一种数据获取方法及电子设备
CN107710754A (zh) 音视频数据同步方法和装置
KR100735429B1 (ko) 개인용 컴퓨터를 이용한 디지털멀티미디어 방송 재생 방법및 시스템
US20090195710A1 (en) Electronic picture frame
CN112135163A (zh) 视频起播的方法以及装置
CN113473216A (zh) 数据传输方法、芯片系统及相关装置

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
GR01 Patent grant
GR01 Patent grant