Android利用opensl-es实现录音
来源:互联网 发布:php短信轰炸机源码 编辑:程序博客网 时间:2024/04/30 17:45
一.创建引擎对象,申请内存空间,获取引擎接口
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 录音 采集
- 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视频播放器
- 使用eclipse 添加user library
- Redis-Dump:将Redis数据导入导出
- 什么是ROM、RAM、DRAM、SRAM和FLASH的区别
- 设备接到APNS发来的通知处理方式
- 输入两个一位十六进制,输出其乘积(8086汇编程序)
- Android利用opensl-es实现录音
- iOS学习笔记12—Runloop
- SVM入门(一)至(三)Refresh
- BigDecimal的应用
- android图像编辑和处理(四)
- [leetcode题后感]combination sum i,ii
- SQL必知必会 笔记 第二十二章 了解高级SQL特性
- MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法
- VC 判断系统是否进入睡眠模式