本发明专利技术涉及通信电子技术领域,尤其涉及一种播放音频文件的方法和装置,该方法包括:对待播放的音频文件进行解码操作,获得目标音频文件;判断所述目标音频文件的量化精度值是否大于预设值;在确定大于所述预设值时,为所述目标音频文件创建音轨;将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。可见该方法可解决现有技术中在播放量化精度值为24bit或32bit的音频文件时,避免损失音质的问题。
【技术实现步骤摘要】
本专利技术涉及通信电子
,尤其涉及一种播放音频文件的方法和装置。
技术介绍
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本文档来自技高网...
【技术保护点】
一种播放音频文件的方法,其特征在于,所述方法包括:对待播放的音频文件进行解码操作,获得目标音频文件;判断所述目标音频文件的量化精度值是否大于预设值;在确定大于所述预设值时,为所述目标音频文件创建音轨;将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。
【技术特征摘要】
【专利技术属性】
技术研发人员:罗玉海,
申请(专利权)人:北京君正集成电路股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。