一种音频播放方法、装置及终端的制作方法

文档序号:6739480阅读:105来源:国知局
专利名称:一种音频播放方法、装置及终端的制作方法
技术领域
本发明属于音频处理领域,尤其涉及一种音频播放方法、装置及终端。
背景技术
现有的音频播放终端,包括手机、音乐播放器、掌上电脑、甚至智能电视、个人电脑等,若仅运行一个音频应用程序时,可以正常流畅地播放该应用中的声音文件,但是当多个同类型的音频应用(比如‘酷我音乐盒’与‘善听说书’)一起运行的时候,虽然也能正常流畅的播放,但是所述各个应用中的声音会同时输出,互相之间可能产生干扰而给用户带来 比较混乱的感觉。不仅如此,这些音频播放终端还可能会存在一些后台运行的声音文件,比如消息通知声音、闹铃声音等等。目前还未出现一种控制方案能够对所述对这些音频应用程序和系统后台输出的声音进行分离,输出单个声音。

发明内容
鉴于上述问题,本发明的目的在于提供一种音频播放方法,旨在解决现有音频播放终端中多个音频应用程序运行时,所有的声音文件同时播放输出,而导致声音相互干扰、输出混乱的技术问题。本发明是这样实现的,一种音频播放方法,包括下述步骤创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号的对应关系的索引表;根据当前激活状态声音文件对应的进程号查询所述索引表,筛选出进程号对应的音轨数据;在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。本发明的另一目的在于提供一种音频播放装置,包括索引表创建单元,用于创建包含每一音频应用程序的声音文件、音轨数据、进程号进程号的对已关系的索引表;数据筛选单元,用于根据当前激活状态声音文件对应的进程号查询所述索引表,筛选出所述进程号对应的音轨数据;混音输出单元,用于在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。本发明的再一目的在于提供一种音频播放终端,该终端包括所述的音频播放装置。在本发明实施例中,由于在创建每个声音文件的音轨数据时,有唯一的进程号与之对应,当有多个声音需要输出的时候,获取到当前激活状态声音文件,即最后激活的音频应用程序的声音文件,根据激活状态声音文件的进程号查找到对应的音轨数据,将所述音轨数据在混音器中混音输出即可,从而实现了仅播放最后打开音频程序的声音文件而屏蔽其他应用的声音,达到了声音分离的目的。


