一种音频适配方法和系统

阅读: 评论:0

著录项
  • CN201610530521.7
  • 20160706
  • CN106155625A
  • 20161123
  • 北京元心科技有限公司
  • 沈卫忠;林明祥
  • G06F3/16
  • G06F3/16

  • 北京市大兴区北京经济技术开发区科创十四街99号33幢D栋2222号
  • 北京(11)
  • 北京金阙华进专利事务所(普通合伙)
  • 陈建春
摘要
本申请公开了一种音频适配方法和系统,其中所述方法用于使第三方应用与操作系统的音频子系统适配并包括:响应于第三方应用的音频类型为非语音通话,第三方应用直接调用媒体接口库中的相应接口,其中不同音频类型具有不同的默认优先级,及其中媒体接口库向第三方应用提供修改默认优先级的选择;媒体接口库调用音频设备申请接口库的接口向音频设备状态管理器申请使用音频设备;响应于申请成功,音频流创建器产生音频流并将其发送给音频服务,及音频设备状态管理器将音频路由发送给音频服务;通过硬件驱动使用相应音频设备播放所述音频流。本发明使得第三方应用可参与音频策略的适配,改善了用户体验。
权利要求

1.一种音频适配方法,用于使第三方应用与操作系统的音频子系统适配,其特征在于, 所述音频子系统包括媒体接口库、音频设备申请接口库、音频设备状态管理器、音频流创建 器、音频服务及硬件驱动,其中所述媒体接口库包括媒体播放、录制接口并带编解码库,所 述方法包括:

响应于第三方应用的音频类型为非语音通话,第三方应用直接调用所述媒体接口库中 的相应接口,其中不同音频类型具有不同的默认优先级,及其中所述媒体接口库向第三方 应用提供修改默认优先级的选择;

所述媒体接口库调用所述音频设备申请接口库的接口向所述音频设备状态管理器申 请使用音频设备;

响应于申请成功,所述音频流创建器产生音频流并将其发送给所述音频服务,及所述 音频设备状态管理器将音频路由发送给所述音频服务;

通过所述硬件驱动使用相应音频设备播放所述音频流。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

响应于第三方应用的音频类型为语音通话,第三方应用调用所述音频设备申请接口库 的接口向所述音频设备状态管理器申请使用音频设备;

响应于申请成功,经VOIP引擎在所述音频服务中创建播放语音流,及所述音频设备状 态管理器将音频路由发送给所述音频服务。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

响应于申请失败,向第三方应用返回错误码。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:

响应于所述默认优先级已被修改,所述音频服务将所述音频流的音频类型修改为修改 后的优先级。

5.根据权利要求1所述的方法,其特征在于,非语音通话的音频类型包括发送语音消 息、播放语音消息和发起/被邀铃声。

6.一种音频适配系统,用于使第三方应用与操作系统的音频子系统适配,其特征在于, 所述音频子系统包括媒体接口库、音频设备申请接口库、音频设备状态管理器、音频流创建 器、音频服务及硬件驱动,其中所述媒体接口库包括媒体播放、录制接口并带编解码库,所 述音频适配系统包括:

媒体接口库调用模块,用于响应于第三方应用的音频类型为非语音通话,第三方应用 直接调用所述媒体接口库中的相应接口,其中不同音频类型具有不同的默认优先级,及其 中所述媒体接口库向第三方应用提供修改默认优先级的选择;

第一申请模块,用于使得所述媒体接口库调用所述音频设备申请接口库的接口向所述 音频设备状态管理器申请使用音频设备;

第一音频流生成模块,用于响应于申请成功,所述音频流创建器产生音频流并将其发 送给所述音频服务,及所述音频设备状态管理器将音频路由发送给所述音频服务;

播放模块,用于通过所述硬件驱动使用相应音频设备播放所述音频流。

7.根据权利要求6所述的音频适配系统,其特征在于,所述音频适配系统还包括:

第二申请模块,用于响应于第三方应用的音频类型为语音通话,第三方应用调用所述 音频设备申请接口库的接口向所述音频设备状态管理器申请使用音频设备;

