CN117632074A - 一种音频数据处理方法、装置及存储介质 - Google Patents

一种音频数据处理方法、装置及存储介质 Download PDF

Info

Publication number
CN117632074A
CN117632074A CN202210979637.4A CN202210979637A CN117632074A CN 117632074 A CN117632074 A CN 117632074A CN 202210979637 A CN202210979637 A CN 202210979637A CN 117632074 A CN117632074 A CN 117632074A
Authority
CN
China
Prior art keywords
audio
service module
application program
application
audio data
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.)
Pending
Application number
CN202210979637.4A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210979637.4A priority Critical patent/CN117632074A/zh
Priority to PCT/CN2023/112707 priority patent/WO2024037470A1/zh
Publication of CN117632074A publication Critical patent/CN117632074A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

一种音频数据处理方法、装置及存储介质,涉及计算机技术领域。该方法包括:当监测到Linux容器中的第一应用程序的第一音频播放控制操作后,创建与所述第一应用程序对应的第一虚拟播放器;其中,所述第一音频播放控制操作用于启动播放音频数据,所述第一虚拟播放器位于所述Linux容器外;将所述第一应用程序的音频数据发送给所述第一虚拟播放器进行播放。

Description

一种音频数据处理方法、装置及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种音频数据处理方法、装置及存储介质。
背景技术
随着基于内核的/>电子设备的出现,Linux的使用在更多的受众中变得无处不在。容器化技术应运而生,用于实现应用程序跨平台的使用。容器可以在操作系统级别和应用程序级别提供虚拟化。
Linux容器提供了轻量级的Linux环境,基于Linux的应用程序(比如音视频类应用程序)可以在Linux容器中运行,从而使得用户可以在搭载系统的电子设备上使用这些应用程序。
由于Linux容器中的应用程序代码和运行所需的Linux环境相关配置(比如包括配置文件、库等)作为整体被打包在该容器中,因此当Linux容器中有多个音视频类应用程序运行时,无法区分该多个音视频类应用程序的音频数据,进而无法单独处理应用程序的音频数据,导致用户体验差的问题。比如,当需要调整Linux容器中运行的音视频类应用程序的音频音量时,只能整体调整Linux容器的音量;再比如,无法单独获取Linux容器中的某个音视频类应用程序的音频数据,继而无法针对该音视频类应用程序的音频数据进行其他处理,比如无法针对单独的应用程序的音频数据进行同声翻译。
发明内容
本申请实施例提供了一种音频数据处理方法、装置及存储介质,用以解决无法区分Linux容器中的音视频类应用程序的音频数据的问题。
第一方面,提供一种音频处理方法,该方法可以应用于电子设备,该方法包括:当监测到Linux容器中的第一应用程序的第一音频播放控制操作后,创建与所述第一应用程序对应的第一虚拟播放器,将所述第一应用程序的音频数据发送给所述第一虚拟播放器进行播放。其中,所述第一音频播放控制操作用于启动播放音频数据,所述第一虚拟播放器位于所述Linux容器外。
上述实现方式中,由于为Linux容器中的某个应用程序(比如第一应用程序)创建与该应用程序对应的虚拟播放器,从而可以将该应用程序的音频数据发送给该虚拟播放器进行播放,这样就可以实现将Linux容器中的不同应用程序的音频数据分别进行处理,因此可以解决无法区分Linux容器中的音频类应用程序的音频数据的问题。
在一种可能的实现方式中,所述第一虚拟播放器的名称与所述第一应用程序的名称相同。上述实现方式中,由于第一虚拟播放器的名称与第一应用程序的名称相同,因而可以根据第一应用程序的名称,将第一应用程序的音频数据发送给同名的第一虚拟播放器。
在一种可能的实现方式中,所述创建与所述第一应用程序对应的第一虚拟播放器,包括:获取所述第一应用程序的名称;根据所述第一应用程序的名称,创建与所述第一应用程序的名称相同的所述第一虚拟播放器。
在一种可能的实现方式中,所述创建与所述第一应用程序对应的第一虚拟播放器之后,还包括:当监测到所述第一应用程序的第二音频播放控制操作后,根据所述第二音频播放控制操作向所述第一虚拟播放器发送控制信息。
上述实现方式中,当监测到第一应用程序的第二音频播放控制操作后,可以向第一虚拟播放器发送相应的控制信息,因而可以使得第一虚拟播放器进行与第二音频播放控制操作匹配的处理操作。
在一种可能的实现方式中,所述第二音频播放控制操作为静音操作;所述根据所述第二音频播放控制操作向所述第一虚拟播放器发送控制信息,包括:根据所述静音操作,向所述第一虚拟播放器发送静音指令,所述静音指令用于指示所述第一虚拟播放器静音。
在一种可能的实现方式中,所述创建与所述第一应用程序对应的第一虚拟播放器之后,还包括:当监测到所述第一应用程序的第三音频播放控制操作后,销毁所述第一虚拟播放器;其中,所述第三音频播放控制操作用于停止播放音频数据。
上述实现方式中,当监测到第一应用程序的第三音频播放控制操作后,将第一虚拟播放器销毁,可以节省资源开销。
在一种可能的实现方式中,所述第三音频播放控制操作,包括:暂停音频播放;或者结束音频播放;或者关闭所述第一应用程序。
在一种可能的实现方式中,还包括:当监测到所述Linux容器启动后,创建第一虚拟接口,所述第一虚拟接口用于向调用所述第一虚拟接口的第二应用程序提供所述Linux容器中指定的应用程序的音频数据。
上述实现方式中,由于可以为Linux容器中的应用程序创建第一虚拟接口,第一虚拟接口用于向调用所述第一虚拟接口的第二应用程序提供所述Linux容器中指定的应用程序的音频数据,这样,当第二应用程序(比如第三方应用程序)需要对Linux中的某个应用程序(比如第一应用程序)的音频数据进行处理时,可以通过调用该第一虚拟接口获取到第一应用程序的音频数据,以进行数据处理,从而可以对Linux容器中的应用程序的音频数据进行独立处理。
第二方面,提供一种音频处理装置,包括:第一音频服务模块、第二音频服务模块和第三音频服务模块,所述第一音频服务模块和所述第二音频服务模块为基于Linux的音频服务模块;
所述第一音频服务模块,用于监测Linux容器中的应用程序的音频播放控制操作;
所述第二音频服务模块,用于当所述第一音频服务模块监测到所述Linux容器中的第一应用程序的第一音频播放控制操作后,向所述第三音频服务模块发送第一控制信息,所述第一控制信息包括所述第一应用程序的指示信息;以及,将所述第一应用程序的音频数据发送给所述第三音频服务模块;其中,所述第一音频播放控制操作用于启动播放音频数据;
所述第三音频服务模块,用于根据所述第一控制信息创建所述第一应用程序对应的第一虚拟播放器,以及将来自于所述第二音频服务模块的所述第一应用程序的音频数据发送给所述第一虚拟播放器;其中,所述第一虚拟播放器位于所述Linux容器外。
在一种可能的实现方式中,所述第一应用程序的指示信息为所述第一应用程序的名称,所述第一虚拟播放器的名称与所述第一应用程序的名称相同。
在一种可能的实现方式中,所述第二音频服务模块,还用于:当所述第一音频服务模块监测到所述第一应用程序的第二音频播放控制操作后,根据所述第二音频播放控制操作向所述第三音频服务模块发送第二控制信息,所述第二控制信息包括所述第一应用程序的指示信息;所述第三音频服务模块还用于:根据所述第二控制信息,向所述第一虚拟播放器发送对应的控制指令。
在一种可能的实现方式中,所述第二音频播放控制操作为静音操作,所述控制指令为静音指令,所述静音指令用于指示所述第一虚拟播放器静音。
在一种可能的实现方式中,所述第二音频服务模块,还用于:当所述第一音频服务模块监测到所述第一应用程序的第三音频播放控制操作后,向所述第三音频服务模块发送第三控制信息,所述第三控制信息包括所述第一应用程序的指示信息;其中,所述第三音频播放控制操作用于停止播放音频数据;所述第三音频服务模块,还用于:根据所述第三控制信息,销毁所述第一虚拟播放器。
在一种可能的实现方式中,所述第二音频服务模块,还用于:清空第一音频数据队列;其中,所述第一音频数据队列用于缓存来自所述第一应用程序的音频数据;所述第三音频服务模块,还用于:根据所述第三控制信息,清空第二音频数据队列;其中,所述第二音频数据队列用于缓存来自所述第二音频服务模块的所述第一应用程序的音频数据。
在一种可能的实现方式中,所述第二音频服务模块,还用于:当所述第一音频服务模块监测到所述Linux容器启动后,向所述第三音频服务模块发送第四控制信息;所述第三音频服务模块,还用于:根据所述第四控制信息,创建第一虚拟接口,所述第一虚拟接口用于向调用所述第一虚拟接口的第二应用程序提供所述Linux容器中指定的应用程序的音频数据。
第三方面,提供一种电子设备,包括:如上述第二方面中任一项所述的音频数据处理装置。
第四方面,提供一种电子设备,包括:一个或多个处理器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行如上述第一方面中任一项所述的方法。
第五方面,提供一种计算机可读存储介质,包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如上述第一方面中任一项所述的方法。
第六方面,提供一种计算机产品,所述计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述第一方面中任一项所述的方法。
以上第二方面至第六方面的有益效果请参见第一方面的有益效果,不重复赘述。
附图说明
图1为本申请实施例中的Linux容器的结构示意图;
图2为本申请实施例中的电子设备的硬件结构示意图;
图3为本申请实施例中的电子设备的软件结构示意图;
图4为本申请实施例中的音频数据处理原理的示意图;
图5为本申请实施例中的音频处理装置的结构示意图;
图6为本申请实施例中的应用场景一的音频数据处理流程的示意图;
图7为本申请实施例中对Linux容器中的音视频类应用程序的音频数据的音量进行独立调节的示意图;
图8为本申请实施例中的应用场景二的音频数据处理流程的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例涉及的多个,是指大于或等于两个。需要说明的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
下面首先对本申请实施例涉及的技术术语以及相关技术进行说明。
(1)Linux容器。
一个容器可以定义为一个单一的操作系统镜像,捆绑了一组隔离的应用程序及其依赖的资源,以便它们与主机分开运行。可能有多个这样的容器在同一台主机中运行。
容器可以分为两类:
-操作系统级别:整个操作系统在主机内的隔离空间中运行,与主机共享相同的内核。
-应用程序级别:应用程序或服务以及该应用程序所需的最少进程在主机内的隔离空间中运行。
图1示例性示出了一种应用程序级的Linux容器的结构示意图。Linux容器提供了一个名义上的操作系统环境,可用于运行特定的Linux应用程序或网络服务。它可以直接使用主机系统的内核。
(2)音频处理装置。
本申请实施例中的音频处理装置,也可以称为音频服务装置。该音频处理装置可以是一种应用或软件组件。该音频处理装置可以是电子设备出厂前预先安装的,也可以是用户下载安装的。需要说明的是,只要是安装到电子设备中的软件组件,无论大小都可认为是一个“应用”。示例性的,操作系统之上运行的软件组件为通常意义上的应用,本申请实施例中操作系统内的软件组件(也可以称之为服务)也可以认为是“应用”,本申请实施例对此不作限制。
本申请实施例提供了一种音频数据处理方法以及可以实现该方法的装置,可以解决在体系下采用Linux容器运行应用程序时,Linux容器中的应用程序的音频数据无法区分的问题。本申请实施例中,可以针对Linux容器中单独的应用程序创建该应用程序对应的虚拟播放器,用以播放该应用程序的音频数据,这样可以对Linux容器中的应用程序的音频数据独立处理,比如可以针对某个应用程序的音频数据调节音量,或者对某个应用程序的音频数据进行其他处理(比如同声翻译),进而可以提高用户感受。
本申请实施例可以应用于和Linux的跨平台场景,也可以应用于其他类似场景,比如第一系统和第二系统的跨平台场景。举例来说,第二系统是基于第一的内核实现的,此种情况下,使用基于第一系统的容器来运行基于第一系统的应用程序,以实现应用程序跨平台的使用。
下面结合附图对本申请实施例进行详细说明。
本申请实施例提供的音频数据处理方法可以在电子设备上实现。所述电子设备可以包括手机、个人计算机(personal computer,PC)、平板电脑、台式机(桌面型电脑)、手持计算机、笔记本电脑(膝上型电脑)、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本、个人数字助理(personaldigital assistant,PDA)等设备。本申请实施例对电子设备的具体形态不作特殊限制。
图2示例性示出了本申请实施例中的电子设备的硬件结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serialbus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C。进一步的,还可包括耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
处理器110可以包括一个或多个处理单元。例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,显示处理单元(displayprocess unit,DPU),和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。在一些实施例中,电子设备100也可以包括一个或多个处理器110。其中,处理器是电子设备100的神经中枢和指挥中心。处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(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)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。其中,USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。
传感器模块180中可以包括以下一种或多种:压力传感器180A、陀螺仪传感器180B、气压传感器180C、磁传感器180D、加速度传感器180E、距离传感器180F、接近光传感器180G、指纹传感器180H、温度传感器180J、触摸传感器180K、环境光传感器180L、骨传导传感器180M。
充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可以用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如,可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如Wi-Fi网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。电子设备100可以通过ISP、摄像头193、视频编解码器、GPU、显示屏194以及应用处理器等实现拍摄功能。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
电子设备100通过GPU,显示屏194,以及应用处理器AP等可以实现显示功能。显示屏194用于显示图像,视频等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
可以理解,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。
图3示例性示出了本申请实施例中的电子设备的软件结构示意图。以电子设备100为例,电子设备100的软件架构可以包括应用层201、应用程序框架层202、硬件抽象层(hardware abstractionlayer,HAL)203和内核204,还包括硬件(或称硬件层)205。本申请实施例以电子设备100的操作系统是系统为例进行说明,其内核为Linux内核。电子设备100也可能搭载其他操作系统,本申请实施例对此不做限制。
应用层201可以包括应用程序1到应用程序N(N为大于或等于1的整数),应用程序1至应用程序N被部署在Linux容器中。
本申请实施例中,在应用层中还包括音频处理装置。该音频处理装置可以为Linux容器中不同的应用程序创建独立的虚拟播放器,以播放相应应用程序的音频数据。比如,音频处理装置可以为Linux容器中的应用程序1创建对应的虚拟播放器1,音频处理装置可以将应用程序1的音频数据传输给虚拟播放器1,以使得虚拟播放器1播放应用程序1的音频数据;音频处理装置还可以为Linux容器中的应用程序2创建对应的虚拟播放器2,音频处理装置可以将应用程序2的音频数据传输给虚拟播放器2,以使得虚拟播放器2播放应用程序2的音频数据。以此类推。
可选的,虚拟播放器的名称与应用程序的名称相同。例如,当音频处理装置为应用程序1创建对应的虚拟播放器1时,可以使用应用程序1的名称(比如应用程序1的包名)对该虚拟播放器1进行命名。这样,当音频处理装置接收到应用程序1的音频数据后,可以根据该音频数据所属的应用程序的名称,确定对应的虚拟播放器,并将该音频数据发送给该虚拟播放器进行播放。当然,也可以采用其他命名方式对虚拟播放器进行命名,只要音频处理装置能够获取应用程序与虚拟播放器之间的对应关系即可(比如由音频处理装置建立该对应关系),本申请实施例对此不作限制。
可选的,虚拟播放器可以是应用程序进程,用于播放音频数据。
可选的,当Linux容器中的某个应用程序关闭时,音频处理装置可以将该应用程序对应的虚拟播放器(比如应用程序进程)销毁。以减少系统资源占用。
可选的,应用层201中还可以包括其他应用,示例性的,所述其他应用可以包括基于相机、图库、日历、通话、地图、导航、音乐、视频、短信息等,本申请实施例不做限定。
应用程序框架层202中包括各种服务模块,其中与音频处理相关的服务模块可以包括:
AudioTrack:负责音频数据的输出,属于Android应用框架应用程序编程接口(Application Programming Interface,API)类;
AudioRecord:负责录音数据的采集,属于Android应用框架API类;
AudioPolicy:音频策略的制定者,负责音频设备切换的策略抉择,音量调节等;
AudioFlinger:音频策略的执行者,负责输入输出流设备的管理以及脉冲编码调制(pulse code modulation,PCM)数据的处理传输。
可选的,应用程序框架层中还可以包括活动管理器、窗口管理器、资源管理器等服务模块,本申请实施例对此不做任何限制。
HAL203可以包括各种服务模块,其中与音频处理相关的服务模块可以包括AudioHAL,负责音频与硬件设备的交互,Audio HAL可以被AudioFLinger调用。此外,HAL 203中还可以包括诸如麦克风、扬声器、WiFi模组、蓝牙模组、摄像头、传感器等服务模块。
内核204是硬件和软件之间的层。内核层中可以包括各种库(lib)和驱动,其中与音频处理相关的库可以包括Tinyalsa lib,与音频处理相关的驱动可以包括声卡驱动Alsadriver。
可选的,内核204中还可以包括显示驱动、摄像头驱动、音频驱动、传感器驱动等。
硬件(或硬件层)205中可以包括诸如声卡等的硬件。
应理解,图3所示的各分层中包括的模块为本申请实施例中涉及到的模块,上述各分层中包括的模块并不构成对电子设备的结构和模块部署的层级(示例说明)的限定。在一种实施例中,图3中所示的模块可以单独部署,或者几个模块可以部署在一起,图3中对模块的划分为一种示例。在一种实施例中,图3中所示的模块的名称为示例说明。
图4示例性示出了本申请实施例中的音频处理装置的结构示意图。图中的实线表示音频数据可能的传输路径,图中的虚线表示指令或控制信息可能的传输路径。图中各组成部分之间的信息交互也可能是双向的。如图4所示,音频处理装置400可以包括第一音频服务模块410、第二音频服务模块420和第三音频服务模块430。第一音频服务模块410和第二音频服务模块420为基于Linux的音频服务模块。
第一音频服务模块410,用于监测Linux容器中的应用程序的音频播放控制操作。可选的,第一音频服务模块410可以监测Linux容器中的应用程序的以下音频播放控制操作:
-启动播放音频数据。
音频数据的启动播放控制操作,可能是由应用程序自动触发的,比如,当用户启动Linux容器中的音视频类应用程序后,该应用程序自动进行音频播放。音频数据的启动播放控制操作也可能是由用户操作触发的,比如,当用户启动Linux容器中的音视频类应用程序,并点击该应用程序的音视频播放界面中的“播放(play)”键后,可以启动音频数据的播放。
-暂停播放音频数据。
暂停播放音频数据的播放控制操作,可能是由用户操作触发的,比如,当用户点击Linux容器中的音视频类应用程序的播放界面中的“暂停(pause)”键,可以暂停音频的播放。
-静音。
静音的播放控制操作,可能是由用户操作触发的,比如,当用户点击Linux容器中的音视频类应用程序的播放界面中的“静音(mute)”键或功能选项,可以对音频播放进行静音。
-停止播放音频数据。
停止播放音频数据的控制操作,可能是由用户操作触发的,比如,当用户点击Linux容器中的音视频类应用程序的播放界面中的“停止(stop)”键,或关闭该应用程序的播放界面,可以停止播放该应用程序的音频。停止播放音频数据的控制操作也可能是由应用程序自动触发的,比如,当Linux容器中的音视频类应用程序播放完成音频时,可以触发相应事件,表明已经播放完成音频数据。
-Linux容器中的应用程序被关闭。
应用程序被关闭的控制操作,可能是由用户操作触发的,比如,用户通过屏幕触控操作方式或键盘操作方式或语音方式等,关闭Linux容器中的音视频类应用程序。
以上仅为示例性示出了几种可能被监测的音频播放控制操作,本申请实施例对监测的操作或事件类型不做限制,比如还可以监测Linux容器开启或关闭的操作等。另外,本申请实施例对音频数据的播放控制操作的触发方式不做限制,比如可能是由用户操作触发,也可能是由应用程序自动触发。
可选的,第一音频服务模块410可以采用以下监测方法来监测Linux容器中的应用程序的音频数据的播放控制操作:
第一音频服务模块410可以请求订阅Linux容器中的音视频类应用程序的与音频播放控制操作相关的事件或其他事件(比如Linux容器被开启的事件),比如上述音频播放控制操作的相关事件,可以包括但不限于以下事件中的一种或多种:应用程序启动事件,应用程序关闭事件,播放(play)事件,停止(stop)事件、静音(mute)事件等。当Linux容器中的音视频类应用程序发生上述事件时,可以将事件相关信息发送给第一音频服务模块410。可选的,所述事件相关信息可以包括但不限于:应用程序的指示信息、事件类型、事件名称、时间戳等。可选的,所述应用程序的指示信息可以是应用程序的名称。
第二音频服务模块420,用于当第一音频服务模块410监测到Linux容器中的某个应用程序的音频播放控制操作后,向第三音频服务模块430发送控制信息,以使得第三音频服务模块430对该应用程序对应的虚拟播放器进行配置或其他操作。第二音频服务模块420还可以将该应用程序的音频数据发送给第三音频服务模块430,以使得第三音频服务模块430将该应用数据发送给该应用程序对应的虚拟播放器进行播放。
以第一音频播放控制操作为例,该第一音频播放控制操作为启动播放音频数据。当第一音频服务模块410监测到Linux容器中的第一应用程序的第一音频播放控制操作后,通知或指示第二音频服务模块420发送第一控制信息;第二音频服务模块420根据该通知或指示向第三音频服务模块430发送第一控制信息,用于指示创建与第一应用程序对应的虚拟播放器,其中,第一控制信息可以包括第一应用程序的指示信息(比如第一应用程序的名称);第三音频服务模块430根据第一指示信息,创建与该第一应用程序对应的虚拟播放器(以下称为第一虚拟播放器)。
再以第二音频播放控制操作为例,该第二音频播放控制操作为静音操作为例。当第一音频服务模块410监测到Linux容器中的第一应用程序的静音播放控制操作后,通知或指示第二音频服务模块420发送第二控制信息;第二音频服务模块420根据该通知或指示向第三音频服务模块430发送第二控制信息,第二控制信息可以包括第一应用程序的指示信息(比如第一应用程序的名称);第三音频服务模块430根据第二控制信息向第一应用程序对应的第一虚拟播放器发送静音指令,用于实现对第一应用程序的音频数据播放进行静音。
再以第三音频播放控制操作为例,该第三音频播放控制操作为停止播放音频数据的控制操作为例。当第一音频服务模块410监测到Linux容器中的第一应用程序的停止播放的控制操作后,通知或指示第二音频服务模块420发送第三控制信息;第二音频服务模块420根据该通知或指示,向第三音频服务模块430发送第三控制信息,第三控制信息中可以包括第一应用程序的指示信息(比如第一应用程序的名称);第三音频服务模块430根据第三控制信息,销毁第一应用程序对应的第一虚拟播放器。
在另一种可能的实现方式中,与上述监测到第三音频播放控制操作(即停止播放音频数据的控制操作)类似,当第一音频服务模块410监测到Linux容器中的第一应用程序被关闭后,可以通知或指示第二音频服务模块420发送控制信息;第二音频服务模块420根据该通知或指示,向第三音频服务模块430发送控制信息,其中可以包含第一应用程序的指示信息(比如第一应用程序的名称);第三音频服务模块430根据接收到的控制信息,销毁第一应用程序对应的第一虚拟播放器。
在另一种可能的实现方式中,与上述监测到第三音频播放控制操作(即停止播放音频数据的控制操作)类似,当第一音频服务模块410监测到Linux容器中的第一应用程序的暂停播放的控制操作后,可以通知或指示第二音频服务模块420发送控制信息;第二音频服务模块420根据该通知或指示,向第三音频服务模块430发送控制信息,其中可以包含第一应用程序的指示信息(比如第一应用程序的名称);第三音频服务模块430根据接收到的控制信息,销毁第一应用程序对应的第一虚拟播放器。当然,第三音频服务模块430也可以根据接收到的控制信息,不销毁第一应用程序对应的第一虚拟播放器,而是通知第一应用程序对应的第一虚拟播放器暂停播放音频数据。
在一种可能的实现方式中,第二音频服务模块420还可以管理第一音频数据队列,第三音频服务模块430还可以管理第二音频队列。第二音频服务模块420可以将从第一应用程序接收到的音频数据缓存到第一音频数据队列中,并可以对第一音频数据队列进行管理,比如清空第一音频数据队列。第二音频服务模块420可以将来自于第二音频服务模块420的音频数据缓存到第二音频数据队列中,并可以对第二音频数据队列进行管理,比如清空第二音频数据队列。通过使用音频数据队列缓存音频数据,可以对音频数据的输出进行控制,进一步的还可以辅以其他手段,以降低或消除POP音。POP声是指音频器件在上电、断电瞬间以及上电稳定后,各种操作带来的瞬态冲击所产生的爆破声。本申请实施例对降低或消除POP音的具体实现方式不做限制。
上述实现方式中,由于可以为Linux容器中的某个应用程序(比如第一应用程序)创建与该应用程序对应的虚拟播放器,从而可以将该应用程序的音频数据发送给该虚拟播放器进行播放,这样就可以实现将Linux容器中的不同应用程序的音频数据分别进行处理,因此可以解决无法区分Linux容器中的音频类应用程序的音频数据的问题。
进一步的,由于可以对Linux容器中的不同应用程序的音频数据进行处理,因此可以对Linux容器中的不同应用程序的音频数据的音量进行独立调节。
在一种可能的实现方式中,音频处理装置400还可以创建第一虚拟接口,该第一虚拟接口用于向调用该第一虚拟接口的第二应用程序提供Linux容器中指定的应用程序的音频数据。比如,第三方应用程序可以通过调用该第一虚拟接口,获取Linux容器中的某个应用程序的音频数据(比如可以在调用指令中指定应用程序,从而可以通过调用该虚拟接口获取该应用程序的音频数据),以便该第三方应用对Linux容器中的该应用程序的音频数据进行进一步处理,比如进行同声翻译或者将音频数据转换为文本。可选的,当Linux容器被关闭时,音频处理装置400可以将该第一虚拟接口销毁,以减少系统资源占用。
可选的,从编程角度来说,第一虚拟接口可以使用动态链接库来实现。
示例性的,以Linux容器中的第一应用程序为例,第一虚拟接口的创建过程可以包括:当第一音频服务模块410监测到Linux容器被启动后,通知或指示第二音频服务模块420发送第四控制信息;第二音频服务模块可420根据该通知或指示向第三音频服务模块430发送第四控制信息;第三音频服务模块430根据接收到的第四控制信息,创建第一虚拟接口。其中,所述第二应用程序可以是第三方应用程序,第二应用程序位于Linux容器外。
示例性的,以Linux容器中的第一应用程序为例,第一应用程序对应的第一虚拟接口的销毁过程可以包括:当第一音频服务模块410监测到Linux容器被关闭后,通知或指示第二音频服务模块420发送第五控制信息;第二音频服务模块420根据该通知或指示向第三音频服务模块430发送第五控制信息;第三音频服务模块430根据第五控制信息,销毁第一虚拟接口。
在另一种可能的实现方式中,当Linux容器中的一个应用程序启动音频数据的播放,并且该应用程序是该Linux容器中第一个启动音频数据播放的应用程序时,音频数据处理装置创建虚拟接口,并为该应用程序创建对应的虚拟播放器。进一步的,当Linux容器中的一个应用程序结束音频数据的播放(比如该应用程序关闭),并且该应用程序是该Linux容器中最后一个被关闭的应用程序时,音频数据处理装置销毁该虚拟接口。
上述实现方式中,由于可以为Linux容器中的应用程序创建第一虚拟接口,第一虚拟接口用于向调用所述第一虚拟接口的第二应用程序提供所述Linux容器中指定的应用程序的音频数据,这样,当第二应用程序(比如第三方应用程序)需要对Linux中的某个应用程序(比如第一应用程序)的音频数据进行处理时,可以通过调用该第一虚拟接口获取到第一应用程序的音频数据,以进行数据处理,从而可以对Linux容器中的应用程序的音频数据进行独立处理。
下面以Linux系统和Android系统融合为例,对音频处理装置400中各服务模块的结构以及功能进行说明。
如图5所示,图中的实线表示音频数据可能的传输路径,图中的虚线表示指令或控制信息可能的传输路径。图中各服务或功能模块之间的信息交互也可能是双向的。
第一音频服务模块410为Linux系统侧的音频服务,比如图5中的AudioServiceL;第二音频服务模块420为Linux系统侧的音频服务,比如图5中的Linux Pulseaudio;第三音频服务模块430为Android侧的音频服务,比如图5中的AudioServiceA。
可选的,第二音频服务模块420可以作为插件进行部署以及运行。
第一音频服务模块410(AudioServiceL)中可以包括以下服务或功能模块:
-播放器监控器411,比如图5中的Player monitor。播放器监控器411(Playermonitor)用于监听Linux环境下启动的音视频类应用程序,比如监听Linux容器中启动的应用程序的名称。
可选的,还可以监听Linux容器中运行的应用程序的播放控制事件信息,比如监听Linux容器中的应用程序是否停止播放,是否静音等。具体实现方式可以参见前文相关内容。
-传输管理器412,比如图5中的Transfer managerLA。传输管理器412(TransfermanagerLA)用于进行数据传输控制,比如可以将音视频类应用程序的名称和/或控制信息等传输给第二音频服务模块420中的传输管理器426(Transfer managerLP)。
示例性的,当音视频类应用程序的播放功能被触发时,比如,音视频类应用响应于用户在播放器窗口中对“播放(play)”键的点击操作,该事件可以被第一音频服务模块410中的播放器监控器411(Player monitor)监听到,播放器监控器411(Player monitor)可以根据该事件的相关信息获取到该音视频类应用程序的名称。播放器监控器411(Playermonitor)监听到音视频类应用程序的播放控制事件以及应用程序名称后,可以触发(或指示)传输管理器412(Transfer managerLA)将该应用程序名称发送给第二音频服务模块420中的控制管理器426(Cmd managerLP),进一步的,还可以向第二音频服务模块420中的控制管理器426(Cmd managerLP)发送相应控制信息。
第二音频服务模块420(Linux Pulseaudio)中可以包括以下服务或功能模块:
-数据接收器423,如图5中的Module-Sink。数据接收器423(Module-Sink)用于接收音视频类应用程序的音频数据(或称音频流数据),以便为第二音频服务模块420中的数据管理器424(Data managerLP)、传输管理器426(Transfer managerLP)等提供音频数据来源。
可选的,数据接收器423(Module-Sink)可以作为第二音频服务模块420(LinuxPulseaudio)的插件进行部署和运行。
-数据管理器424,如图5中的Data managerLP。数据管理器424(Data managerLP)用于对第二音频服务模块420接收到的音频数据进行数据管理操作。
可选的,所述数据管理操作可以包括:对音频数据队列进行管理,比如根据控制管理器425(Cmd managerLP)的指示清空音频数据队列,还可以将接收到的音频数据存储到音频数据队列,根据播放速率从音频数据队列获取音频数据并发送给传输管理器426(Transfer managerLP)。
可选的,数据管理器(Data managerLP)可以位于Linux侧插件内。
-传输管理器426,如图5中的Transfer managerLP。传输管理器426(TransfermanagerLP)用于数据传输控制。
可选的,所述数据传输控制可以包括:接收数据管理器424(Data managerLP)发送的音频数据以及控制管理器425(Cmd managerLP)发送的应用程序名称,并发送给第三音频服务模块430中的传输管理器433(Transfer managerA)。
可选的,传输管理器426(Transfer managerLP)可以采用以下方式进行传输:管道(pipe)、socket、桥(bridge)等,本申请实施例对此不做限制。
-控制管理器425,如图5中的Cmd managerLP。控制管理器425(Cmd managerLP)用于对音频数据进行控制,比如包括:控制管理器425(Cmd managerLP)可以指示传输管理器426(Transfer managerLP)准备资源以进行音频数据发送;控制管理器425(CmdmanagerLP)可以确定音频数据的传输方式(比如pipe传输方式)并通知给传输管理器426(Transfer managerLP),控制管理器425(Cmd managerLP)可以管理音频数据队列,比如指示数据管理器424(Data managerLP)清空其音频数据队列。
可选的,控制管理器425(Cmd managerLP)可以位于linux侧插件内。
第三音频服务模块430(AudioServiceA)中可以包括以下服务或功能模块:
-控制管理器431,如图5中的Cmd managerA。控制管理器431(Cmd managerA)用于为Linux容器中的应用程序创建独立的虚拟播放器,以用于播放相应的应用程序的音频数据。
可选的,控制管理器431(Cmd managerA)还可以对音频流数据的播放进行控制,比如可以控制音频数据流开始播放,或者停止播放,或者静音等。
可选的,控制管理器431(Cmd managerA)还可以对音频流数据的传输进行控制,示例性的,可以管理音频数据队列,比如将音频数据队列清空。
可选的,控制管理器431(Cmd managerA)还可以创建虚拟接口(如图中所示的InterfaceA),该虚拟接口用于为调用该虚拟接口的第三方应用提供Linux容器中的应用程序播放的音频数据,以便第三方应用程序可以对该音频数据进行处理,比如进行同声翻译。示例性的,当该虚拟接口(InterfaceA)被第三方应用程序调用时,电子设备可以根据调用指令中包含的应用程序名称,将传输管理器433(Transfer managerA)接收到的该应用程序的音频数据发送给该第三方应用程序。
-数据管理器432,比如图5中的Data managerA。数据管理器432(Data managerA)用于进行Android侧的数据管理操作,管理第三音频服务模块430接收到的音频数据。
可选的,所述数据管理操作可以包括:对音频数据队列进行管理,比如根据控制管理器431(Cmd managerA)的指示清空音频数据队列,还可以将接收到的音频数据存储到音频数据队列,根据播放速率从音频数据队列获取音频数据并发送给虚拟播放器进行播放。
-传输管理器433,比如图5中的Transfer managerA。传输管理器433(TransfermanagerA)用于数据传输控制。
可选的,所述数据传输控制可以包括:接收第二音频服务模块420中的传输管理器426(Transfer managerLP)发送的音频数据,并发送给数据管理器432(Data managerA);接收第二音频服务模块420中的传输管理器426(Transfer managerLP)发送的指令或控制信息以及应用程序名称,并发送给控制管理器431(Cmd managerA)。
可选的,传输管理器433(Transfer managerA)可以采用以下方式将音频数据发送给虚拟播放器:管道(pipe)、socket、桥(bridge)等,本申请实施例对此不做限制。
上述音频服务模块400中的各服务(或功能模块)的命名仅为一种示例,本申请实施例对命名方式不做限制。另外,实际应用场景中,音频处理模块400可能存在其他部署情况,或者其他功能模块的划分方式,本申请实施例对此也不做限制。
下面结合图5所示的音频处理装置的结构,描述本申请实施例中的几个具有场景的处理流程。
图6示出了本申请实施例中应用场景一的音频数据处理过程的示意图。该示例性的场景为:名称为“AABB”的应用程序是Linux环境下的音视频类应用程序,位于Linux容器中。用户可以启动该Linux容器,并在该Linux容器中打开该名称为“AABB”的应用程序,播放音频数据,并可以对音频数据进行播放控制,比如通过播放器界面中的播放控制键进行播放控制。这里的应用程序名称“AABB”仅为一种应用程序名称的示例。
当第一音频服务模块(AudioServiceL)中的播放器监控器(Player monitor)监听到名称为“AABB”的应用程序的开始播放(start play)事件后(该事件表明该应用程序开始播放音频数据),该流程包括以下步骤:
步骤1:第一音频服务模块(AudioServiceL)中的传输管理器(TransfermanagerLP)向第二音频服务(Linux Pulseaudio)中的控制管理器(Cmd managerLP)发送开始播放指令(start play),其中携带应用程序名称“AABB”。
步骤2:控制管理器(Cmd managerLP)接收到开始播放指令后,向传输管理器(Transfer managerLP)发送数据发送指令(send data),其中携带应用程序名称“AABB”。
步骤3:传输管理器(Transfer managerLP)接收到数据发送指令后,向第三音频服务模块(AudioServiceA)中的传输管理器(Transfer managerA)发送数据发送指令(senddata),其中携带应用程序名称“AABB”。
步骤4:传输管理器(Transfer managerA)接收到数据发送指令后,向控制管理器(Cmd managerA)发送数据发送指令(send data),其中携带应用程序名称“AABB”。
步骤5:控制管理器(Cmd managerA)接收到数据发送指令后,创建虚拟播放器,该虚拟播放器的名称为“AABB”,并向该虚拟播放器发送初始化资源指令(Init res),用于指示该虚拟播放器为接收应用程序的音频数据准备资源,比如为第一音频数据队列和第二音频数据队列分配资源。
可选的,该流程中还可以包括以下步骤:
步骤6:当控制管理器(Cmd managerLP)接收到开始播放指令后,向数据管理器(Data managerLP)发送清除队列指令(clean queue)。数据管理器(Data managerLP)收到该指令后,根据该指令清空第一音频数据队列。
步骤7:当控制管理器(Cmd managerA)接收到开始播放指令后,向数据管理器(Data managerA)发送清除队列指令(clean queue)。数据管理器(Data managerA)收到该指令后,根据该指令清空第二音频数据队列。
以上为控制信息传输过程,下面步骤8~13为音频数据传输过程:
步骤8:第二音频服务模块(Linux Pulseaudio)中的数据接收器(Module-Sink)接收名称为“AABB”的应用程序的音频数据。
步骤9:数据接收器(Module-Sink)将接收到的音频数据发送给数据管理器(DatamanagerLP),数据管理器(Data managerLP)将接收到的音频数据缓存到第一音频数据队列。
步骤10:数据管理器(Data managerLP)从第一音频数据队列中获取音频数据,并将该音频数据发送给传输管理器(Transfer managerLP)。
步骤11:传输管理器(Transfer managerLP)从第一音频数据队列中获取音频数据,并将该音频数据发送给第三音频服务模块(AudioServiceA)中的传输管理器(TransfermanagerA)。
步骤12:传输管理器(Transfer managerA)将接收到的音频数据发送给数据管理器(Data managerA),数据管理器(Data managerA)将接收到的音频数据缓存到第二音频数据队列。
步骤13:数据管理器(Data managerA)从第二音频数据队列中获取音频数据,并将该音频数据,并发送给名称为“AABB”的虚拟播放器进行播放。
上述流程中各步骤的具体实现方式,可以参见前文中的相关内容。
当Linux容器中的另一个应用程序(比如该应用程序的名称为CCDD)启动音频数据播放后,音频数据处理装置按照上述流程为该应用程序创建名称为CCDD的虚拟播放器,并将该应用程序播放的音频数据传输给该名称为CCDD的虚拟播放器进行播放。
由于可以对Linux容器中的不同应用程序的音频数据单独进行处理,因此可以对Linux容器中的应用程序的不同应用程序的音频数据的音量进行独立调节。
图7示例性示出了对音视频类应用程序的音频音量进行调节的示意图。本申请实施例中,可以使用控制音视频类应用程序的音频音量的应用或服务,对Linux容器中的多个音视频类应用程序的音频音量进行独立调节。以当前Linux容器中的4个音视频类应用程序正在播放,这4个音视频类应用程序的名称分别为:应用承载1,应用程序2,应用程序3和应用程序4。该应用或服务可以获得Linux容器中这4个音视频类应用程序对应的虚拟播放器。如图所示,该应用或服务的用户界面中可以显示这些虚拟播放器对应的应用程序的名称,以及每个应用程序对应的音量控制滑动条(比如用于调节音量的控件),这样,通过拖动某个应用程序对应的音量控制滑动条,就可以对相应的虚拟播放器的音量进行控制,从而可以实现对Linux容器中的不同音视频类应用程序的音频音量进行独立调节。
图8示出了本申请实施例中应用场景二的音频数据处理过程的示意图。该示例性的场景为:用户启动Linux容器,该Linux容器中包括一个或多个音视频类应用程序,音频数据处理装置为该Linux容器中的应用程序创建虚拟接口,以用于向外提供(比如向第三方应用程序)提供该Linux容器中单独的应用程序的音频数据。
当第一音频服务模块(AudioServiceL)中的播放器监控器(Player monitor)监听到Linux容器启动后,该流程包括以下步骤:
步骤1:第一音频服务模块(AudioServiceL)中的传输管理器(TransfermanagerLP)向第二音频服务(Linux Pulseaudio)中的控制管理器(Cmd managerLP)发送接口创建指令。
步骤2:传输管理器(Transfer managerLP)接收到接口创建指令后,向传输管理器(Transfer managerLP)发送接口创建指令。
步骤3:传输管理器(Transfer managerLP)接收到接口创建指令后,向第三音频服务模块(AudioServiceA)中的传输管理器(Transfer managerA)发送接口创建指令。
步骤4:传输管理器(Transfer managerA)接收到接口创建指令后,向控制管理器(Cmd managerA)发送接口创建指令。
步骤5:控制管理器(Cmd managerA)接收到接口创建指令后,创建虚拟接口。
步骤8~12:音频数据传输过程。
上述流程中各步骤的具体实现方式,可以参见前文中的相关内容。
当第三方应用程序1调用该虚拟接口,以请求获取Linux容器中名称为AABB的应用程序的音频数据时(如图8中的步骤13),该虚拟接口可以基于该调用请求中的应用程序名称“AABB”,从第二音频数据队列中获取该应用程序的音频数据(如图8中的步骤14)。可选的,第二音频数据队列可能包括多个,每个音频数据队列用于缓存一个应用程序的音频数据,该虚拟接口可以根据调用请求中包含的应用程序名称,从相应应用程序对应的音频数据队列中获取音频数据,并发送给第三方应用程序1,使得第三方应用程序1可以单独对名称“AABB”的应用程序播放的音频数据进行处理,比如对该音频数据进行同声翻译。
当第三方应用程序2调用该虚拟接口,以请求获取Linux容器中名称为AABB的应用程序的音频数据时,该虚拟接口可以基于该调用请求中的应用程序名称“AABB”,从第二音频数据队列中获取该应用程序的音频数据。可选的,第二音频数据队列可能包括多个,每个音频数据队列用于缓存一个应用程序的音频数据,该虚拟接口可以根据调用请求中包含的应用程序名称,从相应应用程序对应的音频数据队列中获取音频数据,并发送给第三方应用程序2,使得第三方应用程序2可以单独对名称“AABB”的应用程序播放的音频数据进行处理,比如将该音频数据转换为文本,并保存转换后的文本。
同样的,当通过虚拟接口请求Linux容器中名称为CCDD的应用程序播放的音频数据时,也可以按照上述方法获取该应用程序播放的音频数据,并发送给发起调用请求的第三方应用程序,从而使得该第三方应用程序可以单独对名称“CCDD”的应用程序播放的音频数据进行处理。
在另一种可能的实现方式中,当Linux容器中的一个应用程序启动音频数据的播放,并且该应用程序是该Linux容器中第一个启动音频数据播放的应用程序时,音频数据处理装置创建虚拟接口,并为该应用程序创建对应的虚拟播放器。进一步的,当Linux容器中的一个应用程序结束音频数据的播放(比如该应用程序关闭),并且该应用程序是该Linux容器中最后一个被关闭的应用程序时,音频数据处理装置销毁该虚拟接口。
上述实现方式中,由于可以为Linux容器中的应用程序创建虚拟接口,该虚拟接口用于向调用该虚拟接口的第三方应用程序提供Linux容器中指定的应用程序的音频数据,这样,当该第三方应用程序需要对Linux中的某个应用程序的音频数据进行处理时,可以通过调用该虚拟接口获取到应用程序的音频数据,以进行数据处理,从而实现了对Linux容器中的应用程序的音频数据进行独立处理。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的方法。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品用于存储计算机程序,该计算机程序被计算机执行时,所述计算机可以实现上述方法实施例提供的方法。
本申请实施例还提供一种芯片,包括处理器,所述处理器与存储器耦合,用于调用所述存储器中的程序使得所述芯片实现上述方法实施例提供的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (18)

