OpenSL ES是什么
OpenSL ES全称为Open Sound Library for Embedded Systems,即嵌入式音频加速标准。OpenSL ES是无授权费、跨平台、针对嵌入式系统精心优化的硬件音频加速 API。它为嵌入式移动多媒体设备上的本地 应用程序开发者提供了标准化、高性能、低响应时间的音频功能实现方法,同时还实现了软/硬件音频性能的直接跨平台部署,不仅降低了执行难度,而且促进了高级音频市场的发展。
OpenSL ES的设计目标
让应用程序开发人员能够访问高级音频功能,如3D定位音频和MIDI播放,同时努力在制造商和平台之间轻松实现应用程序移植。
OpenSL ES主要功能
- 基本音频播放和录制。
- 3D音频效果,包括3D定位音频。
- 音乐体验增强效果,包括低音增强和环境混响。
- 缓冲队列。
使用OpenSL ES 的优点
- 相比于 Java API,避免音频数据频繁在 native 层和 Java 层拷贝,提高效率。
- 相比于 Java API,可以更灵活地控制参数。
- 使用 C 代码,可以做深度定制的优化。
OpenSL ES的对象和接口
OpenSL ES 有两个重要的概念 Object 和 Interface,“对象”和“接口”。 (1) 每个 Object 可能会存在一个或者多个 Interface,官方为每一种 Object 都定义了一系列的 Interface。 (2) 每个 Object 对象都提供了一些最基础的操作,比如:Realize,Resume,GetState,Destroy 等等,如果希望使用该对象支持的功能函数,则必须通过其 GetInterface 函数拿到 Interface 接口,然后通过 Interface 来访问功能函数。 (3) 并不是每个系统上都实现了 OpenSL ES 为 Object 定义的所有 Interface,所以在获取 Interface 的时候需要做一些选择和判断。
OpenSL ES常用接口
在OpenSL ES中所有的操作都是通过接口来完成,和java的接口类似,接口提供底层的方法调用。常用的接口有以下几种:
- SLObjectItf :对象接口
- SLEngineItf :引擎接口
- SLPlayItf:播放接口
- SLBufferQueueItf :缓冲队列接口
- SLVolumeItf : 声量接口
OpenSL ES 的开发流程主要有如下:
(1)音频录制
1、 创建接口對象
2、设置IO设备麦克风,设置buffer队列,设置录制规格
3、创建录音器
4、设置回调函数
5、开发录音
(2)音频播放
1. 创建接口對象
2.创建混音器
3.设置pcm格式的频率位数等信息并建立播放器
4.设置缓冲队列,音量设置和回调函数
5、启动回调函数