第二音频流创建模块,用于响应于申请成功,经VOIP引擎在所述音频服务中创建播放 语音流,及所述音频设备状态管理器将音频路由发送给所述音频服务。

8.根据权利要求6所述的音频适配系统,其特征在于,所述音频适配系统还包括:

错误码返回模块,用于响应于申请失败,向第三方应用返回错误码。

9.根据权利要求6所述的音频适配系统,其特征在于,所述音频适配系统还包括:

优先级修改模块,用于响应于所述默认优先级已被修改,使所述音频服务将所述音频 流的音频类型修改为修改后的优先级。

10.根据权利要求6所述的音频适配系统,其特征在于,非语音通话的音频类型包括发 送语音消息、播放语音消息和发起/被邀铃声。

说明书
技术领域

本申请涉及电数字数据处理领域,尤其涉及一种音频适配方法和系统。

在Android系统中,应用通过获取焦点事件及其音频框架把所有音频策略在音频 策略服务(AudioPolicyService)中制定。由于一个播放线程只能对应一个音频设备,如手 机中常用的音频设备喇叭、耳机,在系统运行过程中,如果混音后的音频是从喇叭输出,就 会有一个播放线程与喇叭相对应。同样,当声音从耳机输出时,也定会有一个播放线程与耳 机相对应。这使得只要用户的音频策略发现改变,就得修改AudioPolicyService中的源码, 甚至针对不同功能的硬件也需要把AudioPolicyService的代码作相应的更新。

而AudioPolicyService制定所有的音频策略是通过计算机程序语言实现,作为普 通人是很难见文生意的,同时AudioPolicyService也会加载所有音频相关设备,把制定音 频策略与维护音频设备这两者交织在一起,在一定程度也上增加了代码的复杂度。

移动操作系统中,第三方应用已成为整个产业链的重要组成部分。为此,移动操作 系统SDK中提供的接口是否易于应用的开发,也成为移动操作系统优劣的衡量标准之一。而 各应用在运行时的硬件资源使用冲突,是整个系统最复杂的部分之一。为了既解决应用使 用的资源冲突问题又不让应用过多的关注冲突的处理逻辑,这使得移动操作系统,除了针 对各硬件设备资源各自有其处理逻辑之外,还必须让其处理的结果方便让应用同步。

而对于音频子系统,只要涉及到声音的播放与录制的应用,都必将与其有交互。其 涉及的场景非常多也非常复杂,如音频通路的切换,音频设备连接状态的管理以及混音等 等。如果让应用各自去处理这些的冲突,那几乎是不可能事情。

在现有技术中,第三方应用调用音频相关的接口只管播放,而无需关注音频冲突 的决策结果。这一点的确降低了应用开发的难度,但同时也失去了应用开发适应音频子系 统的灵活性,这定将损失一部分良好的用户体验。

本申请的目标在于提供一种第三方应用也能参与音频策略的适配从而提高应用 的用户体验的方法和/或系统。

本申请的目标由一种音频适配方法实现,该方法用于使第三方应用与操作系统的 音频子系统适配,所述音频子系统包括媒体接口库、音频设备申请接口库、音频设备状态管 理器、音频流创建器、音频服务及硬件驱动,其中所述媒体接口库包括媒体播放、录制接口 并带编解码库,所述方法包括:

响应于第三方应用的音频类型为非语音通话,第三方应用直接调用所述媒体接口 库中的相应接口,其中不同音频类型具有不同的默认优先级,及其中所述媒体接口库向第 三方应用提供修改默认优先级的选择;

所述媒体接口库调用所述音频设备申请接口库的接口向所述音频设备状态管理 器申请使用音频设备;

响应于申请成功,所述音频流创建器产生音频流并将其发送给所述音频服务,及 所述音频设备状态管理器将音频路由发送给所述音频服务;

通过所述硬件驱动使用相应音频设备播放所述音频流。

本申请的目标还由一种音频适配系统实现,该系统用于使第三方应用与操作系统 的音频子系统适配,所述音频子系统包括媒体接口库、音频设备申请接口库、音频设备状态 管理器、音频流创建器、音频服务及硬件驱动,其中所述媒体接口库包括媒体播放、录制接 口并带编解码库,所述音频适配系统包括:

