Android采用opensl-es录音
来源:互联网 发布:淘宝数据的uv是什么 编辑:程序博客网 时间:2024/05/21 06:41
一.创建引擎对象,申请内存空间,获取引擎接口
SL_API SLresult SLAPIENTRY slCreateEngine(
SLObjectItf *pEngine,
SLuint32 numOptions,
const SLEngineOption *pEngineOptions,
SLuint32 numInterfaces,
const SLInterfaceID *pInterfaceIds,
const SLboolean * pInterfaceRequired
);
(*pEngine)->Realize(pEngine, SL_BOOLEAN_FALSE);
(*pEngine)->GetInterface(pEngine, SL_IID_ENGINE, &engineEngine);
二.创建AudioRecorder
1.获取audio source
SLDataLocator_IODevice loc_dev = {SL_DATALOCATOR_IODEVICE, SL_IODEVICE_AUDIOINPUT,
SL_DEFAULTDEVICEID_AUDIOINPUT, NULL};
SLDataSource audioSrc = {&loc_dev, NULL};
2.配置audio sink
SLDataLocator_AndroidSimpleBufferQueue loc_bq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, NB_BUFFERS_IN_QUEUE};
SLDataFormat_PCM format_pcm = {SL_DATAFORMAT_PCM, 1, simplingRate,
SL_PCMSAMPLEFORMAT_FIXED_16, SL_PCMSAMPLEFORMAT_FIXED_16,
SL_SPEAKER_FRONT_CENTER, SL_BYTEORDER_LITTLEENDIAN};
SLDataSink audioSnk = {&loc_bq, &format_pcm};
3.创建recorder
const SLInterfaceID id[1] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE};
const SLboolean req[1] = {SL_BOOLEAN_TRUE};
(*engineEngine)->CreateAudioRecorder(engineEngine, &recorderObject, &audioSrc,&audioSnk, 1, id, req);
(*recorderObject)->Realize(recorderObject, SL_BOOLEAN_FALSE);
(*recorderObject)->GetInterface(recorderObject, SL_IID_RECORD, &recorderRecord);
4.获取Record Buffer Queue
(*recorderObject)->GetInterface(recorderObject, SL_IID_ANDROIDSIMPLEBUFFERQUEUE,&recorderBufferQueue);
5.Record Buffer Queue注册监听器
(*recorderBufferQueue)->RegisterCallback(recorderBufferQueue, bqRecorderCallback,&cntxt);
6.向Record Buffer Queue压入记录缓存
(*recorderBufferQueue)->Enqueue(recorderBufferQueue, cntxt.pData,RECORDER_FRAMES);
7.开始录音
(*recorderRecord)->SetRecordState(recorderRecord, SL_RECORDSTATE_RECORDING);
8.回调处理录入的数据,继续压缓存入Record Buffer Queue,实现实时录音处理
- Android采用opensl-es录音
- Android 音频 OpenSL ES 录音
- Android利用opensl-es实现录音
- Android 音频 OpenSL ES 录音 采集
- OpenSL ES
- wzplayer for android正式支持OpenSL ES
- Android 音频 OpenSL ES URI播放
- Android 音频 OpenSL ES PCM数据播放
- Android+FFmpeg+OpenSL ES音频解码播放
- Android+FFmpeg+OpenSL ES音频解码播放
- Android+FFmpeg+OpenSL ES音频解码播放
- Android Audio上层架构OpenSL ES、AAudio
- Khronos OpenSL ES
- OpenSL ES技术分析
- Android Audio: Problems, Hidden Limitations and OpenSL ES
- Android 音频 Native API OpenSL ES 简要介绍
- 基于ffmpeg+opengl+opensl es的android视频播放器
- Android音频开发之使用OpenSL ES API
- SQL必知必会 笔记 第二十一章 使用游标
- Graphic Architecture
- MFC中头文件和预定义宏
- 下载Android源代码错误汇总分析
- iOS开发系列之常用自定义控件开发集—自动3D广告墙图片控件开发
- Android采用opensl-es录音
- linux 下rtc驱动分析
- Java中Comparable和Comparator实现对象比较
- BAT 参数去引号方法大全
- UVA10202Pairsumonious Numbers
- 安卓中Activity的onStart()和onResume()的区别是什么
- 第四章 Apk包测试用例编写
- CRM 常用的一些JavaScript
- 数组和字符串使用的详细介绍