一种音频输出的方法、装置及Android设备与流程

文档序号:16529077发布日期:2019-01-05 10:35阅读:337来源:国知局
一种音频输出的方法、装置及Android设备与流程

本申请涉及一种音频输出的方法、装置及android设备。



背景技术:

音频延迟可以简单概括为一段音频输入移动设备,经过一些必要的处理后,从同一设备输出的时间差,人类在约10毫秒左右的延迟是最适合的,任何明显更高的延迟会给我们带来干扰。

许多移动应用在很大程度上依赖于低延迟音频功能,例如一些游戏、合成器和数字音频工作站,交互式音频应用和乐器模拟应用,以及即将成为下一波潮流的虚拟现实应用,过高的音频延迟会极大的影响用户体验。

而当前广泛应用的android系统中的audio子系统是十分复杂的,从音频开始播放到从输出设备输出声音在理想状态下仍然需要接近30ms的延迟,绝大多数android设备受困于极高的音频延迟,无法让开发者在android上构建这类应用,以满足消费者的需求,这严重阻碍了该类移动应用在目前android平台上的可用性和发布。

因此,如何降低android设备在音频输出过程中的音频延迟是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种音频输出的方法、装置及android设备,用于降低android设备在音频输出过程中的音频延迟。

为解决上述技术问题,本申请提供一种音频输出的方法,该方法包括:

接收输入的音频输出命令;

根据所述音频输出命令确定数据通路及音频文件url;

启动所述数据通路;

调用数字信号处理器通过所述数据通路在文件系统中获取到所述音频文件url对应的音频文件,并将所述音频文件传输至输出设备。

可选的,将所述音频文件传输至输出设备,包括:

判断所述音频输出命令中是否包括处理命令;

若是,则调用所述数字信号处理器执行所述处理命令对所述音频文件进行处理,并将处理后的音频文件传输至所述输出设备;

其中,所述处理命令包括混音处理命令、音量增益处理命令、高潮截取处理命令、男女变声处理命令、节奏快慢调节命令、声音淡入淡出处理命令中的至少一项。

可选的,根据所述音频输出命令确定数据通路及音频文件url,包括:

判断当前应用场景是否为高音频延迟应用场景;

若是,则判断是否已开启音频延迟优化功能;

若已开启所述音频延迟优化功能,则根据所述音频输出命令确定数据通路及音频文件url。

可选的,还包括:

当接收到拾音器输入的音频信号时,判断是否接收到立即输出的指令;

若是,则通过驱动层从将所述音频信号传输至所述输出设备;

若否,则使用默认的音频通路传输所述音频信号。

可选的,所述通过驱动层将所述音频信号传输至所述输出设备,包括:

获取所述输出设备的性能数据;

根据所述性能数据在所述驱动层内创建缓存空间;

将所述音频信号存至所述缓存空间,以使所述输出设备从所述缓存空间中获取所述音频信号并输出。

本申请还提供一种音频输出的装置,该装置包括:

接收单元,用于接收输入的音频输出命令;

确定单元,用于根据所述音频输出命令确定数据通路及音频文件url;

启动单元,用于启动所述数据通路;

调用单元,用于调用数字信号处理器通过所述数据通路在文件系统中获取到所述音频文件url对应的音频文件,并将所述音频文件传输至输出设备。

可选的,所述调用单元包括:

第一判断子单元,用于判断所述音频输出命令中是否包括处理命令;

调用子单元,用于当所述音频输出命令中包括所述处理命令时,调用所述数字信号处理器执行所述处理命令对所述音频文件进行处理,并将处理后的音频文件传输至所述输出设备;

其中,所述处理命令包括混音处理命令、音量增益处理命令、高潮截取处理命令、男女变声处理命令、节奏快慢调节命令、声音淡入淡出处理命令中的至少一项。

可选的,所述确定单元包括:

第二判断子单元,用于判断当前应用场景是否为高音频延迟应用场景;

第三判断子单元,用于当当前应用场景为所述高音频延迟应用场景时,判断是否已开启音频延迟优化功能;

确定子单元,用于当已开启所述音频延迟优化功能时,根据所述音频输出命令确定数据通路及音频文件url。

可选的,还包括:

判断单元,用于当接收到拾音器输入的音频信号时,判断是否接收到立即输出的指令;

传输选择单元,用于当接收到立即输出的指令时,通过驱动层从将所述音频信号传输至所述输出设备;当未接收到立即输出的指令时,使用默认的音频通路传输所述音频信号。

本申请还提供一种android设备,该android设备包括:

存储器,用于存储android程序;

处理器,用于执行所述android程序时实现如上述任一项所述音频输出的方法的步骤。