媒体接口库调用模块,用于响应于第三方应用的音频类型为非语音通话,第三方 应用直接调用所述媒体接口库中的相应接口,其中不同音频类型具有不同的默认优先级, 及其中所述媒体接口库向第三方应用提供修改默认优先级的选择;

第一申请模块,用于使得所述媒体接口库调用所述音频设备申请接口库的接口向 所述音频设备状态管理器申请使用音频设备;

第一音频流生成模块,用于响应于申请成功,所述音频流创建器产生音频流并将 其发送给所述音频服务,及所述音频设备状态管理器将音频路由发送给所述音频服务;

播放模块,用于通过所述硬件驱动使用相应音频设备播放所述音频流。

在本说明书中,术语“音频策略”定义各应用发生音频冲突时解决的方法或规则。

“音频路由”主要是根据应用的类型和音频设备的连接状态,给应用选择合适的音 频设备输出声音的过程。

“音频设备状态管理器”(OHM,Open Hardware Manager)用于管理各音频设备的连 接状态,是实现音频策略的后台服务程序,用以音频路由和激活应用。

“音频流创建器”如GStreamer是一种多媒体框架,主要用于音视频回放和录制。

“音频服务”(PulseAudio)指音频服务程序,负责控制音频硬件混频和提供服务给 应用程序。

“硬件驱动”(ALSA)实现最底层的基础音频功能。

“音频设备申请接口库”(Libresourceqt)指音频子系统封装的让应用调用的申请 音频设备的接口库。

“媒体接口库”(QtMultimedia)指媒体播放/录制接口库,带编解码库。

通过本发明,第三方应用在开发的过程中,可根据具体的业务需求,自己定义其播 放/录制音频时的优先级,通过调用音频子系统的接口库的相关接口来适应音频子系统。这 就相当于,第三方应用可以定义自己在应用间发生音频冲突时获取音频设备资源的优先 级,从而让应用获得更好的用户体验。

本发明将在下面参考附图并结合优选实施例进行更完全地说明。

图1为根据本发明方法的一实施例的流程图。

图2为根据本发明方法的另一实施例的流程图。

图3示出了图2所示方法结合第三方应用“元讯通”使用的示意图。

图4为根据本发明系统的一实施例的示意图。

为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所 必要的细节,而省略其他细节。

通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详 细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。

图1示出了根据本发明一实施例的方法的流程图,该方法用于使第三方应用与操 作系统如元心操作系统(基于Linux内核的智能移动终端操作系统)的音频子系统适配。在 此以名为“元讯通”的第三方应用为例说明本发明的方法。元讯通使用音频资源的功能模块 包括:发送语音消息、播放语音消息、发起/被邀语音通话铃声、语音通话。本发明的方法开 始于步骤S10,响应于元讯通需要使用音频设备的音频类型为非语音通话例如发送语音消 息、播放语音消息或者发起/被邀铃声(在此以发送语音消息为例),元讯通只需直接调用音 频子系统的媒体接口库QtMultimedia中的QAudioRecorder中的录音接口,而无需关注音频 资源的申请情况。在音频子系统中,不同音频类型具有不同的默认优先级,例如优先级从高 到低为aliencall、game、event和player。高优先级的音频优先于低优先级的音频播放。发 送语音消息的音频分组在创建QAudioRecorder对象时默认为player。元讯通在调用媒体接 口库时,媒体接口库向元讯通提供修改默认优先级的选择,例如可从“player”优先级修改 为高优先级如“aliencall”,元讯通可以也可不修改默认优先级。在步骤S20,媒体接口库 QtMultimedia调用音频设备申请接口库Libresourceqt的接口向音频设备状态管理器OHM 申请使用音频设备。在步骤S25,确定申请是否成功。如果申请失败,处理进行到步骤S30,直 接返回错误码给元讯通。如果申请成功,则处理进行到步骤S40,在GStreamer音频流创建器 中创建录音的流并发送给音频服务Pulseaudio,音频设备状态管理器OHM也经Pulseaudio 策略执行插件将对应的音频路由发送给音频服务Pulseaudio。如果先前修改了默认优先 级,则音频服务还将该音频流的优先级修改到修改后的优先级。在步骤S50,通过硬件驱动 更改音频路由并驱动相应音频设备播放所述音频流。