图I是本发明第一实施例提供的一种音频播放方法的流程图;图2是本发明第二实施例提供的一种音频播放方法的流程图;图3是本发明第三实施例提供的一种音频播放装置的结构方框图;图4是本发明第四实施例提供的一种音频播放装置的结构方框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。实施例一: 图I示出了本发明第一实施例提供的一种音频播放方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。本实施例提供的音频播放方法包括步骤S101、创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号对应关系的索引表。所述音频应用程序为具有音频输出功能的应用程序,例如“qq音乐”、“善听说书”等等,通常在为音频应用程序中的声音文件创建音轨数据时都会为其分配一个进程号,每个音轨数据与一个音轨数据进程号唯一对应,在本步骤中,需要保存每一音频应用程序的音轨数据进程号、音轨数据和声音文件的映射关系,使得在需要输出声音时,可以通过音轨数据进程号找到需要输出的音轨数据。本实施例中所述的音轨数据存储于数据库中,可以来自于同一声音文件,也可以来自于不同的声音文件,即一个声音文件可以对应多个音轨数据。步骤S102、根据当前激活状态的音频应用程序的声音文件对应的进程号查询所述索引表,筛选出所述进程号对应的音轨数据。音频应用程序有先后打开之分,用户最后激活的音频应用程序就是当前激活音频应用程序。具体的当用户打开了多个音频应用程序时,所述最后打开的音频应用程序为最后激活的音频应用程序。在输出声音时,根据为该最后激活的音频应用程序的声音文件对应的音轨数据分配的进程号查找所述索引表,从而在数据库中筛选出与所述进程号对应的音轨数据。步骤S103、在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。本步骤中筛选出声音文件对应的音轨数据后,仅将该筛选出的音轨数据输出至混音器中进行混音输出,其它音频应用程序的声音文件对应的音轨数据则继续存储在数据库中,待该音轨数据的应用程序被激活时才会被筛选并混音输出。所述音轨数据由声音文件解析得到,包含了声音数据、音色信息等标准格式数据,在混音器中,将这些数据通过软件或是硬件的方式还原出来。由于所述筛选出的音轨数据是当前激活状态音频应用程序对应的音轨数据,因此此时经过混音输出的声音是最后激活的音频应用输出的声音,而其他应用的声音处于被屏蔽状态。在本实施例中,通过创建包含声音文件、音轨数据、音轨数据进程号对应关系的索引表,根据当前激活状态的音频应用程序的声音文件对应的进程号,查找所述索引表,以在数据库中筛选输出对应当前激活状态的音频应用程序的音轨数据进行混音输出,其它音频应用程序的声音将被屏蔽,进而实现了仅输出最近开启的音频应用程序的声音而屏蔽其他应用的声音,达到了分离多个声音文件的目的。实施例二 :图2示出了本发明第二实施例提供的一种音频播放方法的流程,为了便于说明仅不出了与本发明实施例相关的部分。 本实施例在实施例一的基础上对每个步骤进一步细化,作出优选实施步骤,具体如下步骤S201、解析已开启音频应用程序中所包含的声音文件,在音频管理器中创建声音文件对应的音轨数据,并为每个音轨数据分配一个进程号。在开启音频应用程序后,对该音频应用程序中的声音文件进行解析,在解析的过程中记录每个声音文件以及在音频管理器中创建该声音文件对应的音轨数据。譬如,在Android系统中,音频管理器(AudioFlinger)用于负责管理输入输出的音频流,在创建音轨(AudioTrack)数据时,都会为音轨数据分配一个进程号PID,具体如下sp〈 I Au d i 0 Tr ac k> Au d i oF I i n ger : : c r e a t e Tr ac k (p i d_t p i d, intstreamType, uint32_t sampleRate,int format, int channeICount,intframeCount,uint32_tflags,const sp<IMemory>& sharedBuffer,int output,status_t^status)然后根据output值进行审查,找出用于处理该音轨数据的线程,在Android系统中,通常该线程为是MixerThread线程,所述MixerThread线程是在AudioFlinger下创建的,主要负责数据的混音处理,AudioFlinger也会检查是否有管理该AudioTrack数据的客户端client,当存在客户端时再调用PlaybackThread线程中的createTrack_I,最终将该音轨数据加入到音频管理数组mTracks中,以便同一管理所有音轨数据。步骤S202、创建包含所述声音文件、音轨数据、音轨数据进程号的对应关系的索引表。本实施例中,步骤S201-S202是实施例一中步骤SlOl的一种具体优选的实现步骤,在知晓每个声音文件以及对应音轨数据和音轨数据进程号后,在本步骤中需要创建一个保存三者映射关系的索引表,以便当需要播放当前激活状态声音文件时,可以查找该索引表找到对应的音轨数据,过滤掉其他无用音轨数据,将声音输出。步骤S203、确定当前激活状态的音频应用程序。所述当前激活状态的音频应用程序是系统最后开启的应用程序,作为一种实现方式,可以通过音频焦点确定当前激活状态的音频应用程序,每当开启一个需要播放声音的音频应用程序时,音频应用程序通过一焦点获取函数向系统发出焦点获取请求,系统释放音频权限,将所述音频焦点与当前激活状态的音频应用程序的ID号相关联,至此当前激活状态的音频应用程序获取到音频焦点。
步骤S204、根据当前激活状态的音频应用程序确定当前激活状态声音文件。本步骤中,处于当前激活状态的音频应用程序的声音文件即为所述当前激活状态声音文件,作为一种当前激活状态声音文件确定方式,当前激活状态的音频应用程序在需要输出声音时,将音频焦点赋予需要播放的声音文件,该声音文件获取到音频焦点后即可实现首频输出。。步骤S205、根据当前激活状态声音文件对应的进程号查找所述索引表,筛选出所述进程号对应的音轨数据并将之添加到音频活跃数组中。本发明实施例中,步骤S203-S205是实施例一种步骤S102的一种具体优化的实现步骤,在本步骤中,根据当前激活状态声音文件对应的进程号查找所述索引表,从音频管理数组中筛选出所述对应的音轨数据,该音轨数据就是当前处于激活状态声音文件所对应的音频流,再将所述筛选出的音轨数据添加到音频活跃数组中,剩余的音轨数据保留在原数据库中。进一步考虑到使用本方法的音频播放设备的数据处理能力,可以将剩余的音轨数据添加到音频删除数组中进行删除。比如,索引表中保存有“qq音乐”应用和“善听说书”应用的声音文件、以及对应的音轨数据和进程号的对应关系,并且所述音轨数据保存在数据库中,当先前已经打开了 “qq音乐”,若此时再打开“善听说书”应用,那么此时“善听说书”播放的声音文件就是所述的当前处于激活状态声音文件,根据该声音文件进程号查 找所述索引表,在数据库中找到对应的音轨数据,将该音轨数据添加到音频活跃数组中,而“qq音乐”声音文件所对应的音轨数据送去音频删除数组移除或者仍然保留在所述数据库中即可。步骤S206、在混音线程的线程循环中调用混音器;步骤S207、将所述音频活跃数组中的音轨数据送至混音器进行混音操作步骤S208、将混音结果传递给音频输出类进行实例化,并在硬件终端中播放出来。上述步骤S206-S208是实施例一中步骤S103的一种具体的实现方式,实现了将筛选出的音轨数据输出,譬如在Android系统中,AudioFlinger类用于负责管理输入输出的音频流,MixerThread线程是在AudioFlinger下创建的,主要负责数据的混音处理,MixerThread线程的mActiveTracks中存放的是经过筛选后的AudioTrack数据,亦即最后开启的音频应用程序的声音文件,AudioFlinger通过binder机制实现与负责音频系统数据采集的AudioTrack类通信,AudioFlinger通过一块共享内存由MixerThread对其进行操作,即AudioFlinger通过MixerThread线程对AudioTrack数据进行操作,将mActiveTracks中存放的AudioTrack数据送至AudioMixer进行混音操作,将混音结果通过AudioStreamOutput实例化,在硬件终端中的播放出来的声音就是最后开启音频应用程序输出的声音。本实施例在实施例一的基础上,对其中的步骤给出了具体优选的实现步骤,并以Android系统为例对其中的步骤具体描述及说明,显然本实施例方法亦可用于其它系统的视频播放终端,例如微软的WP系统,苹果的IOS系统,同时亦可采用各种操作系统的电脑终端,比如winxp、win7、linux、mac等,亦可通过本实施例提供的方法实现声音分离输出。在具体实现本发明实施例时,当最新开启的音频应用程序有声音输出,则根据进程号将该音频应用程序对应的音轨数据筛选出来,并将该音轨数据发到混音器中去混音,实现播放该应用程序的声音;若当前开启的应用程序(如网页)没有声音时,则保持播放之前的声音。而在现有音频播放终端,会将所有音轨数据不经筛选的混音输出,而通过本发明实施例,仅输出经过筛选后的音轨数据,即最后打开的一个声音文件,解决了声音文件输出混乱的问题。实施例三:图3示出了本发明第三实施例提供的一种音频播放装置的结构,为了便于说明仅不出了与本发明实施例相关的部分。本实施例提供的音频播放装置包括索引表创建模块301,用于创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号的索引表;数据筛选模块302,用于根据当前激活状态音频应用程序的声音文件对应进程号查询所述索引表,筛选出所述进程号对应的音轨数据;混音器输出模块303,用于在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。