1.一种音频处理方法,其特征在于,包括:
当监测到Linux容器中的第一应用程序的第一音频播放控制操作后,创建与所述第一应用程序对应的第一虚拟播放器;其中,所述第一音频播放控制操作用于启动播放音频数据,所述第一虚拟播放器位于所述Linux容器外;
将所述第一应用程序的音频数据发送给所述第一虚拟播放器进行播放。
2.如权利要求1所述的方法,其特征在于,所述第一虚拟播放器的名称与所述第一应用程序的名称相同。
3.如权利要求2所述的方法,其特征在于,所述创建与所述第一应用程序对应的第一虚拟播放器,包括:
获取所述第一应用程序的名称;
根据所述第一应用程序的名称,创建与所述第一应用程序的名称相同的所述第一虚拟播放器。
4.如权利要求1-3任一项所述的方法,其特征在于,所述创建与所述第一应用程序对应的第一虚拟播放器之后,还包括:
当监测到所述第一应用程序的第二音频播放控制操作后,根据所述第二音频播放控制操作向所述第一虚拟播放器发送控制信息。
5.如权利要求4所述的方法,其特征在于,所述第二音频播放控制操作为静音操作;
所述根据所述第二音频播放控制操作向所述第一虚拟播放器发送控制信息,包括:
根据所述静音操作,向所述第一虚拟播放器发送静音指令,所述静音指令用于指示所述第一虚拟播放器静音。
6.如权利要求1-5任一项所述的方法,其特征在于,所述创建与所述第一应用程序对应的第一虚拟播放器之后,还包括:
当监测到所述第一应用程序的第三音频播放控制操作后,销毁所述第一虚拟播放器;其中,所述第三音频播放控制操作用于停止播放音频数据。
7.如权利要求6所述的方法,其特征在于,所述第三音频播放控制操作,包括:
暂停音频播放;或者
结束音频播放;或者
关闭所述第一应用程序。
8.如权利要求1-7任一项所述的方法,其特征在于,还包括:
当监测到所述Linux容器启动后,创建第一虚拟接口,所述第一虚拟接口用于向调用所述第一虚拟接口的第二应用程序提供所述Linux容器中指定的应用程序的音频数据。
9.一种音频处理装置,其特征在于,包括:第一音频服务模块、第二音频服务模块和第三音频服务模块,所述第一音频服务模块和所述第二音频服务模块为基于Linux的音频服务模块;
所述第一音频服务模块,用于监测Linux容器中的应用程序的音频播放控制操作;
所述第二音频服务模块,用于当所述第一音频服务模块监测到所述Linux容器中的第一应用程序的第一音频播放控制操作后,向所述第三音频服务模块发送第一控制信息,所述第一控制信息包括所述第一应用程序的指示信息;以及,将所述第一应用程序的音频数据发送给所述第三音频服务模块;其中,所述第一音频播放控制操作用于启动播放音频数据;
所述第三音频服务模块,用于根据所述第一控制信息创建所述第一应用程序对应的第一虚拟播放器,以及将来自于所述第二音频服务模块的所述第一应用程序的音频数据发送给所述第一虚拟播放器;其中,所述第一虚拟播放器位于所述Linux容器外。
10.如权利要求9所述的装置,其特征在于,所述第一应用程序的指示信息为所述第一应用程序的名称,所述第一虚拟播放器的名称与所述第一应用程序的名称相同。
11.如权利要求9-10任一项所述的装置,其特征在于:
所述第二音频服务模块,还用于:
当所述第一音频服务模块监测到所述第一应用程序的第二音频播放控制操作后,根据所述第二音频播放控制操作向所述第三音频服务模块发送第二控制信息,所述第二控制信息包括所述第一应用程序的指示信息;
所述第三音频服务模块还用于:
根据所述第二控制信息,向所述第一虚拟播放器发送对应的控制指令。
12.如权利要求11所述的装置,其特征在于,所述第二音频播放控制操作为静音操作,所述控制指令为静音指令,所述静音指令用于指示所述第一虚拟播放器静音。
13.如权利要求9-12任一项所述的装置,其特征在于:
所述第二音频服务模块,还用于:
当所述第一音频服务模块监测到所述第一应用程序的第三音频播放控制操作后,向所述第三音频服务模块发送第三控制信息,所述第三控制信息包括所述第一应用程序的指示信息;其中,所述第三音频播放控制操作用于停止播放音频数据;
所述第三音频服务模块,还用于:
根据所述第三控制信息,销毁所述第一虚拟播放器。
14.如权利要求13所述的装置,其特征在于:
所述第二音频服务模块,还用于:
清空第一音频数据队列;其中,所述第一音频数据队列用于缓存来自所述第一应用程序的音频数据;
所述第三音频服务模块,还用于:
根据所述第三控制信息,清空第二音频数据队列;其中,所述第二音频数据队列用于缓存来自所述第二音频服务模块的所述第一应用程序的音频数据。
15.如权利要求9-14任一项所述的装置,其特征在于:
所述第二音频服务模块,还用于:
当所述第一音频服务模块监测到所述Linux容器启动后,向所述第三音频服务模块发送第四控制信息;
所述第三音频服务模块,还用于:
根据所述第四控制信息,创建第一虚拟接口,所述第一虚拟接口用于向调用所述第一虚拟接口的第二应用程序提供所述Linux容器中指定的应用程序的音频数据。
16.一种电子设备,其特征在于,包括:如权利要求9-15任一项所述的音频数据处理装置。
17.一种电子设备,其特征在于,包括:一个或多个处理器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-8中任意一项所述的方法。
CN202210979637.4A 2022-08-16 2022-08-16 一种音频数据处理方法、装置及存储介质 Pending CN117632074A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210979637.4A CN117632074A (zh) 2022-08-16 2022-08-16 一种音频数据处理方法、装置及存储介质
PCT/CN2023/112707 WO2024037470A1 (zh) 2022-08-16 2023-08-11 一种音频数据处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210979637.4A CN117632074A (zh) 2022-08-16 2022-08-16 一种音频数据处理方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN117632074A true CN117632074A (zh) 2024-03-01

