CN102881305A - 一种播放音频文件的方法和装置 - Google Patents
一种播放音频文件的方法和装置 Download PDFInfo
- Publication number
- CN102881305A CN102881305A CN2012103607252A CN201210360725A CN102881305A CN 102881305 A CN102881305 A CN 102881305A CN 2012103607252 A CN2012103607252 A CN 2012103607252A CN 201210360725 A CN201210360725 A CN 201210360725A CN 102881305 A CN102881305 A CN 102881305A
- Authority
- CN
- China
- Prior art keywords
- audio file
- thread
- track
- played
- play
- 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
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明涉及通信电子技术领域,尤其涉及一种播放音频文件的方法和装置,该方法包括:对待播放的音频文件进行解码操作,获得目标音频文件;判断所述目标音频文件的量化精度值是否大于预设值;在确定大于所述预设值时,为所述目标音频文件创建音轨;将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。可见该方法可解决现有技术中在播放量化精度值为24bit或32bit的音频文件时,避免损失音质的问题。
Description
技术领域
本发明涉及通信电子技术领域,尤其涉及一种播放音频文件的方法和装置。
背景技术
Android音频系统有两大服务:一是AudioFlinger,二是AudioPolicyService。AudioFlinger向下访问AudioHardware,实现输出音频数据,控制音频参数。同时,AudioFlinger向上通过IAudioFlinger接口提供服务。所以,AudioFlinger在Android的音频系统框架中起着承上启下的作用,地位相当重要。如图1所示,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系统音频处理系统,在一定程度上弥补了原有框架中的架构缺陷,减少了不必要的音质损失。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本现有技术中音频文件的处理方法流程图;
图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()函数将音频硬件设备的参数的采样频率、通道、量化精度值分别设置为96000Hz,2,24bit。这样,在把音频数据输入到音频硬件设备时,音频硬件设备就会按照所设置参数去处理音频数据了。当播放完毕或暂停时,通过Linux 的ioctl()函数将音频硬件的设备参数设置还原为缺省值。
参考图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系统音频处理系统,在一定程度上弥补了原有框架中的架构缺陷,减少了不必要的音质损失。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种播放音频文件的方法,其特征在于,所述方法包括:
对待播放的音频文件进行解码操作,获得目标音频文件;
判断所述目标音频文件的量化精度值是否大于预设值;
在确定大于所述预设值时,为所述目标音频文件创建音轨;
将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。
2.如权利要求1所述的方法,其特征在于,在为所述目标音频文件创建音轨之后、且在所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件之前,进一步包括:
为所述音轨创建直接输出线程;
所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件包括:
将所述音轨加入所述直接输出线程,使用所述直接输出线程处理所述音轨中的音频数据,并播放所述待播放的音频文件。
3. 如权利要求1所述法,其特征在于,在为所述目标音频文件创建音轨之后、且在所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件之前,进一步包括:
为所述音轨创建混合线程;
所述将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件包括:
将所述音轨加入所述混合线程,使用所述混合线程中的音频混合类处理所述音轨中的音频数据,并播放所述待播放的音频文件。
4. 如权利要求1所述的方法,其特征在于,所述预设值为16bit。
5.一种播放音频文件的装置,其特征在于,所述装置包括:
获取单元,用于对待播放的音频文件进行解码操作,获得目标音频文件;
判断单元,用于判断所述目标音频文件的量化精度值是否大于预设值;
音轨创建单元,用于在所述判断单元确定所述目标音频文件的量化精度值大于预设值时,为所述目标音频文件创建音轨;
播放单元,用于将所述音轨加入相对应的线程,使用所述线程播放所述待播放的音频文件。
6.如权利要求5所述的装置,其特征在于,所述装置还包括:
直接输出线程创建单元,用于为所述音轨创建直接输出线程;
所述播放单元具体用于,将所述音轨加入所述直接输出线程,使用所述直接输出线程处理所述音轨中的音频数据,并播放所述待播放的音频文件。
7. 如权利要求5所述的装置,其特征在于,所述装置还包括:
混合线程创建单元,用于为所述音轨创建混合线程;
所述播放单元具体用于,将所述音轨加入所述混合线程,使用所述混合线程中的音频混合类处理所述音轨中的音频数据,并播放所述待播放的音频文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103607252A CN102881305A (zh) | 2012-09-21 | 2012-09-21 | 一种播放音频文件的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103607252A CN102881305A (zh) | 2012-09-21 | 2012-09-21 | 一种播放音频文件的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102881305A true CN102881305A (zh) | 2013-01-16 |
Family
ID=47482599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103607252A Pending CN102881305A (zh) | 2012-09-21 | 2012-09-21 | 一种播放音频文件的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102881305A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106131332A (zh) * | 2016-06-30 | 2016-11-16 | 维沃移动通信有限公司 | 一种音频输出方法和移动终端 |
CN106559572A (zh) * | 2016-11-15 | 2017-04-05 | 努比亚技术有限公司 | 杂音定位方法及装置 |
CN108010534A (zh) * | 2016-11-01 | 2018-05-08 | 北京酷我科技有限公司 | 一种音频文件播放方法及装置 |
CN111654743A (zh) * | 2020-05-27 | 2020-09-11 | 海信视像科技股份有限公司 | 音频播放方法及显示设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100655802B1 (ko) * | 2005-11-28 | 2006-12-13 | (주)미디어캔버스 | 오디오 녹음파일을 생성하는 방법 |
JP2009020922A (ja) * | 2007-07-10 | 2009-01-29 | Kenwood Corp | 再生装置、プログラム、及び再生方法 |
CN102208208A (zh) * | 2010-04-12 | 2011-10-05 | 佛山市智邦电子科技有限公司 | 无损音频播放方法以及音频播放器 |
CN102483925A (zh) * | 2009-07-07 | 2012-05-30 | 意法爱立信有限公司 | 数字音频信号处理系统 |
CN102610267A (zh) * | 2012-03-16 | 2012-07-25 | 广东步步高电子工业有限公司 | 一种改善播放系统音频播放质量的方法 |
-
2012
- 2012-09-21 CN CN2012103607252A patent/CN102881305A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100655802B1 (ko) * | 2005-11-28 | 2006-12-13 | (주)미디어캔버스 | 오디오 녹음파일을 생성하는 방법 |
JP2009020922A (ja) * | 2007-07-10 | 2009-01-29 | Kenwood Corp | 再生装置、プログラム、及び再生方法 |
CN102483925A (zh) * | 2009-07-07 | 2012-05-30 | 意法爱立信有限公司 | 数字音频信号处理系统 |
CN102208208A (zh) * | 2010-04-12 | 2011-10-05 | 佛山市智邦电子科技有限公司 | 无损音频播放方法以及音频播放器 |
CN102610267A (zh) * | 2012-03-16 | 2012-07-25 | 广东步步高电子工业有限公司 | 一种改善播放系统音频播放质量的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106131332A (zh) * | 2016-06-30 | 2016-11-16 | 维沃移动通信有限公司 | 一种音频输出方法和移动终端 |
CN108010534A (zh) * | 2016-11-01 | 2018-05-08 | 北京酷我科技有限公司 | 一种音频文件播放方法及装置 |
CN106559572A (zh) * | 2016-11-15 | 2017-04-05 | 努比亚技术有限公司 | 杂音定位方法及装置 |
CN111654743A (zh) * | 2020-05-27 | 2020-09-11 | 海信视像科技股份有限公司 | 音频播放方法及显示设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN203415228U (zh) | 使用节目信息元数据的音频解码器 | |
JP5143837B2 (ja) | サービスセンタ、ユーザ装置、方法及びコンピュータ読取可能な媒体 | |
US9501259B2 (en) | Audio output device to dynamically generate audio ports for connecting to source devices | |
CN110007893B (zh) | 一种音频输出的方法及电子设备 | |
CN102881305A (zh) | 一种播放音频文件的方法和装置 | |
CN110267064B (zh) | 音频播放状态处理方法、装置、设备及存储介质 | |
CN111132111B (zh) | 一种基于ble的音频共享方法、系统及计算机可读存储介质 | |
US20120269359A1 (en) | Media distribution system | |
US9900720B2 (en) | Using single bitstream to produce tailored audio device mixes | |
US9226172B2 (en) | VoIP processing method and apparatus of mobile terminal in mobile communication system | |
US20170178636A1 (en) | Method and electronic device for jointly playing high-fidelity sounds of multiple players | |
CN112565923B (zh) | 一种音视频流处理方法、装置、电子设备及存储介质 | |
US20160111093A1 (en) | Efficient load sharing and accelerating of audio post-processing | |
WO2017185798A1 (zh) | 多媒体文件分享的方法及装置 | |
CN113038060A (zh) | 多路音频处理方法和系统 | |
CN103943112A (zh) | 利用响度处理状态元数据的音频编码器和解码器 | |
CN106412767B (zh) | 一种混音方法和混音电路 | |
CN109327598A (zh) | 一种音频数据播放的方法、装置和移动终端 | |
JP7314398B2 (ja) | 変更オーディオビットストリームの生成及び処理のための方法及び装置 | |
US20220230644A1 (en) | Methods and devices for generation and processing of modified bitstreams | |
CN112216290A (zh) | 音频数据的传输方法、装置及播放设备 | |
KR100750149B1 (ko) | 오디오 출력 제어 장치 및 방법 | |
CN105744344A (zh) | 播放控制方法及系统 | |
CN112752199B (zh) | 一种基于alsa框架的声卡左右声道独立控制装置及方法 | |
CN114255734A (zh) | 一种混音优化方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130116 |