录音方法及装置的制造方法_2

文档序号:9754938阅读:来源:国知局
示例性实施例示出的一种用于录音装置的一结构示意图。
【具体实施方式】
[0075]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0076]在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0077]应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0078]如图1所示,图1是根据一示例性实施例示出的一种录音方法流程图,该方法可以用于录音装置中,例如支持录音功能的终端,或者支持录音功能的智能设备,本方法包括以下步骤:
[0079]步骤101、在录制第一音频数据的过程中检测到暂停请求时,停止录音。
[0080]本公开中的终端可以是任何具有上网功能及录音功能的智能终端,例如,可以具体为手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)等。其中,终端可以通过无线局域网接入路由器,并通过路由器访问公网上的服务器。本公开中的智能设备可以是任何具有录音功能的智能设备。
[0081]步骤102、保存第一音频数据及录制该第一音频数据所使用的音频参数。
[0082]本公开实施例中,在暂停录音时,将录音所使用的音频参数进行保存,以便在恢复录音时使用这些参数。
[0083]步骤103、在检测到恢复请求时,基于该音频参数录制第二音频数据。
[0084]步骤104、将该第二音频数据补充到第一音频数据中,得到完整的音频数据。
[0085]上述实施例中,录音装置可以在整个录音过程中,只创建一个录音文件,即上述第一音频数据,在暂停和恢复录音之后,将录制的第二音频数据补充到第一音频数据中,也就是说并不需要保存第二音频数据,而是将第二音频数据补充到第一音频数据中即可,从而能够实现暂停前后录制的两段音频数据的接续,简化了录音文件的管理,与相关技术中每次暂停前后会产生两个临时录音文件相比,避免了录音文件在时间和空间上的浪费,也避免了多个临时录音文件的不同步问题,对系统性能不会造成任何不良影响。
[0086]如图2所示,图2是根据一示例性实施例示出的另一种录音方法流程图,该方法可以用于录音装置中,例如支持录音功能的终端,以及支持录音功能的智能设备,该方法可以包括以下步骤:
[0087]步骤201、在检测到开始录音请求时,创建第一录音实体。
[0088]本公开步骤中,第一录音实体可以为系统原生的录音操作的实体,例如媒体录音器(MediaRecorder)。
[0089]步骤202、针对该第一录音实体配置音频参数。
[0090]本公开步骤中,针对该第一录音实体配置声音源(Aud1Source)、采样率(SampleRate)、输出格式(OutputFormat)、音频编码器(Aud1Encoder)、编码比特率(Aud1EncodingBitrate)、输出文件(OutputFiIe)等必要的音频参数。
[0091]步骤203、调用配置音频参数之后的第一录音实体的周期函数,以录制第一音频数据。
[0092]本公开步骤中,调用该配置音频参数之后的第一录音实体的周期函数,包括prepareO,start(),以便开始录制第一音频数据。
[0093]本公开步骤的实现代码可以包括:
[0094]public static ParcelFileDescriptor open(File file,int mode);
[0095]表示以读、写、创建等方式打开一个音频文件。
[0096]其中,ParcelFileDescriptor是一个文件描述符,它是系统提供的API(Applicat1n Programming Interface,应用程序编程接口),最简单的使用方式就是对文件的读与。
[0097]步骤204、检测到暂停请求时,停止录制第一音频数据。
[0098]步骤205、保存第一音频数据及录制第一音频数据所使用的音频参数。
[0099]本公开实施例中,将第一音频数据作为录音文件进行保存,并将步骤202中配置的音频参数进行保存。
[0100]此外,在暂停录音之后,还可以释放第一录音实体所占用的各种资源,以节省资源,以及避免耗电。
[0101]步骤206、在检测到恢复请求时,创建第二录音实体。
[0102]本公开步骤中创建的第二录音实体也可以为MediaRecorder。
[0103]步骤207、读取保存的音频参数对该第二录音实体进行配置。
[0104]本公开步骤中,录制的音频数据受音频源、采样率、编码方式、输出格式及比特率等影响,为了保证暂停和恢复前后两次录制的音频数据能完整拼接到一起,需要采用同一套音频参数来配置录音实体,否则拼接之后的音频数据不能正常播放,或者播放效果会很差,因而本公开实施例直接使用第一录音实体的音频参数对第二录音实体进行配置。
[0105]步骤208、调用配置音频参数之后的该第二录音实体的周期函数,以录制第二音频数据。
[0106]本公开步骤中,录制的第二音频数据无需作为录音文件进行保存,
[0107]步骤209、创建具有写端口以及读端口的管道,通过第二录音实体向管道的写端口写入第二音频数据。
[0108]本公开步骤中创建管道(Pipe),该管道可以与第二录音实体绑定使用,其实现代码可以包括:
[0109]ParcelFileDescriptor[ Ipipes = ParcelFileDescriptor.createPipe()。
[0110]并且,将管道的写端口设置给第二录音实体,以实现通过第二录音实体向管道的写端口写入第二音频数据,其实现代码可以包括:
[0111]mMediaRecorder.setOutputFiIe(pipes[I].getFileDescriptor())。
[0112]步骤210、创建读线程,通过读线程从管道的读端口读出第二音频数据。
[0113]本公开步骤中,创建读线程,并且配置管道的读端口,以使得在写端口有数据写入时,通过读线程从读端口读出该数据,本公开实施例中即第二音频数据。
[0114]其中创建管道的实现代码可以包括:
[0115]public ParcelFileDescriptor[]createPipe();
[0116]返回一个或两个ParcelFileDescriptor元素的数组,第一个ParcelFi IeDescriptor是管道的读端口,第二个ParceIFi IeDescriptor是管道的写端口,利用读端口可以创建输入流(InputStream),利用写端口可以创建输出流(OutputStream),这样就可以实现在两个线程或者进程之间边读边写的功能,也就是说边录制第二音频数据边将第二音频数据补充到保存的第一音频数据中。
[0117]通过管道和读线程进行读写的实现代码可以包括:
[0118]public FileDescriptorgetFileDescriptorO;
[0119]表不获取到FiIeDescriptor,可以交给 Fi IeInput Stream 或Fi IeOutput Stream 来读写文件。
[0120]步骤211、对读出的第二音频数据进行处理,得到处理后的第二音频数据。
[0121]由于音频数据有可能存在一些文件头尾等跟格式相关的数据,在将第二音频数据补充到第一音频数据的过程过中需要分别去掉第一音频数据的文件尾数据(如果存在的话)和第二音频数据的文件头数据(如果存在的话),才能顺利将第一音频数据和第二音频数据拼接成完整的音频数据,因而本公开步骤中对读出的第二音频数据进行格式处理,以使得第二音频数据能够追加第一音频数据中。
[0122]步骤212、通过读线程将第二音频数据补充到第一音频数据中,得到完整的音频数据。
[0123]步骤213、在录制第二音频数据的过程中检测到停止录音请求时,停止录音。
[0124]停止录音之后,得到完整的音频数据。
[0125]这时候,可以释放第二录音实体所占用的资源。需要说明的是,本公开实施例所采用的方法都是基于系统基本的API来实现,简单易用,有良好的扩展性和维护性。
[0126]图1、图2所示的本公开实施例中,所录制的音频数据为AMR格式的数据。
[0127]如图3所示,图3是本公开根据一示例性实施例示出的一种录音方法的应用场景示意图。在图3所示的场景中,包括:作为录音装置的智能手机。
[0128]在打开智能手机的录音功能,智能手机检测到用户点击了开始按钮时,创建第一录音实体,为第一录音实体配置音频参数,并调用该配置音频参数之后的第一录音实体的周期函数来录制AMR格式的第一音频数据,在录制第一音频数据的过程中,检测到用户点击了暂停按钮,则停止录音,并存储录制的第一音频数据和第一录音实体的音频参数;在检测到用户点击
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1