目录
播放流程和条件
android自带的openSL库,可用来解码音频,也可以来播放音频,以及录音。要在jni层调用:
1、cmakeList 中target_link_libraries 内引入库:OpenSLES
2、引入头文件:
#include "SLES/OpenSLES.h"
#include "SLES/OpenSLES_Android.h"
播放流程
播放队列
只要往播放队列中压入数据,就会播放。这里采用的是回调函数,当取出buf播放完毕就会清理buf,让队列空出,这时候就push数据叫你去,从而播放。
OPengl SLObjectItf 对象创建的四板斧
一般对象创建完毕后,用到的就是 SLObjectItf的对象 和 interface接口功能对象
1、定义 SLObjectItf
Opensl机构体SLObjectItf可以定义大部分结构体,此篇文章结构体对象都是用它初始化的。结构体 SLObjectItf 类似于java的Object类,属于一个基结构体。音频的大多数结构体都继承于它。
typedef const struct SLObjectItf_ * const * SLObjectItf;
从结构以定义看出,它是一个结构以指针,因此,定义一个SLObjectItf 变量,其实是定义一个 SLObjectItf的指针。
2、创建 slCreate
因为SLObjectItf是指针对象,为了更好管理内存,会将SLObjectItf地址传入opensl中,来创建。下面为创建Engine引擎的例子:
SLObjectIt