本申请所提供音频输出的方法,包括:接收输入的音频输出命令;根据该音频输出命令确定数据通路及音频文件url;启动该数据通路;调用数字信号处理器通过该数据通路在文件系统中获取到该音频文件url对应的音频文件,并将该音频文件传输至输出设备。

基于当前广泛应用的android系统中的audio子系统十分复杂,音频开始播放到从输出设备输出声音需要经过应用层、框架层、硬件抽象层、驱动层、数字信号处理器、编解码器到达输出设备,使得音频播放具有较高的延时;本申请直接令硬件抽象层根据接收的音频输出命令确定数据通路及音频文件url,同时启动该数据通路,并调用数字信号处理器通过该数据通路在文件系统中获取对应的音频文件,最后直接将该音频文件传输至输出设备进行播放,使得在音频播放过程中不需要经过应用层及框架层,避免了音频数据经过应用层及框架层等造成延时的问题,进而使得android设备在音频输出过程中的音频延迟降低。本申请同时还提供了一种音频输出的装置及android设备,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种音频输出的方法的流程图;

图2为图1所提供的一种音频输出的方法中s102的一种实际表现方式的流程图;

图3为本申请实施例所提供的另一种音频输出的方法的流程图;

图4为本申请实施例所提供的一种音频输出的装置的结构图;

图5为本申请实施例所提供的另一种音频输出的装置的结构图;

图6为本申请实施例所提供的一种android设备的结构图。

具体实施方式

本申请的核心是提供一种音频输出的方法、装置及android设备,用于降低android设备在音频输出过程中的音频延迟。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

当前广泛应用的android系统中的audio子系统十分复杂,音频开始播放到从输出设备输出声音需要经过应用层、框架层、硬件抽象层、驱动层、数字信号处理器、编解码器到达输出设备,使得音频播放具有较高的延时,在理想状态下仍然需要接近30ms的延迟,而过高的音频延迟对如下几类移动应用产生了较大的影响:

对于乐器应用和音效应用而言,音乐家无法在舞台上演奏,使用android设备的演奏者总比其它人慢半拍,甚至无法用于练习;dj无法进行节拍匹配,因为他们在耳机听到的信号要远远落后于播放给听众的主信号,而且使用循环滚动或回声等效果也是非常困难的。

对于游戏而言,如爆炸和枪声等声音效果会卡顿延迟几帧,使游戏音频“超脱”于视觉效果,无法为用户带来身临其境的游戏体验。

对于voip应用而言,如skype,如果用户使用的是android手机,整体的音频延迟要高于网络延迟。也就是说,“通过”安卓所花费的时间比数据包在各大洲之间传输的时间要更长。

对于虚拟现实而言,当用户转头时,音频“跟随”变化太晚会破坏三维音频的体验。

基于此,本申请提出了一种音频输出的方法,用于解决上述问题。

请参考图1,图1为本申请实施例所提供的一种音频输出的方法的流程图。

其具体包括如下步骤:

s101:接收输入的音频输出命令;

这里提到的音频输出命令,其具体可以为用户输入到应用层中的各种命令,例如,针对于各种音乐app,该音频输出命令可以为选曲播放命令;其具体也可以为程序生成的音频输出命令,例如,针对于各类游戏或视频应用,该音频输出命令可以为音效或背景音乐的播放命令。

s102:根据该音频输出命令确定数据通路及音频文件url;

当硬件抽象层接收到音频输出命令后,根据该音频输出命令确定数据通路及音频文件url;

硬件抽象层(hardwareabstractionlayer,hal)为应用层和驱动层之间的中间人,hal是通过移动设备制造商将android“移植”到android设备上的实现,其实现方式是开放的,厂商可以自由创建任何类型的hal的代码,使用预定义的结构与应用层产生通信,应用层读取hal并要求以可选的如采样率、缓冲区大小或音效等优化参数创建输入或输出流;

这里提到的音频文件url为音频文件的统一资源定位符(uniformresourcelocator,url),是标准的资源的地址,可以通过该音频文件url在文件系统中找到对应的音频文件;

这里提到的数据通路为数字信号处理器在文件系统中获取到该音频文件url对应的音频文件的通道,获取到的音频文件由文件系统通过该数据通路传输到数字信号处理器,进而输出至输出设备;

进一步的,基于最大限度降低音频延迟的目的,该数据通路在选择时可尽量选择低延迟的数据通路。

s103:启动该数据通路;

s104:调用数字信号处理器通过该数据通路在文件系统中获取到该音频文件url对应的音频文件,并将该音频文件传输至输出设备。

