1e41f4b71Sopenharmony_ci# OpenSL ES 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci> **说明:** 4e41f4b71Sopenharmony_ci> OpenHarmony上的OpenSL ES接口,是早期SDK8版本开始提供,用于支持应用Native层音频开发的接口。但随着版本演进,接口定义的可扩展性不足,不再能满足音频系统的能力拓展,因此当前已不再推荐应用开发者继续使用此接口进行音频功能开发, 5e41f4b71Sopenharmony_ci> 请开发者[从OpenSL ES切换到OHAudio](../../media/audio/replace-opensles-by-ohaudio.md)。 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## 简介 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciOpenSL ES(Open Sound Library for Embedded System)即嵌入式音频加速标准。为开发者提供了标准化、高性能以及低响应时间的音频功能开发的对象和接口。相对于开源免费的OpenSL ES,OpenHarmony基于[OpenSL ES](https://www.khronos.org/opensles/) 1.0.1 API规范实现了部分Native API,相关接口开放情况如表[支持的API](#支持的api)所示。 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## 引入OpenSL ES能力 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci如果开发者需要使用OpenSL ES相关功能,首先请添加头文件: 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci``` 16e41f4b71Sopenharmony_ci#include <SLES/OpenSLES.h> 17e41f4b71Sopenharmony_ci#include <SLES/OpenSLES_OpenHarmony.h> 18e41f4b71Sopenharmony_ci#include <SLES/OpenSLES_Platform.h> 19e41f4b71Sopenharmony_ci``` 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci其次在CMakeLists.txt中添加以下链接动态库 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci``` 24e41f4b71Sopenharmony_cilibOpenSLES.so 25e41f4b71Sopenharmony_ci``` 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci## 支持的API 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci|对象 |对外接口 |接口调用详情 |是否支持 |说明 | 30e41f4b71Sopenharmony_ci| ------------------ | -------------------- | -------------------------------------------------------------------------------------|----------| -------------------- | 31e41f4b71Sopenharmony_ci|SLEngineItf |CreateAudioPlayer |CreateAudioPlayer(SLEngineItf self, SLObjectItf *pPlayer, SLDataSource *pAudioSrc, SLDataSink *pAudioSnk, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired) |是 |创建音频播放机。 | 32e41f4b71Sopenharmony_ci|SLEngineItf |CreateAudioRecorder |reateAudioRecorder(SLEngineItf self, SLObjectItf *pRecorder, SLDataSource *pAudioSrc, SLDataSink *pAudioSnk, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired)|是 |创建音频录制器。 | 33e41f4b71Sopenharmony_ci|SLEngineItf |CreateAudioOutputMix |CreateOutputMix(SLEngineItf self, SLObjectItf *pMix, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired)|是 |创建混音器。 | 34e41f4b71Sopenharmony_ci|SLObjectItf |Realize |Realize(SLObjectItf self, SLboolean async) |是 |创建音频播放机。 | 35e41f4b71Sopenharmony_ci|SLObjectItf |getState |GetState(SLObjectItf self, SLuint32 *pState) |是 |获取状态。 | 36e41f4b71Sopenharmony_ci|SLObjectItf |getInterface |GetInterface(SLObjectItf self, const SLInterfaceID iid, void *pInterface) |是 |获取接口。 | 37e41f4b71Sopenharmony_ci|SLObjectItf |Destroy |Destroy(SLObjectItf self) |是 |销毁对象。 | 38e41f4b71Sopenharmony_ci|SLOHBufferQueueItf |Enqueue |Enqueue(SLOHBufferQueueItf self, const void *pBuffer, SLuint32 size) |是 |将buffer加入实际队列中。| 39e41f4b71Sopenharmony_ci|SLOHBufferQueueItf |clear |Clear(SLOHBufferQueueItf self) |是 |释放buffer队列 | 40e41f4b71Sopenharmony_ci|SLOHBufferQueueItf |getState |GetState(SLOHBufferQueueItf self, SLOHBufferQueueState *pState) |是 |获取BufferQueue状态。 | 41e41f4b71Sopenharmony_ci|SLOHBufferQueueItf |getBuffer |GetBuffer(SLOHBufferQueueItf self, SLuint8 **buffer, SLuint32 *size) |是 |获取buffer。 | 42e41f4b71Sopenharmony_ci|SLOHBufferQueueItf |RegisterCallback |RegisterCallback(SLOHBufferQueueItf self, SlOHBufferQueueCallback callback, void *pContext) |是 |注册回调函数。 | 43e41f4b71Sopenharmony_ci|SLPlayItf |SetPlayState |SetPlayState(SLPlayItf self, SLuint32 state) |是 |设置播放状态。 | 44e41f4b71Sopenharmony_ci|SLPlayItf |GetPlayState |GetPlayState(SLPlayItf self, SLuint32 *pState) |是 |获取播放状态。 | 45e41f4b71Sopenharmony_ci|SLRecordItf |SetRecordState |SetRecordState(SLRecordItf self, SLuint32 state) |是 |设置录制状态。 | 46e41f4b71Sopenharmony_ci|SLRecordItf |GetRecordState |GetRecordState(SLRecordItf self, SLuint32 *pState) |是 |获取录制状态。 | 47e41f4b71Sopenharmony_ci|SLVolumeItf |SetVolumeLevel |SetVolumeLevel(SLVolumeItf self, SLmillibel level) |是 |设置音量。 | 48e41f4b71Sopenharmony_ci|SLVolumeItf |GetVolumeLevel |GetVolumeLevel(SLVolumeItf self, SLmillibel *pLevel) |是 |获取音量。 | 49e41f4b71Sopenharmony_ci|SLVolumeItf |GetMaxVolumeLevel |GetMaxVolumeLevel(SLVolumeItf self, SLmillibel *pMaxLevel) |是 |获取最大音量。 |