目录

Audio Kit简介

Audio Kit(音频服务)旨在提供场景化的音频播放和录制接口,助力开发者迅速构建音频高清采集及沉浸式播放能力。

亮点/特征

音频架构

开发者可以利用Audio Kit的接口,使用音频系统提供的播放、录音及音频策略管理能力,进而访问相应的音频硬件。音频架构定义了系统如何封装和管理音频硬件能力。音频架构图如下:

Application

应用开发者通过Audio Kit提供的公开API接口,利用音频系统提供的软硬件能力,实现应用所需的播放和录音功能。

Napi

通过NAPI,一种Node.js推出的用于开发C++模块的接口,封装了操作系统底层能力并对外提供ArkTS接口。通过NAPI可实现ArkTS与C/C++代码互相访问。

Native framework

在Native框架层,音频系统实现了播放、录音、音量控制、设备路由和音效处理等接口的框架实现,通过跨进程接口连接音频服务。

Native SystemAbility

音频服务进程audio_server承载了软件实现的音频系统功能组件,提供了丰富的音频策略管理和数据处理能力。组件通过HDI接口与HAL层连接,从而使用音频硬件能力。

HAL

HAL通过统一的HDI接口对外提供服务,不同的音频硬件开发人员实现HDI接口,使得音频服务可以通过不同类型的音频设备进行播放和录音。

Kernel

内核驱动程序负责与音频硬件交互,针对不同规模的操作系统,可以选择多种内核,如Linux、LiteOS、HarmonyOS内核等。

开发说明

在每个功能中,会介绍多种实现方式以应对不同的使用场景,以及该场景相关的子功能点。比如在音频播放功能内,会同时介绍音频的并发策略、音量管理和输出设备等在操作系统中的处理方式,帮助开发者能够开发出功能覆盖更全面的应用。

本开发指导仅针对音频播放或录制本身,Audio Kit提供相关能力,不涉及UI界面、图形处理、媒体存储或其他相关领域功能。

在开发音频功能之前,尤其是要实现处理音频数据的功能前,建议开发者先了解声学相关的知识,帮助理解操作系统提供的API是如何控制音频系统,从而开发出更易用、体验更好的音视频类应用。建议了解的相关概念包括但不限于:

音频流介绍

在开发音频应用之前,还需要了解什么是音频流,它是HarmonyOS音频系统中的关键概念,在之后的章节中会多次提及。

音频流,是指音频系统中一个具备音频格式和音频使用场景信息的独立音频数据处理单元。可以表示播放,也可以表示录制,并且具备独立音量调节和音频设备路由切换能力。

音频流基础信息通过AudioStreamInfo表示,包含采样、声道、位宽、编码信息,是创建音频播放或录制流的必要参数,描述了音频数据的基本属性。在配置时开发者需要保证基础信息与传输的音频数据相匹配,音频系统才能正确处理数据。

[h2]音频流使用场景信息

除了基本属性,音频流还需要具备使用场景信息。基础信息只能对音频数据进行描述,但在实际的使用过程中,不同的音频流,在音量大小、设备路由、并发策略上是有区别的。系统就是通过音频流所附带的使用场景信息,为不同的音频流制定合适的处理策略,以达到更好的音频用户体验。

支持的音频格式

audio模块下的接口支持PCM编码,包括AudioRenderer、AudioCapturer、TonePlayer、OpenSL ES等。

音频格式说明:

模拟器支持情况

本Kit支持模拟器,但与真机存在部分能力差异,具体差异如下。