Family

ID=89940776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210979637.4A Pending CN117632074A (zh) 2022-08-16 2022-08-16 一种音频数据处理方法、装置及存储介质

Country Status (2)

Country Link
CN (1) CN117632074A (zh)
WO (1) WO2024037470A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378066B2 (en) * 2008-02-25 2016-06-28 Sap Se Dynamic resizing of applications running on virtual machines
CN101639787B (zh) * 2009-09-07 2013-02-27 中兴通讯股份有限公司 应用程序启动方法及装置
EP2746936A4 (en) * 2011-10-24 2015-03-11 Huawei Tech Co Ltd METHOD AND SYSTEM FOR STARTING AN APPLICATION IN A LINUX CONTAINER
CN110780930B (zh) * 2019-09-23 2023-06-06 广州视源电子科技股份有限公司 启动Android系统的方法、装置、电子设备及存储介质
CN114168254A (zh) * 2020-09-10 2022-03-11 成都鼎桥通信技术有限公司 一种数据处理方法、装置及设备

Also Published As

Publication number Publication date
WO2024037470A1 (zh) 2024-02-22

Similar Documents

Publication Publication Date Title
WO2020238871A1 (zh) 一种投屏方法、系统及相关装置
WO2021258809A1 (zh) 数据同步方法、电子设备和计算机可读存储介质
JP7369281B2 (ja) デバイス能力スケジューリング方法および電子デバイス
WO2021233079A1 (zh) 一种跨设备的内容投射方法及电子设备
CN112398855B (zh) 应用内容跨设备流转方法与装置、电子设备
WO2021175300A1 (zh) 数据传输方法、装置、电子设备和可读存储介质
WO2021115112A1 (zh) 安装包的下载方法、分发方法、终端设备、服务器及系统
WO2021109872A1 (zh) 一种http请求传输方法及设备
CN116795753A (zh) 音频数据的传输处理的方法及电子设备
WO2021036869A1 (zh) 一种位置信息获取方法及电子设备
CN115407962A (zh) 一种音频分流的方法及电子设备
CN116017388B (zh) 一种基于音频业务的弹窗显示方法和电子设备
CN117632074A (zh) 一种音频数据处理方法、装置及存储介质
CN115002842B (zh) 数据传输的方法、电子设备及可读存储介质
CN115037671B (zh) 多路径聚合调度方法及电子设备
WO2021218544A1 (zh) 一种提供无线上网的系统、方法及电子设备
CN113950033A (zh) 数据传输方法和设备
CN114173381A (zh) 数据传输方法和电子设备
CN114916017B (zh) 数据传输的方法、电子设备及可读存储介质
WO2024093703A1 (zh) 一种实例的管理方法、装置、电子设备及存储介质
CN114006969B (zh) 一种窗口启动方法和电子设备
CN111859418B (zh) 原子能力调用方法及终端设备
WO2024082855A1 (zh) 一种音频业务处理方法、电子设备及计算机存储介质
CN117880885A (zh) 音频播放优化的方法及电子设备
WO2022233237A1 (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