当根据该音频输出命令确定数据通路及音频文件url后,启动该数据通路,并调用数字信号处理器通过该数据通路在文件系统中获取到该音频文件url对应的音频文件,相对于现有技术中android设备待播放的音频数据必须经过应用层及框架层后才能输出,使得音频输出过程中的音频延迟较高,本申请直接令数字信号处理器在文件系统中获取到音频文件,并将该音频文件传输至输出设备,使得音频数据只需由文件系统经过数字信号处理器、驱动层到输出设备,大大降低了音频数据传输路径的长度,进而降低了音频延迟;

进一步的,基于最大限度降低音频延迟的目的,还可以预先对文件系统中的音频数据进行编解码,然后以pcm格式保存,这使得音频输出过程只需由文件系统经过数字信号处理器到输出设备,而不需要经过驱动层,更进一步的降低了音频数据传输路径的长度,达到更好的降低音频延迟的效果;

优选的,这里提到的将音频文件传输至输出设备,其具体可以为:

判断音频输出命令中是否包括处理命令;

若是,则调用数字信号处理器执行处理命令对音频文件进行处理,并将处理后的音频文件传输至输出设备;

其中,这里的处理命令可以包括混音处理命令、音量增益处理命令、高潮截取处理命令、男女变声处理命令、节奏快慢调节命令、声音淡入淡出处理命令中的至少一项;

在将音频文件传输至输出设备之前,先判断一下音频输出命令中是否包括处理命令,若包括,则直接通过数字信号处理器进行处理,以降低音频延迟。

基于上述技术方案,本申请所提供的一种音频输出的方法,通过直接令硬件抽象层根据接收的音频输出命令确定数据通路及音频文件url,同时启动该数据通路,并调用数字信号处理器通过该数据通路在文件系统中获取对应的音频文件,最后直接将该音频文件传输至输出设备进行播放,使得在音频播放过程中不需要经过应用层及框架层,避免了音频数据经过应用层及框架层等造成延时的问题,进而使得android设备在音频输出过程中的音频延迟降低。

针对于上一实施例的步骤s102,在根据该音频输出命令确定数据通路及音频文件url时,还可以先判断用户是否有降低音频延迟的需要,下面结合图2进行说明。

请参考图2,图2为图1所提供的一种音频输出的方法中s102的一种实际表现方式的流程图。

其具体包括以下步骤:

s201:判断当前应用场景是否为高音频延迟应用场景;

若是,则进入步骤s202;

这里提到的高音频延迟应用场景为对音频延迟有较高要求的应用场景,如游戏、合成器和数字音频工作站,交互式音频应用和乐器模拟应用,以及虚拟现实应用等;

可选的,当当前应用场景不为高音频延迟应用场景时,还可以按照默认的音频通路传输音频数据,例如,对于单纯的音乐播放应用场景来说,音频延迟对用户体验的影响较小,可以按照默认的音频通路传输音频数据。

s202:判断是否已开启音频延迟优化功能;

若是,则进入步骤s203;

可选的,当未开启音频延迟优化功能时,则证明用户对于当前的音频延迟能够接受,或出于对android设备的耗电量等方面的考虑,不需要对其进行优化,则此时也可以按照默认的音频通路传输音频数据;

优选的,该音频延迟优化功能还可以默认为开启状态。

s203:根据音频输出命令确定数据通路及音频文件url。

基于上述技术方案,本申请实施例在根据音频输出命令确定数据通路及音频文件url之前,先通过判断当前应用场景是否为高音频延迟应用场景以及判断是否已开启音频延迟优化功能,来判断是否需要进行音频优化,如果不需要,则还可以按照默认的音频通路传输音频数据。

基于上述技术方案,请参考图3,下面结合图3进行说明。

请参考图3,图3为本申请实施例所提供的另一种音频输出的方法的流程图。

其具体包括如下步骤:

s301:当接收到拾音器输入的音频信号时,判断是否接收到立即输出的指令;

若是,则进入步骤s302;若否,则进入步骤s303;

在接收到拾音器输入的音频信号时,先根据是否接收到立即输出的指令来判断是否将拾音器输入的音频信号降低音频延迟输出,这里提到的是否接收到立即输出的指令,其具体可以预先设置一个flag,flag是一个编程指令,常被运用于计算机语言,例如c语言或d语言中,常于用来记载变量的一个参数,可以通过应用层发送至驱动层的flag中记载的变量来决定是否将拾音器输入的音频信号降低音频延迟输出。

s302:通过驱动层从将音频信号传输至输出设备;

优选的,这里提到的通过驱动层将音频信号传输至输出设备,其具体可以为:

获取输出设备的性能数据;

根据性能数据在驱动层内创建缓存空间;

