一种播放音频文件的方法和装置的制作方法

文档序号:6739701阅读:101来源:国知局
专利名称:一种播放音频文件的方法和装置的制作方法
技术领域
本发明涉及通信电子技术领域,尤其涉及一种播放音频文件的方法和装置。
背景技术
Android 音频系统有两大服务一是 AudioFlinger, 二是 AudioPolicyService。AudioFlinger向下访问AudioHardware,实现输出音频数据,控制音频参数。同时,AudioFlinger 向上通过 IAudioFlinger 接口提供服务。所以,AudioFlinger 在 Android 的音频系统框架中起着承上启下的作用,地位相当重要。如图I所示,Android系统原有的音 频系统在使用AudioFlinger对音频文件的处理过程如下
步骤101、对待播放的音频文件进行解码操作;
步骤102、判断解码后的音频文件的量化精度值是否大于16bit ;如果大于执行步骤104 ;如果不大于,执行步骤103 ;
步骤103、如果所要播放音频文件的量化精度值不大于16bit,则调用AudioFlinger默认的处理线程对解码后的音频文件进行处理;
步骤104、如果所要播放音频文件的量化精度值大于16bit,则在AudioFlinger中创建相应格式的音轨(Track),将所述Track加入新创建的DirectOutputThread处理线程或加入MixerThread处理线程中进行按照现有技术对解码后的音频文件进行处理并播放。可见,目前在大部分使用Android系统的设备中,因为系统本身的架构缺陷在播放音频文件时,需将该音频文件强制按采样频率为44100Hz,量化精度值为16bit进行处理后播放。如果要播放的音频文件的量化精度值大于16bit时,仍然按照默认的处理方式(采样频率为44100Hz,量化精度值为16bit)来处理,实际上对于一些高音质的音频文件,如量化精度值为24bit或32bit的音频文件,当将其量化精度值设置为16bit时即使能被播放出来,在这个过程中亦会存在一定的音质损失。因此,本发明人发现在现有技术中对于量化精度值大于16bit的音频文件,如果将其按照16bit格式来处理,则会很大程度上的损坏音质。

发明内容
本发明所要解决的技术问题在于,提供一种播放音频文件的方法和装置,用于解决现有技术中在播放量化精度值为24bit或32bit的音频文件时,损失音质的问题。一种播放音频文件的方法,所述方法包括
对待播放的音频文件进行解码操作,获得目标音频文件;
判断所述目标音频文件的量化精度值是否大于预设值;
在确定大于所述预设值时,为所述目标音频文件创建音轨;
将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。一种播放音频文件的装置,所述装置包括获取单元,用于对待播放的音频文件进行解码操作,获得目标音频文件;
判断单元,用于判断所述目标音频文件的量化精度值是否大于预设值;
音轨创建单元,用于在所述判断单元确定所述目标音频文件的量化精度值大于预设值时,为所述目标首频文件创建首轨;
播放单元,用于将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。本发明实施例提供的方法,在Android系统的音频处理系统中添加对较大量化精度值的音频文件的处理方式之后,除了能够使用原有的默认处理方式对量化精度值较低的音频文件进行播放处理,还能够实现对量化精度值为24bit、32bit这样的较高质量的音频文件的处理和播放,完善了 Android系统音频处理系统,在一定程度上弥补了原有框架中 的架构缺陷,减少了不必要的音质损失。