本发明利用封装的静态库Libresourceqt中的接口,使应用可以简单方便的指定 其音频流类型。不同的音频流类型有不同的优先级,当应用间发生音频冲突时,使用优高优 先级音频流类型的应用,可以暂停低优先级音频流类型的应用,独占音频设备进行音频的 播放,也可以与低优先级音频流类型的应用做混音。

播放语音消息与发送语音消息的流程类似,只是调用的是QMediaPlayer进行语音 的播放,在创建QmediaPlayer对应的音频流时,需根据第三方应用指定的播放语音的音频 分组对音频流的优先级进行修改。其语音播放与停止过程与OHM的交互跟发送语音消息是 一样的。

对于发起/被邀提醒铃声而言,其流程跟播放语音消息是一样的,只是其播放的文 件不同而已。一个是播放录制的文件,一个是播放元讯通指定的铃声文件。

图2示出了根据本发明另一实施例的方法的流程图,除包括图1所示的所有步骤之 外,该实施例的方法还包括步骤S60,同样以元讯通为例,响应于元讯通的音频类型为语音 通话,元讯通经即时通讯服务器(IM Server)调用音频子系统的音频设备申请接口库的接 口向音频设备状态管理器申请使用音频设备。在步骤S25’,确定申请是否成功。如果申请失 败,处理进行到步骤S30。如果申请成功,处理进行到步骤S40’,经开源VOIP引擎WebRtc在音 频服务中创建音频流,及音频设备状态管理器将对应的音频路由发送给所述音频服务。之 后,处理进行到步骤S50。

图3示出了图2所示方法结合元讯通使用的示意图,其中示出了元讯通包括四个功 能模块:发送语音消息、播放语音消息、发起/被邀语音通话铃声、元讯通语音通话,及音频 子系统包括媒体接口库QtMultimedia、音频设备申请接口库Libresourceqt、音频设备状态 管理器OHM、音频流创建器GStreamer、音频服务Pulseaudio及硬件驱动ALSA。

图4示出了根据本发明的音频适配系统的一实施例的示意图,该系统包括:媒体接 口库调用模块10,用于响应于第三方应用的音频类型为非语音通话,第三方应用直接调用 所述媒体接口库中的相应接口,其中不同音频类型具有不同的默认优先级,及其中所述媒 体接口库向第三方应用提供修改默认优先级的选择;第一申请模块20,用于使得所述媒体 接口库调用所述音频设备申请接口库的接口向所述音频设备状态管理器申请使用音频设 备;错误码返回模块30,用于响应于申请失败,向第三方应用返回错误码;第一音频流生成 模块40,用于响应于申请成功,所述音频流创建器产生音频流并将其发送给所述音频服务, 及所述音频设备状态管理器将音频路由发送给所述音频服务;优先级修改模块50,用于响 应于所述默认优先级已被修改,使所述音频服务将所述音频流的音频类型修改为修改后的 优先级;播放模块60,用于通过所述硬件驱动使用相应音频设备播放所述音频流;第二申请 模块70,用于响应于第三方应用的音频类型为语音通话,第三方应用调用所述音频设备申 请接口库的接口向所述音频设备状态管理器申请使用音频设备;第二音频流创建模块80, 用于响应于申请成功,经VOIP引擎在所述音频服务中创建播放语音流,及所述音频设备状 态管理器将音频路由发送给所述音频服务。

除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一” 的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述 的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操 作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的 任何及所有组合。除非明确指出,在此公开的任何方法的步骤不必精确按照所公开的顺序 执行。

一些优选实施例已经在前面进行了说明,但是应当强调的是,本发明不局限于这 些实施例,而是可以本发明主题范围内的其它方式实现。

本文发布于:2023-04-13 18:24:52,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86151.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图