CN111381954B - 一种音频数据录制方法、***及终端设备 - Google Patents
一种音频数据录制方法、***及终端设备 Download PDFInfo
- Publication number
- CN111381954B CN111381954B CN201811607839.6A CN201811607839A CN111381954B CN 111381954 B CN111381954 B CN 111381954B CN 201811607839 A CN201811607839 A CN 201811607839A CN 111381954 B CN111381954 B CN 111381954B
- Authority
- CN
- China
- Prior art keywords
- audio data
- thread
- recording
- playing
- audio
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000013518 transcription Methods 0.000 description 1
- 230000035897 transcription Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/162—Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明适用于电子技术领域,提供了一种音频数据录制方法、***及终端设备,包括根据客户端的录音指令识别录制对象;若录制对象为客户端播放的音频数据,则创建复制播放线程,复制播放线程包括第一播放线程和第二播放线程;控制服务端启动第一播放线程,通过标准输出设备播放音频数据;控制服务端启动第二播放线程,将播放的音频数据存储到音频硬件抽象层中;通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。使用户能够听到播放的声音,同时通过第二播放线程将音频数据输出到音频硬件抽象层中,使启动录音线程时,客户端能够从音频硬件抽象层中获取到音频数据。
Description
技术领域
本发明属于电子技术领域,尤其涉及一种音频数据录制方法、***及终端设备。
背景技术
录音功能一般是指从麦克风等标准输入设备中获得音频数据并对音频数据进行保存的功能。目前安卓***提供一种音频数据录制方法,能够录制***中正在播放的音频数据(即不是从麦克风等标准输入设备获得的音频数据),而该方法存在有一个缺陷,即当录制正在播放的音频时,***就会停止该音频在标准输出设备(如喇叭、耳机)的播放线程,导致在录制***播放的音频数据时,用户无法从标准输出设备听到声音。
综上所述,目前录制***播放的音频数据时存在用户无法从标准输出设备听到声音的问题。
发明内容
有鉴于此,本发明实施例提供了一种音频数据录制方法、***及终端设备,以解决目前录制***播放的音频数据时存在用户无法从标准输出设备听到声音的问题。
本发明的第一方面提供了一种音频数据录制方法,包括:
根据客户端的录音指令识别录制对象;
若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程;
控制服务端启动所述第一播放线程通过所述标准输出设备播放所述音频数据;
控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中;
通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。
本发明的第二方面提供了一种音频数据录制***,包括:
识别模块,用于根据客户端的录音指令识别录制对象;
创建模块,用于若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程;
第一启动模块,用于控制服务端启动所述第一播放线程通过所述标准输出设备播放所述音频数据;
第二启动模块,用于控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中;
录音模块,用于通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。
本发明的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
根据客户端的录音指令识别录制对象;
若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程;
控制服务端启动所述第一播放线程通过所述标准输出设备播放所述音频数据;
控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中;
通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
根据客户端的录音指令识别录制对象;
若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程;
控制服务端启动所述第一播放线程通过所述标准输出设备播放所述音频数据;
控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中;
通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。
本发明提供的一种音频数据录制方法、***及终端设备,通过在录制客户端播放声音时,创建复制播放线程,通过第一播放线程将音频数据传给标准输出设备,以使用户能够听到播放的声音,同时通过第二播放线程将音频数据输出到音频硬件抽象层中,使启动录音线程时,客户端能够从音频硬件抽象层中获取到音频数据,实现对客户端正在播放的音频数据进行录制,有效地解决了目前录制***播放的音频数据时存在用户无法从标准输出设备听到声音的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种音频数据录制方法的实现流程示意图;
图2是本发明实施例一提供的一种音频数据录制方法的实现架构示意图;
图3是本发明实施例二提供的对应实施例一步骤S103的实现流程示意图;
图4是本发明实施例三提供的对应实施例一步骤S104的实现流程示意图;
图5是本发明实施例四提供的对应实施例一步骤S105的实现流程示意图;
图6是本发明实施例五提供的一种音频数据录制***的结构示意图;
图7是本发明实施例六提供的对应实施例五中第一启动模块103的结构示意图;
图8是本发明实施例七提供的对应实施例五中第二启动模块104的结构示意图;
图9是本发明实施例八提供的对应实施例五中录音模块105的结构示意图;
图10是本发明实施例九提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的***、***、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
如图1所示,本实施例提供了一种音频数据录制方法,其具体包括:
步骤S101:根据客户端的录音指令识别录制对象。
在具体应用中,录制对象包括通过标准输入设备(如麦克风)输入的音频数据和客户端播放的音频数据。客户端通过获取安装在终端设备中的录音应用程序发出的录音指令来识别录制对象。需要说明的是,上述录音指令包括录制对象。
在具体应用中,上述客户端为音频录制客户端AudioRecord,通过客户端AudioRecord在识别到录制对象为录制***内部播放的音频数据时,指定输入源为MediaRecorder.AudioSource.REMOTE_SUBMIX。具体的,当识别到录制对象为客户端播放的音频数据时,在Java层创建AudioRecord实例,并指定其输入源为MediaRecorder.AudioSource.REMOTE_SUBMIX。
需要说明的是,AudioTrack是Java层的播放应用程序在Native层的实例,AudioRecord是Java层的录音应用程序在Native层的实例。
步骤S102:若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程。
在具体应用中,当识别到录制对象为客户端播放的音频数据,即 AudioRecord实例的输入源为MediaRecorder.AudioSource.REMOTE_SUBMIX 时,服务端AudioPolicyService会在Native层创建一个复制播放线程,复制播放线程是根据目前客户端正在播放的音频数据播放线程进行复制并创建的,其包括第一播放线程和第二播放线程。第一播放线程用于控制播放标准输出设备 (喇叭或耳机等)播放音频数据,第二播放线程用于控制将正在播放的音频数据缓存到对应的音频硬件抽象层中。
需要说明的是,上述复制播放线程包括两个对应支持不同播放对象的播放线程,一个对应支持标准输出设备,一个对应支持内录输出。对应支持标准输出设备的播放线程能够通过标准输出设备继续输出音频数据,对应支持内录输出的播放线程能够为内录对应的输入设备(对应音频抽象层为Audio Remote Submix)提供需要录制的音频数据。需要说明的是,
步骤S103:控制服务端启动所述第一播放线程,通过所述标准输出设备播放所述音频数据。
在具体应用中,控制服务端AudioPolicyService启动第一播放线程,通过安装在终端设备的播放应用程序将解码后需要播放的音频数据发送到音频客户端AudioTrack中,通过音频客户端AudioTrack将上述音频数据写到服务端的第一播放线程中的一个通道中(Track),然后再将音频数据传到音频硬件抽象层,最后通过标准输出设备播放上述音频数据。通过控制服务端启动第一播放线程就能够继续在标准输出设备中播放音频数据。
步骤S104:控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中。
在具体应用中,控制服务端AudioPolicyService启动第二播放线程,通过安装在终端设备的播放应用程序将解码后需要播放的音频数据发送到音频客户端AudioTrack中,通过音频客户端AudioTrack将上述音频数据写到服务端的第二播放线程中的一个通道中(Track),然后再将音频数据写到支持内录输出 (对应音频抽象层为Audio RemoteSubmix)的音频硬件抽象层中的一个缓存空间中。
步骤S105:通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。
在具体应用中,当需要录制正在播放的音频数据时,录音应用程序输出录音指令后,服务端AudioPolicyService会在Native层创建复制播放线程的同时创建录音线程。
在具体应用中,控制服务端AudioPolicyService启动录音线程,录音线程通过音频硬件抽象层获取第二播放线程存储在音频硬件抽象层中缓存空间中的音频数据,然后通过录音客户端1AudioRecord从音频硬件抽象层中读取上述音频数据,并将该音频数据返回给录音应用程序。
在一个实施例中,上述音频数据录制方法还包括:
步骤S106:若所述录制对象为标准输入设备输入的音频数据,则控制服务端启动录音线程,通过所述硬件抽象层从标准输入设备获取音频数据,并将所述音频数据传输到录音线程的通道中。
在具体应用中,通过客户端AudioRecord在识别到录制对象为标准输入设备输入的音频数据,指定输入源标准输入设备(麦克风)。具体的,当识别到录制对象为标准输入设备的音频数据时,在Java层创建AudioRecord实例,并指定其输入源为MediaRecorder.AudioSource.MIC,控制服务端启动录音线程,通过所述硬件抽象层从标准输入设备获取音频数据,并将所述音频数据传输到录音线程的通道中。
步骤S107:控制客户端从所述录音线程的通达中获取所述音频数据。
在具体应用中,控制录音客户端AudioRecord从录音线程的通道(Track) 中读取音频数据,并将该音频数据返回给录音应用程序。
为了便于更清楚地解释本实施例提供的音频数据录制方法,结合图2对本实施例提供的音频数据录制方法进行说明如下:
如图2所示,其中是Java层的播放应用程序在Native层的实例, AudioRecord是Java层的录音应用程序在Native层的实例。服务端AudioFlinger 与服务端AudioPolicyService是在Native层的服务端,服务端AudioFlinger管理着多个AudioPolicyService服务端的播放线程和录音线程,用于处理播放的音频数据和需要录制的音频数据。服务端AudioPolicyService主要用于控制服务端的播放线程、录音线程的开启(start)、暂停(stop)和释放(release);每个客户端AudioTrack与客户端AudioRecord在服务端AudioFlinger中都对应着服务端播放线程与录音线程中的一个通道(Track)(每个服务端的线程最多有 32个Track)。音频硬件抽象层负责控制输入设备和输出设备,不同特性的输入设备、输出设备需要不同的抽象层来进行控制。本实施例中的音频硬件抽象层有两种:第一种为支持标准输入设备、标准输出设备的音频硬件抽象层,一种为支持内录输出(Remote Submix)的音频硬件抽象层。
当识别到录制对象为客户端播放的音频数据时,服务端AudioPolicyService 根据正在播放的音频数据创建复制播放线程DumlicatingThread,其中包括:支持标准输出设备的第一播放线程PlaybackThread1和支持内录输出的第二播放线程PlaybackThread2。
服务端AudioPolicyService启动第一播放线程PlaybackThread1将音频数据通过支持标准输出设备的音频硬件抽象层输出到位于Linux内核层的标准输出设备中进行播放。与此同时,服务端AudioPolicyService启动第二播放线程PlaybackThread2将音频数据存储到支持内录输出的音频硬件抽象层的buffer存储空间中。再启动录音线程RecordThread从支持内录输出的音频硬件抽象层的 buffer存储空间中读取该音频数据,再将音频数据返回到Native层的 AudioRecord实例,通过AudioRecord实例将该音频数据返回给录音应用程序,实现在录制客户端正在播放的音频数据的同时能够继续播放音频数据,方便用户判读录音是否在进行,提供交互能力。
本实施例提供的音频数据录制方法,通过在录制客户端播放声音时,创建复制播放线程,通过第一播放线程将音频数据传给标准输出设备,以使用户能够听到播放的声音,同时通过第二播放线程将音频数据输出到音频硬件抽象层中,使启动录音线程时,客户端能够从音频硬件抽象层中获取到音频数据,实现对客户端正在播放的音频数据进行录制,有效地解决了目前录制***播放的音频数据时存在用户无法从标准输出设备听到声音的问题。
实施例二:
如图3所示,在本实施例中,实施例一中的步骤S103具体包括:
步骤S201:控制服务端启动所述第一播放线程,将音频数据通过音频播放客户端写到第一播放线程的通道中。
在具体应用中,控制服务端AudioPolicyService启动第一播放线程,并通过音频播放客户端AudioTrack将音频数据写入到第一播放线程的通道中。需要说明的是,各个播放线程都有其对应的通道,通过该通道进行数据传输。
步骤S202:通过所述第一播放线程的通道将所述音频数据传输至音频硬件抽象层中。
在具体应用中,通过第一播放线程的通道将音频数据对应传输到支持标准输出设备的音频硬件抽象层中。
步骤S203:控制音频硬件抽象层将音频数据写入标准输出设备,进行播放。
在具体应用中,在将音频数据传输到支持标准输出设备的音频硬件抽象层中后,控制音频硬件抽象层将该音频数据写入到对应的标准输出设备中,再通过标准输出设备播放该音频数据。
实施例三:
如图4所示,在本实施例中,实施例一中的步骤S104具体包括:
步骤S301:控制服务端启动所述第二播放线程,将音频数据通过音频播放客户端写到第二播放线程的通道中。
在具体应用中,控制服务端AudioPolicyService启动第二播放线程PlaybackThread2,并通过音频播放客户端AudioTrack将音频数据写入到第二播放线程的通道中。
步骤S302:在音频硬件抽象层创建缓存区。
在具体应用中,对应于需要存储的音频数据,在支持内录输出的音频硬件抽象层创建缓存区(buffer存储空间)。
在具体应用中,根据音频数据所需占用的存储空间创建能够容纳该音频数据的缓存区。
步骤S303:通过所述第二播放线程将所述音频数据传输至所述音频硬件抽象层的缓存区中。
在具体应用中,将写入到第二播放线程通道中的音频数据传输到为该音频数据所创建的支持内录输出的音频硬件抽象层的缓存区中。
实施例四:
如图5所示,在本实施例中,实施例一中的步骤S105具体包括:
步骤S401:控制服务端启动录音线程,读取存储在音频硬件抽象层的音频数据,并将所述音频数据存储在所述录音线程的通道中。
在具体应用中,控制服务端AudioPolicyService启动录音线程,将第二播放线程存储在支持内录输出的音频硬件抽象层的缓存区中的音频数据读取并存储到录音线程的通道中。
步骤S402:控制客户端从所述录音线程的通达中获取所述音频数据。
在具体应用中,控制录音客户端AudioRecord录音线程的通道(Track)中读取音频数据,并将该音频数据返回给录音应用程序。
实施例五:
如图6所示,本实施例提供一种音频数据录制***100,用于执行实施例一中的方法步骤,其包括识别模块101、创建模块102、第一启动模块103、第二启动模块104以及录音模块105。
识别模块101用于根据客户端的录音指令识别录制对象。
创建模块102用于若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程。
第一启动模块103用于控制服务端启动所述第一播放线程通过所述标准输出设备播放所述音频数据。
第二启动模块104用于控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中。
录音模块105用于通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。
在一个实施例中,上述音频数据录制***还包括输入音频录制模块和输入音频获取模块。
上述输入音频录制模块用于若所述录制对象为标准输入设备输入的音频数据,则控制服务端启动录音线程,通过所述硬件抽象层从标准输入设备获取音频数据,并将所述音频数据传输到录音线程的通道中。
上述输入音频获取模块用于控制客户端从所述录音线程的通达中获取所述音频数据。
需要说明的是,本发明实施例提供的音频数据录制***,由于与本发明图 1所示方法实施例基于同一构思,其带来的技术效果与本发明图1所示方法实施例相同,具体内容可参见本发明图1所示方法实施例中的叙述,此处不再赘述。
因此,本实施例提供的一种音频数据录制***,同样能够通过在录制客户端播放声音时,创建复制播放线程,通过第一播放线程将音频数据传给标准输出设备,以使用户能够听到播放的声音,同时通过第二播放线程将音频数据输出到音频硬件抽象层中,使启动录音线程时,客户端能够从音频硬件抽象层中获取到音频数据,实现对客户端正在播放的音频数据进行录制,有效地解决了目前录制***播放的音频数据时存在用户无法从标准输出设备听到声音的问题。
实施例六:
如图7所示,在本实施例中,实施例五中的第一启动模块103包括用于执行图3所对应的实施例中的方法步骤的结构,其包括第一启动单元201、传输单元202以及播放单元203。
第一启动单元201用于控制服务端启动所述第一播放线程,将音频数据通过音频播放客户端写到第一播放线程的通道中。
传输单元202用于通过所述第一播放线程的通道将所述音频数据传输至音频硬件抽象层中。
播放单元203用于控制音频硬件抽象层将音频数据写入标准输出设备,进行播放。
实施例七:
如图8所示,在本实施例中,实施例五中的第二启动模块104包括用于执行图4所对应的实施例中的方法步骤的结构,其包括第二启动单元301、缓存创建单元302以及缓存单元303。
第二启动单元301用于控制服务端启动所述第二播放线程,将音频数据通过音频播放客户端写到第二播放线程的通道中。
缓存创建单元302用于在音频硬件抽象层创建缓存区。
缓存单元303用于通过所述第二播放线程将所述音频数据传输至所述音频硬件抽象层的缓存区中。
实施例八:
如图9所示,在本实施例中,实施例五中的录音模块105包括用于执行图 5所对应的实施例中的方法步骤的结构,其包括数据读取单元401和数据获取单元402。
数据读取单元401用于控制服务端启动录音线程,读取存储在音频硬件抽象层的音频数据,并将所述音频数据存储在所述录音线程的通道中。
数据获取单元402用于控制客户端从所述录音线程的通达中获取所述音频数据。
实施例九:
图10是本发明实施例九提供的终端设备的示意图。如图10所示,该实施例的终端设备9包括:处理器90、存储器91以及存储在所述存储器91中并可在所述处理器90上运行的计算机程序92,例如程序。所述处理器90执行所述计算机程序92时实现上述各个图片处理方法实施例中的步骤,例如图1所示的步骤S101至S105。或者,所述处理器90执行所述计算机程序92时实现上述***实施例中各模块/单元的功能,例如图6所示模块101至105的功能。
示例性的,所述计算机程序92可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器91中,并由所述处理器90执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序92在所述终端设备9中的执行过程。例如,所述计算机程序92可以被分割成识别模块、创建模块、第一启动模块、第二启动模块以及录音模块,各模块具体功能如下:
识别模块,用于根据客户端的录音指令识别录制对象;
创建模块,用于若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程;
第一启动模块,用于控制服务端启动所述第一播放线程通过所述标准输出设备播放所述音频数据;
第二启动模块,用于控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中;
录音模块,用于通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据。
所述终端设备9可以是桌上型计算机、笔记本、掌上电脑及云端管理服务端等计算设备。所述终端设备可包括,但不仅限于,处理器90、存储器91。本领域技术人员可以理解,图8仅仅是终端设备9的示例,并不构成对终端设备 9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器91可以是所述终端设备9的内部存储单元,例如终端设备9 的硬盘或内存。所述存储器91也可以是所述终端设备9的外部存储设备,例如所述终端设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器91还可以既包括所述终端设备9的内部存储单元也包括外部存储设备。所述存储器91用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述***的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述无线终端中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的***/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的***/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,***或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述设置为分离部件说明的单元可以是或者也可以不是物理上分开的,设置为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并设置为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或***、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (8)
1.一种音频数据录制方法,其特征在于,包括:
根据客户端的录音指令识别录制对象;
若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程;
控制服务端启动所述第一播放线程,通过所述标准输出设备播放所述音频数据;
控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中;
通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据,并将所述音频数据返回给录音应用程序;
所述控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中,包括:控制服务端启动所述第二播放线程,将音频数据通过音频播放客户端写到第二播放线程的通道中;
在音频硬件抽象层创建缓存区;
通过所述第二播放线程将所述音频数据传输至所述音频硬件抽象层的缓存区中;再启动录音线程RecordThread从支持内录输出的音频硬件抽象层的buffer存储空间中读取该音频数据,再将音频数据返回到Native层的AudioRecord实例,通过AudioRecord实例将该音频数据返回给录音应用程序。
2.根据权利要求1所述的方法,其特征在于,所述控制服务端启动所述第一播放线程,通过所述标准输出设备播放所述音频数据,包括:
控制服务端启动所述第一播放线程,将音频数据通过音频播放客户端写到第一播放线程的通道中;
通过所述第一播放线程的通道将所述音频数据传输至音频硬件抽象层中;
控制音频硬件抽象层将音频数据写入标准输出设备,进行播放。
3.根据权利要求2所述的方法,其特征在于,所述通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据,包括:
控制服务端启动录音线程,读取存储在音频硬件抽象层的音频数据,并将所述音频数据存储在所述录音线程的通道中;
控制客户端从所述录音线程的通道中获取所述音频数据。
4.根据权利要求1所述的方法,其特征在于,还包括:
若所述录制对象为标准输入设备输入的音频数据,则控制服务端启动录音线程,通过所述硬件抽象层从标准输入设备获取音频数据,并将所述音频数据传输到录音线程的通道中;
控制客户端从所述录音线程的通道中获取所述音频数据。
5.一种音频数据录制***,其特征在于,包括:
识别模块,用于根据客户端的录音指令识别录制对象;
创建模块,用于若所述录制对象为客户端播放的音频数据,则创建复制播放线程,所述复制播放线程包括第一播放线程和第二播放线程,所述第一播放线程为支持标准输出设备的服务端播放线程,所述第二播放线程为支持内录输出的服务端播放线程;
第一启动模块,用于控制服务端启动所述第一播放线程通过所述标准输出设备播放所述音频数据;
第二启动模块,用于控制服务端启动所述第二播放线程,将所述播放的音频数据存储到音频硬件抽象层中;
录音模块,用于通过服务端启动录音线程,控制客户端获取存储在音频硬件抽象层的音频数据,并将所述音频数据返回给录音应用程序;
所述第二启动模块包括:
第二启动单元,用于控制服务端启动所述第二播放线程,将音频数据通过音频播放客户端写到第二播放线程的通道中;
缓存创建单元,用于在音频硬件抽象层创建缓存区;
缓存单元,用于通过所述第二播放线程将所述音频数据传输至所述音频硬件抽象层的缓存区中;再启动录音线程RecordThread从支持内录输出的音频硬件抽象层的buffer存储空间中读取该音频数据,再将音频数据返回到Native层的AudioRecord实例,通过AudioRecord实例将该音频数据返回给录音应用程序。
6.根据权利要求5所述的音频数据录制***,其特征在于,所述第一启动模块包括:
第一启动单元,用于控制服务端启动所述第一播放线程,将音频数据通过音频播放客户端写到第一播放线程的通道中;
传输单元,用于通过所述第一播放线程的通道将所述音频数据传输至音频硬件抽象层中;
播放单元,用于控制音频硬件抽象层将音频数据写入标准输出设备,进行播放。
7.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811607839.6A CN111381954B (zh) | 2018-12-27 | 2018-12-27 | 一种音频数据录制方法、***及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811607839.6A CN111381954B (zh) | 2018-12-27 | 2018-12-27 | 一种音频数据录制方法、***及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111381954A CN111381954A (zh) | 2020-07-07 |
CN111381954B true CN111381954B (zh) | 2024-05-03 |
Family
ID=71222349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811607839.6A Active CN111381954B (zh) | 2018-12-27 | 2018-12-27 | 一种音频数据录制方法、***及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111381954B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112423076B (zh) * | 2020-11-18 | 2023-05-05 | 湖南嘉加智能科技有限公司 | 一种音频投屏同步控制方法、设备及计算机可读存储介质 |
CN112615853B (zh) * | 2020-12-16 | 2023-01-10 | 瑞芯微电子股份有限公司 | 一种Android设备音频数据接入方法 |
CN113038181B (zh) * | 2021-03-15 | 2021-12-21 | 中国科学院计算机网络信息中心 | Android平台下RTMP音视频推流中启停音频容错方法及*** |
CN115134452A (zh) * | 2021-03-26 | 2022-09-30 | 成都鼎桥通信技术有限公司 | 麦克风资源的调用方法及装置 |
CN113299321B (zh) * | 2021-05-11 | 2022-07-29 | 南京市德赛西威汽车电子有限公司 | 一种车载娱乐***多用户音频共享方法、车载***及存储介质 |
CN113423006B (zh) * | 2021-05-31 | 2022-07-15 | 惠州华阳通用电子有限公司 | 一种基于主副声道的多音频流混音播放方法及*** |
CN114944171A (zh) * | 2022-06-06 | 2022-08-26 | 北京字跳网络技术有限公司 | 音频录制方法、装置及电子设备 |
CN114879930B (zh) * | 2022-07-07 | 2022-09-06 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境的音频输出优化方法 |
CN115396723A (zh) * | 2022-08-23 | 2022-11-25 | 北京小米移动软件有限公司 | 屏幕录制方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889068A (zh) * | 2005-06-30 | 2007-01-03 | 腾讯科技(深圳)有限公司 | 一种实现音频和视频同步的方法 |
CN102420010A (zh) * | 2011-10-17 | 2012-04-18 | 苏州阔地网络科技有限公司 | 一种音频录制方法及*** |
CN106708612A (zh) * | 2015-11-18 | 2017-05-24 | 中兴通讯股份有限公司 | 一种实现音频录制的方法及终端 |
WO2017177873A1 (zh) * | 2016-04-15 | 2017-10-19 | 中兴通讯股份有限公司 | 一种音频同步录放***及方法、存储介质 |
CN107277412A (zh) * | 2017-07-24 | 2017-10-20 | 腾讯科技(深圳)有限公司 | 视频录制方法及装置、图形处理器及电子设备 |
WO2018120545A1 (zh) * | 2016-12-30 | 2018-07-05 | 华为技术有限公司 | 一种测试音频回路时延的方法及设备 |
-
2018
- 2018-12-27 CN CN201811607839.6A patent/CN111381954B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1889068A (zh) * | 2005-06-30 | 2007-01-03 | 腾讯科技(深圳)有限公司 | 一种实现音频和视频同步的方法 |
CN102420010A (zh) * | 2011-10-17 | 2012-04-18 | 苏州阔地网络科技有限公司 | 一种音频录制方法及*** |
CN106708612A (zh) * | 2015-11-18 | 2017-05-24 | 中兴通讯股份有限公司 | 一种实现音频录制的方法及终端 |
WO2017177873A1 (zh) * | 2016-04-15 | 2017-10-19 | 中兴通讯股份有限公司 | 一种音频同步录放***及方法、存储介质 |
WO2018120545A1 (zh) * | 2016-12-30 | 2018-07-05 | 华为技术有限公司 | 一种测试音频回路时延的方法及设备 |
CN107277412A (zh) * | 2017-07-24 | 2017-10-20 | 腾讯科技(深圳)有限公司 | 视频录制方法及装置、图形处理器及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111381954A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381954B (zh) | 一种音频数据录制方法、***及终端设备 | |
US8401534B2 (en) | Mobile communication terminal and method for controlling the same | |
US20200259879A1 (en) | Interaction method and device for mobile terminal and cloud platform of unmanned aerial vehicle | |
CN111625214B (zh) | 音频控制方法、装置、设备及存储介质 | |
CN105430478B (zh) | 一种网络视频缓冲播放方法、装置及电视机 | |
CN110704202B (zh) | 多媒体录制数据共享方法及终端设备 | |
US20190237070A1 (en) | Voice interaction method, device, apparatus and server | |
CN112954244A (zh) | 监控录像的存储实现方法、装置、设备及存储介质 | |
JP6356248B2 (ja) | 特定の情報がアプリケーションによって伝送されることの検証 | |
US8726101B2 (en) | Apparatus and method for tracing memory access information | |
CN103617135B (zh) | 一种存储设备中数据读取的方法及装置 | |
CN104054049A (zh) | 减少由cpu执行以便复制源数据从而实现对源数据的并行处理的读/写操作的数量 | |
CN105005612A (zh) | 一种音乐文件的获取方法及移动终端 | |
KR20100050098A (ko) | 영상처리장치 및 그 제어 방법 | |
US20170171630A1 (en) | Sharing Portions of a Video | |
US10257633B1 (en) | Sound-reproducing method and sound-reproducing apparatus | |
CN106328174A (zh) | 一种录音数据的处理方法及装置 | |
JP2006059261A (ja) | メモリーカード及び再生装置 | |
CN104679697B (zh) | 文件读取方法、装置及光驱驱动板和光驱设备 | |
US9681088B1 (en) | System and methods for movie digital container augmented with post-processing metadata | |
CN111354383A (zh) | 一种音频缺陷定位方法、装置及终端设备 | |
KR101754714B1 (ko) | 저장 매체에 대한 접근 관리 방법 및 이를 실행하는 장치 | |
KR20160119037A (ko) | 저장 매체에 대한 접근 관리 방법, 이를 실행하는 단말 장치 및 서비스 시스템 | |
CN107968728B (zh) | 确定速率的方法及设备 | |
US20230008725A1 (en) | Information processing apparatus and file recording method |
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 |