为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图I为本现有技术中音频文件的处理方法流程 图2为本发明实施例提供的一种播放音频文件的方法流程 图3为本发明实施例提供的第一种播放音频文件的方法流程 图4为本发明实施例提供的第二种播放音频文件的方法流程 图5为本发明实施例提供的一种播放音频文件的装置结构图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。本发明实施例提供的方法,在Android系统的音频处理系统中添加对较大量化精度值的音频文件的处理方式之后,除了能够使用原有的默认处理方式对量化精度值较低的音频文件进行播放处理,还能够实现对量化精度值为24bit、32bit这样的较高质量的音频文件的处理和播放,完善了 Android系统音频处理系统,在一定程度上弥补了原有框架中的架构缺陷,减少了不必要的音质损失。如图2所示,具体过程如下
步骤201,对待播放的音频文件进行解码操作,获得目标音频文件;
步骤202,判断所述目标音频文件的量化精度值是否大于预设值;
步骤203,在确定大于所述预设值时,为所述目标音频文件创建音轨;
步骤204,将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。在为所述目标音频文件创建音轨之后、且在所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件之前,进一步包括
为所述音轨创建直接输出线程;
所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件包括 将所述音轨加入所述直接输出线程,使用所述直接输出线程处理所述音轨中的音频数据,并播放所述待播放的音频文件。在为所述目标音频文件创建音轨之后、且在所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件之前,进一步包括
为所述音轨创建混合线程;
所述将所述音轨加入相对应的线程,使 用所述线程播放所述待播放的音频文件包括将所述音轨加入所述混合线程,使用所述混合线程中的音频混合类处理所述音轨中的音频数据,并播放所述待播放的音频文件。Android系统的音频处理系统中有一个叫做“AudioFlinger”服务,音频文件播放的主要处理工作是在这里进行的。AudioFlinger处理音频播放的主要线程有两类,分别是混合线程(MixerThread)和直接输出线程(DirectOutputThread)。本发明主要介绍了两种方式对量化精度值为24bit、32bit的音频文件的处理及播放方式,该方法主要用于Android系统中的音频处理系统中
第一种方式是利用直接输出线程(DirectOutputThread)处理并播放音频文件,过程简介如下
当音频处理系统判断出当前待播放的音频文件为24bit、32bit格式时,就相应创建该音频文件的音轨(Track)。然后创建一个直接输出线程(DirectOutputThread),在这个直接输出线程中处理该音轨的音频数据。例如,在播放时根据音频文件的格式参数,通过预设的函数将音频硬件设备的参数的采样频率、通道、量化精度值分别设置为96000Hz,2,24bit。这样,在把待播放的音频文件的音频数据输入到音频硬件设备时,音频硬件设备就会按照所设置参数去处理音频数据。当播放完毕或暂停时,通过预设的函数将音频硬件的设备参数设置为缺省值。其中,预设的函数为ioctrl。第二种方式是利用混合线程(MixerThread),在音频混合类(AudioMixer)中加入对24bit、32bit格式的音频数据的混合处理。当音频处理系统判断出当前待播放的音频文件的量化精度值为24bit或32bit时,就相应创建与该音频文件对应的音轨(Track)。然后将所创建的音轨加入到AudioFlinger的混合线程中,由混合线程来处理该音轨的音频数据。处理的过程中需要对音轨的音频数据进行混合,混合的过程是通过音频混合类(AudioMixer)来实现的。由于Android系统原有的音频混合类(AudioMixer)未实现对量化精度值为24bit、32bit的音频数据的混合处理操作,所以这里需要在音频混合类中加入对量化精度值为24bit、32bit的音频数据的混合处理逻辑。下面给出具体例子,对本发明的一种播放音频文件的方法进行详细说明。该方法具体用在Android系统的音频处理系统中。本发明在Android系统的音频处理系统中添加对高量化精度值音频文件的处理逻辑,例如对24bit、32bit格式的音频文件。AudioFlinger处理音频播放的主要线程有两类,分别是混合线程和直接输出线程。因此本发明主要有两种实现方式。参考图3,图示了本发明一种播放音频文件的方法,具体过程如下
步骤301、对待播放的音频文件进行解码操作,获得目标音频文件;
步骤302、判断所述目标音频文件的量化精度值是否大于预设值;
具体的,本步骤中的预设值为16bit ;则此步骤为判断目标音频文件的量化精度值是否大于16bit ;如果不大于执行步骤303 ;如果大于执行步骤304 ;
步骤303、如果目标音频文件的量化精度值不大于16bit,则调用AudioFlinger默认的处理线程对所述目标音频文件处理,既使用现有方式处理;
步骤304、如果目标音频文件的量化精度值大于16bit,例如24bit或者32bit,则在AudioFlinger中为该目标音频文件创建相应格式的音轨;
步骤305、创建DirectOutputThread线程,将所述音轨加入新创建的DirectOutputThread线程进行处理,使用该线程播放所述待播放的音频文件。具体的,在播放时,根据音频文件的格式参数,例如,对于一个采样频率为96000Hz,通道为2,量化精度值为24bit的音频文件,可通过Linux的ioctl O函数将音 频硬件设备的参数的采样频率、通道、量化精度值分别设置为96000Hz,2,24bit。这样,在把音频数据输入到音频硬件设备时,音频硬件设备就会按照所设置参数去处理音频数据了。当播放完毕或暂停时,通过Linux的ioctl O函数将音频硬件的设备参数设置还原为缺省值。参考图4,图示了本发明另一种播放音频文件的方法,具体过程如下
步骤401、对待播放的音频文件进行解码操作,获得目标音频文件;
步骤402、判断所述目标音频文件的量化精度值是否大于预设值;
具体的,本步骤中的预设值为16bit ;则此步骤为判断目标音频文件的量化精度值是否大于16bit ;如果不大于执行步骤403 ;如果大于执行步骤404 ;
步骤403、如果目标音频文件的量化精度值不大于16bit,则调用AudioFlinger默认的处理线程对所述目标音频文件处理,既使用现有方式处理;步骤404、如果待播放的音频文件的量化精度值大于16bit,例如24bit、32bit格式的音频文件,在AudioFlinger中创建相应格式的Track ;
步骤405、将所述Track加入到MixerThread,在AudioMixer类中加入对所述音频文件数据的混合处理。由于Android系统原有的音频混合类(AudioMixer)未实现对24bit、32bit格式的音频数据的混合处理操作,因此本发明在音频混合类(AudioMixer)中加入对24bit、32bit格式的音频数据的混合处理逻辑。参考图5,图示了本发明实施例提供了一种播放音频文件的装置,所述装置包括 获取单元501,用于对待播放的音频文件进行解码操作,获得目标音频文件;
判断单元502,用于判断所述目标音频文件的量化精度值是否大于预设值;
音轨创建单元503,用于在所述判断单元确定所述目标音频文件的量化精度值大于预设值时,为所述目标音频文件创建音轨;
播放单元506,用于将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。所述装置还包括
直接输出线程创建单元504,用于为所述音轨创建直接输出线程;
所述播放单元具体用于,将所述音轨加入所述直接输出线程,使用所述直接输出线程处理所述音轨中的音频数据,并播放所述待播放的音频文件。所述装置还包括混合线程创建单元505,用于为所述音轨创建混合线程;
所述播放单元具体用于,将所述音轨加入所述混合线程,使用所述混合线程中的音频混合类处理所述音轨中的音频数据,并播放所述待播放的音频文件。实施本发明,在Android系统的音频处理系统中添加对较大量化精度值的音频文件的处理方式之后,除了能够使用Android系统音频处理系统中原有的默认处理逻辑对低 质量的音频文件进行播放处理,还能够实现对24bit、32bit格式这样的较高质量的音频文件的处理,完善了 Android系统音频处理系统,在一定程度上弥补了原有框架中的架构缺陷,减少了不必要的音质损失。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种播放音频文件的方法,其特征在于,所述方法包括 对待播放的音频文件进行解码操作,获得目标音频文件; 判断所述目标音频文件的量化精度值是否大于预设值; 在确定大于所述预设值时,为所述目标音频文件创建音轨; 将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。
2.如权利要求I所述的方法,其特征在于,在为所述目标音频文件创建音轨之后、且在所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件之前,进一步包括 为所述音轨创建直接输出线程; 所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件包括将所述音轨加入所述直接输出线程,使用所述直接输出线程处理所述音轨中的音频数据,并播放所述待播放的音频文件。
3.如权利要求I所述法,其特征在于,在为所述目标音频文件创建音轨之后、且在所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件之前,进一步包括 为所述音轨创建混合线程; 所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件包括将所述音轨加入所述混合线程,使用所述混合线程中的音频混合类处理所述音轨中的音频数据,并播放所述待播放的音频文件。
4.如权利要求I所述的方法,其特征在于,所述预设值为16bit。
5.一种播放音频文件的装置,其特征在于,所述装置包括 获取单元,用于对待播放的音频文件进行解码操作,获得目标音频文件; 判断单元,用于判断所述目标音频文件的量化精度值是否大于预设值; 音轨创建单元,用于在所述判断单元确定所述目标音频文件的量化精度值大于预设值时,为所述目标首频文件创建首轨; 播放单元,用于将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。
6.如权利要求5所述的装置,其特征在于,所述装置还包括 直接输出线程创建单元,用于为所述音轨创建直接输出线程; 所述播放单元具体用于,将所述音轨加入所述直接输出线程,使用所述直接输出线程处理所述音轨中的音频数据,并播放所述待播放的音频文件。
7.如权利要求5所述的装置,其特征在于,所述装置还包括 混合线程创建单元,用于为所述音轨创建混合线程; 所述播放单元具体用于,将所述音轨加入所述混合线程,使用所述混合线程中的音频混合类处理所述音轨中的音频数据,并播放所述待播放的音频文件。
全文摘要
本发明涉及通信电子技术领域,尤其涉及一种播放音频文件的方法和装置,该方法包括对待播放的音频文件进行解码操作,获得目标音频文件;判断所述目标音频文件的量化精度值是否大于预设值;在确定大于所述预设值时,为所述目标音频文件创建音轨;将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。可见该方法可解决现有技术中在播放量化精度值为24bit或32bit的音频文件时,避免损失音质的问题。
文档编号G11B20/10GK102881305SQ20121036072
公开日2013年1月16日 申请日期2012年9月21日 优先权日2012年9月21日
发明者罗玉海 申请人:北京君正集成电路股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1