前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android OpenSL ES 介绍和开发流程(七)

Android OpenSL ES 介绍和开发流程(七)

原创
作者头像
PengJie
修改2021-01-10 15:56:12
1.3K0
修改2021-01-10 15:56:12
举报
文章被收录于专栏:音视频修炼路音视频修炼路

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的接口类似,接口提供底层的方法调用。常用的接口有以下几种:

  1. SLObjectItf :对象接口
  2. SLEngineItf :引擎接口
  3. SLPlayItf:播放接口
  4. SLBufferQueueItf :缓冲队列接口
  5. SLVolumeItf : 声量接口

OpenSL ES 的开发流程主要有如下:

(1)音频录制

1、 创建接口對象

2、设置IO设备麦克风,设置buffer队列,设置录制规格

3、创建录音器

4、设置回调函数

5、开发录音

(2)音频播放

1. 创建接口對象

2.创建混音器

3.设置pcm格式的频率位数等信息并建立播放器

4.设置缓冲队列,音量设置和回调函数

5、启动回调函数

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OpenSL ES是什么
  • OpenSL ES的设计目标
  • OpenSL ES主要功能
  • 使用OpenSL ES 的优点
  • OpenSL ES的对象和接口
  • OpenSL ES常用接口
  • OpenSL ES 的开发流程主要有如下:
    • (1)音频录制
      • (2)音频播放
      相关产品与服务
      图像处理
      图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档