在本实施例中,索引表创建模块301、数据筛选模块302和混音器输出模块303分别依次对应实现了实施例一中步骤S101-S103。具体的,通过所述索引表创建模块301创建包含声音文件、音轨数据、音轨数据进程号的对应关系的索引表,使得数据筛选模块302能够根据当前激活状态音频应用程序的声音文件对应的进程号查询到对应的音轨数据,所述音轨数据可以来自于同一声音文件,也可以来自于不同的声音文件,混音器输出模块303将筛选出的音轨数据送至混音器中混音输出,从而实现输出最近开启的音频应用程序的声音而屏蔽其他应用的声音,达到了分离多个声音文件的目的。实施例四图4示出了本发明第四实施例提供的一种音频播放装置的结构,为了便于说明仅不出了与本发明实施例相关的部分。本实施例提供的音频播放装置包括索引表创建模块41,用于创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号的对应关系的索引表;数据筛选模块42,用于根据当前激活状态音频应用程序的声音文件对应的进程号查询所述索引表,筛选出进程号对应的音轨数据;混音器输出模块43,用于在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。其中,所述索引表创建模块41包括数据创建单元411,用于解析已开启音频应用程序中所包含的声音文件,在音频管理器中创建声音文件对应的音轨数据,并为每个音轨数据分配一个进程号;索引表创建单元412,用于创建包含所述声音文件、音轨数据、进程号对应关系的索引表。其中,所述数据筛选模块42包括应用程序确定单元421,用于确定当前激活状态的音频应用程序;声音文件确定单元422,用于根据当前激活状态的音频应用程序确定当前激活状态声音文件;数据筛选添加单元423,用于根据当前激活状态声音文件对应的进程号查找所述索引表,筛选出所述进程号对应的音轨数据并将之添加到音频活跃数组中。其中,所述混音器输出模块43包括混音器调用单元431,用于在混音线程的线程循环中调用混音器;混音操作单元432,用于将所述音频活跃数组中的音轨数据送至混音器进行混音操作混音输出单元433,用于将混音结果传递给音频输出类进行实例化,并在硬件终端中播放出来。本实施例中的各个模块实现了实施例二中的各个步骤,具体的,数据创建单元411 和索引表创建单元412对应实现步骤S201-S202,激活应用程序确定单元421、声音文件确定单元422和数据筛选添加单元423对应实现步骤S203-S205,混音器调用单元431、混音操作单元432和混音输出单元433对应实现步骤S206-S208。本实施例在实施例三的基础上,列出了各个组成模块的优选结构,数据创建单元411在创建音轨数据时,为每个音轨数据分配一个进程号,并通过索引表创建单元412建立索引表,激应用程序确定单元421确定当前激活状态的音频应用程序后,声音文件确定单元422根据当前激活状态的音频应用程序确定当前激活状态声音文件,数据筛选添加单元423根据进程号查找索引表,并将查找出的音轨数据添加到音频活跃数组中,混音器调用单元431调用混音器,使得混音操作单元432将音频活跃数组中的音轨数据进行混音操作,最后混音输出模块433输出混音结果。本实施例通过具体列出本装置的模块结构,实现了输出最后打开的声音文件,屏蔽了其他应用程序的声音,达到了分离多个声音文件的目的。实施例五本实施例提供了一种音频播放终端,包括实施例三或实施例四所述的音频播放装置,所述终端可以采用各种操作系统,包括Android、wp、winxp、win7、linux、mac等,所述终端包括但不限于手机、智能电视、音乐播放器、掌上电脑、个人电脑等等,只要是能够实现在运行多个音频应用程序时,可以选择播放最近打开的声音文件,都在本发明实施例包含范围之内。需要说明的是,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘、光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种音频播放方法,其特征在于,所述方法包括 创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号对应关系的索引表; 根据当前激活状态音频应用程序的声音文件对应的进程号查询所述索引表,筛选出所述进程号对应的音轨数据; 在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。
2.如权利要求I所述方法,其特征在于,所述创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号对应关系的索引表步骤包括 解析已开启音频应用程序中所包含的声音文件,创建声音文件对应的音轨数据,并为每个音轨数据分配一个音轨数据进程号; 创建包含所述声音文件、音轨数据、音轨数据进程号的索引表。
3.如权利要求I所述方法,其特征在于,所述根据当前激活状态音频应用程序的声音文件对应的进程号查询所述索引表,筛选出所述进程号对应的音轨数据步骤包括 确定当前激活状态的音频应用程序; 根据当前激活状态的音频应用程序确定当前激活状态声音文件; 根据当前激活状态声音文件对应的进程号查找所述索引表,筛选出所述进程号对应的音轨数据并将之添加到音频活跃数组中。
4.如权利要求3所述方法,其特征在于,所述在混音线程中将所述筛选出的音轨数据送至混音器中混音输出步骤包括 在混音线程的线程循环中调用混音器; 将所述音频活跃数组中的音轨数据送至混音器进行混音操作; 将混音结果传递给音频输出类进行实例化,并在硬件终端中播放出来。
5.一种音频播放装置,其特征在于,所述装置包括 索引表创建模块,用于创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号对应关系的索引表; 数据筛选模块,用于根据当前激活状态音频应用程序的声音文件对应的进程号查询所述索引表,筛选出所述进程号对应的音轨数据; 混音器输出模块,用于在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。
6.如权利要求5所述装置,其特征在于,所述索引表创建模块包括 数据创建单元,用于解析已开启音频应用程序中所包含的声音文件,创建声音文件对应的音轨数据,并为每个音轨数据分配一个进程号; 索引表创建单元,用于创建包含所述声音文件、音轨数据、音轨数据进程号的对应关系的索引表。
7.如权利要求5所述装置,其特征在于,所述数据筛选模块包括 应用程序确定单元,用于确定当前激活状态的音频应用程序; 声音文件确定单元,用于根据当前激活状态的音频应用程序确定当前激活状态声音文件; 数据筛选添加单元,用于根据当前激活状态声音文件对应的进程号查找所述索引表,筛选出所述进程号对应的音轨数据并将之添加到音频活跃数组中。
8.如权利要求7所述装置,其特征在于,所述混音输出模块包括 混音器调用单元,用于在混音线程的线程循环中调用混音器; 混音器操作单元,用于将所述活跃数据中的音轨数据送至混音器进行混音操作混音输出单元,用于将混音结果传递给音频输出类进行实例化,并在硬件终端中播放出来。
9.一种音频播放终端,所述终端包括如权利要求5-8任一项所述的音频播放装置。
全文摘要
本发明适用于音频处理领域,提供一种音频播放方法、装置,所述方法包括创建包含每一音频应用程序的声音文件、音轨数据、音轨数据进程号的对应关系的索引表;根据当前激活状态音频应用程序的声音文件对应的进程号查询所述索引表,筛选出所述进程号对应的音轨数据;在混音线程中将所述筛选出的音轨数据送至混音器中混音输出。本发明根据当前激活状态音频应用程序的声音文件对应的进程号查询所述索引表,查找到对应的音轨数据,将所述音轨数据在混音器中混音输出,从而实现了仅播放最后打开音频应用的声音文件而屏蔽其他应用的声音,达到了声音分离的目的。
文档编号G11B27/10GK102768846SQ201210254789
公开日2012年11月7日 申请日期2012年7月20日 优先权日2012年7月20日
发明者吴琼 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1