将音频信号存至缓存空间,以使输出设备从缓存空间中获取音频信号并输出。

本申请需要在驱动层数据上传的位置创建一个缓存空间用来实现数据的回环,根据输出设备的性能分别创建不同大小的缓存空间,同时打开发送端和接收端通路,让发送端和接收端同时共享该缓存空间。

s303:使用默认的音频通路传输音频信号。

基于上述技术方案,本申请所提供的另一种音频输出的方法,当接收到拾音器输入的音频信号时,先判断是否接收到立即输出的指令,如果是则通过驱动层从将音频信号传输至输出设备,使得拾音器接收到的音频信号不需要经过应用层及框架层,直接通过驱动层发送至输出设备,避免了音频数据经过应用层及框架层等造成延时的问题,进而使得android设备在音频输出过程中的音频延迟降低。

请参考图4,图4为本申请实施例所提供的一种音频输出的装置的结构图。

该装置可以包括:

接收单元100,用于接收输入的音频输出命令;

确定单元200,用于根据音频输出命令确定数据通路及音频文件url;

启动单元300,用于启动数据通路;

调用单元400,用于调用数字信号处理器通过数据通路在文件系统中获取到音频文件url对应的音频文件,并将音频文件传输至输出设备。

请参考图5,图5为本申请实施例所提供的另一种音频输出的装置的结构图。

该调用单元400可以包括:

第一判断子单元,用于判断音频输出命令中是否包括处理命令;

调用子单元,用于当音频输出命令中包括处理命令时,调用数字信号处理器执行处理命令对音频文件进行处理,并将处理后的音频文件传输至输出设备;

其中,处理命令包括混音处理命令、音量增益处理命令、高潮截取处理命令、男女变声处理命令、节奏快慢调节命令、声音淡入淡出处理命令中的至少一项。

该确定单元200可以包括:

第二判断子单元,用于判断当前应用场景是否为高音频延迟应用场景;

第三判断子单元,用于当当前应用场景为高音频延迟应用场景时,判断是否已开启音频延迟优化功能;

确定子单元,用于当已开启音频延迟优化功能时,根据音频输出命令确定数据通路及音频文件url。

该装置还可以包括:

判断单元,用于当接收到拾音器输入的音频信号时,判断是否接收到立即输出的指令;

传输选择单元,用于当接收到立即输出的指令时,通过驱动层从将音频信号传输至输出设备;当未接收到立即输出的指令时,使用默认的音频通路传输音频信号。

该传输选择单元具体可以包括:

获取子单元,用于获取输出设备的性能数据;

创建子单元,用于根据性能数据在驱动层内创建缓存空间;

存储子单元,用于将音频信号存至缓存空间,以使输出设备从缓存空间中获取音频信号并输出。

以上装置中的各个组成部分可实际应用于以下的实施例中:

接收单元接收输入的音频输出命令;第二判断子单元判断当前应用场景是否为高音频延迟应用场景;当当前应用场景为高音频延迟应用场景时,第三判断子单元判断是否已开启音频延迟优化功能;当已开启音频延迟优化功能时,确定子单元根据音频输出命令确定数据通路及音频文件url;

启动单元启动数据通路;调用单元调用数字信号处理器通过数据通路在文件系统中获取到音频文件url对应的音频文件,第一判断子单元判断音频输出命令中是否包括处理命令;当音频输出命令中包括处理命令时,调用子单元调用数字信号处理器执行处理命令对音频文件进行处理,并将处理后的音频文件传输至输出设备;

当接收到拾音器输入的音频信号时,判断单元判断是否接收到立即输出的指令;当接收到立即输出的指令时,获取子单元获取输出设备的性能数据,创建子单元根据性能数据在驱动层内创建缓存空间,存储子单元将音频信号存至缓存空间,以使输出设备从缓存空间中获取音频信号并输出;当未接收到立即输出的指令时,传输选择单元使用默认的音频通路传输音频信号。

请参考图6,图6为本申请实施例所提供的一种android设备的结构图。

该android设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上单元(图示没标出),每个单元可以包括对装置中的一系列指令操作。更进一步地,处理器522可以设置为与存储介质530通信,在android设备500上执行存储介质530中的一系列指令操作。

android设备500还可以包括一个或一个以上电源526,一个或一个以上拾音器接口550,一个或一个以上输出装置接口558,和/或,一个android操作系统541。

上述图1至图3所描述的音频输出的方法中的步骤由android设备基于该图6所示的结构实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置、android设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台android设备(可以是手机,平板电脑,电视,数码相机,游戏机等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)等各种可以存储程序代码的介质。

以上对本申请所提供的一种音频输出的方法、装置及android设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1