From c441d0ce6a90181fc975f1578f49e4763f7d240a Mon Sep 17 00:00:00 2001 From: zengyawen Date: Sun, 25 Jun 2023 07:39:58 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zengyawen --- zh-cn/application-dev/media/Readme-CN.md | 2 + .../media/using-ohaudio-for-playback.md | 118 +++++++++--------- .../media/using-ohaudio-for-recording.md | 114 +++++++++-------- 3 files changed, 122 insertions(+), 112 deletions(-) diff --git a/zh-cn/application-dev/media/Readme-CN.md b/zh-cn/application-dev/media/Readme-CN.md index 333eed5570..4dd90dfa81 100755 --- a/zh-cn/application-dev/media/Readme-CN.md +++ b/zh-cn/application-dev/media/Readme-CN.md @@ -10,6 +10,7 @@ - [使用AudioRenderer开发音频播放功能](using-audiorenderer-for-playback.md) - [使用OpenSL ES开发音频播放功能](using-opensl-es-for-playback.md) - [使用TonePlayer开发音频播放功能(仅对系统应用开放)](using-toneplayer-for-playback.md) + - [使用OHAudio开发音频播放功能](using-ohaudio-for-playback.md) - [多音频播放的并发策略](audio-playback-concurrency.md) - [播放音量管理](volume-management.md) - [音效管理](audio-effect-management.md) @@ -21,6 +22,7 @@ - [使用AVRecorder开发音频录制功能](using-avrecorder-for-recording.md) - [使用AudioCapturer开发音频录制功能](using-audiocapturer-for-recording.md) - [使用OpenSL ES开发音频录制功能](using-opensl-es-for-recording.md) + - [使用OHAudio开发音频录制功能](using-ohaudio-for-recording.md) - [管理麦克风](mic-management.md) - [音频录制流管理](audio-recording-stream-management.md) - [音频输入设备管理](audio-input-device-management.md) diff --git a/zh-cn/application-dev/media/using-ohaudio-for-playback.md b/zh-cn/application-dev/media/using-ohaudio-for-playback.md index c48d34c65c..f1d1689dcd 100644 --- a/zh-cn/application-dev/media/using-ohaudio-for-playback.md +++ b/zh-cn/application-dev/media/using-ohaudio-for-playback.md @@ -1,4 +1,4 @@ -# OHAudio +# 使用OHAudio开发音频播放功能 OHAudio是OpenHarmony在API10中引入的一套全新C API,此API在设计上实现归一,同时支持普通音频通路和低时延通路。 @@ -31,72 +31,76 @@ OH_AudioStreamBuilder_Destroy(builder); ``` ## 开发步骤及注意事项 -详细的API说明请参考OHAudio API参考。 -开发者可以通过以下几个步骤来实现一个简单的播放功能。 - -**1. 创建构造器** - -``` -OH_AudioStreamBuilder* builder; -OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_RERNDERER); -``` - -**2. 配置音频流参数** -创建音频播放构造器后,可以设置音频流所需要的参数,可以参考下面的案例。 +详细的API说明请参考[OHAudio API参考](../reference/native-apis/_o_h_audio.md)。 -``` -OH_AudioStreamBuilder_SetSamplingRate(builder, rate); -OH_AudioStreamBuilder_SetChannelCount(builder, channelCount); -OH_AudioStreamBuilder_SetSampleFormat(builder, format); -OH_AudioStreamBuilder_SetEncodingType(builder, encodingType); -OH_AudioStreamBuilder_SetRendererInfo(builder, usage, content); -``` - -注意,播放的音频数据要通过回调接口写入,开发者要实现回调接口,使用`OH_AudioStreamBuilder_SetRendererCallback`设置回调函数。回调函数接口声明如下。 - -``` -typedef struct OH_AudioRenderer_Callbacks_Struct { - /** - * This function pointer will point to the callback function that - * is used to write audio data - */ - int32_t (*OH_AudioRenderer_OnWriteData)( - OH_AudioRenderer* renderer, - void* userData, - void* buffer, - int32_t lenth); -} OH_AudioRenderer_Callbacks; -``` - -**3. 设置回调函数** - -``` -OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr); -``` +开发者可以通过以下几个步骤来实现一个简单的播放功能。 -**4. 构造播放音频流** +1. 创建构造器 -``` -OH_AudioRenderer* audioRenderer; -OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer); -``` + ```c++ + OH_AudioStreamBuilder* builder; + OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_RERNDERER); + ``` + +2. 配置音频流参数 + + 创建音频播放构造器后,可以设置音频流所需要的参数,可以参考下面的案例。 + + ```c++ + OH_AudioStreamBuilder_SetSamplingRate(builder, rate); + OH_AudioStreamBuilder_SetChannelCount(builder, channelCount); + OH_AudioStreamBuilder_SetSampleFormat(builder, format); + OH_AudioStreamBuilder_SetEncodingType(builder, encodingType); + OH_AudioStreamBuilder_SetRendererInfo(builder, usage, content); + ``` + + 注意,播放的音频数据要通过回调接口写入,开发者要实现回调接口,使用`OH_AudioStreamBuilder_SetRendererCallback`设置回调函数。回调函数接口声明如下。 + + ```c++ + typedef struct OH_AudioRenderer_Callbacks_Struct { + /** + * This function pointer will point to the callback function that + * is used to write audio data + */ + int32_t (*OH_AudioRenderer_OnWriteData)( + OH_AudioRenderer* renderer, + void* userData, + void* buffer, + int32_t lenth); + } OH_AudioRenderer_Callbacks; + ``` + +3. 设置回调函数 + + ```c++ + OH_AudioStreamBuilder_SetRendererCallback(builder, callbacks, nullptr); + ``` + +4. 构造播放音频流 + + ```c++ + OH_AudioRenderer* audioRenderer; + OH_AudioStreamBuilder_GenerateRenderer(builder, &audioRenderer); + ``` -**5. 使用音频流** +5. 使用音频流 -音频流包含下面接口,用来实现对音频流的控制。 + 音频流包含下面接口,用来实现对音频流的控制。 -| 接口 | 说明 | -| ------------------------------------------------------------ | ------------ | -| OH_AudioStream_Result OH_AudioRenderer_Start(OH_AudioRenderer* renderer) | 开始播放 | -| OH_AudioStream_Result OH_AudioRenderer_Pause(OH_AudioRenderer* renderer) | 暂停播放 | -| OH_AudioStream_Result OH_AudioRenderer_Stop(OH_AudioRenderer* renderer) | 停止播放 | -| OH_AudioStream_Result OH_AudioRenderer_Flush(OH_AudioRenderer* renderer) | 释放缓存数据 | -| OH_AudioStream_Result OH_AudioRenderer_Release(OH_AudioRenderer* renderer) | 释放播放实例 | + | 接口 | 说明 | + | ------------------------------------------------------------ | ------------ | + | OH_AudioStream_Result OH_AudioRenderer_Start(OH_AudioRenderer* renderer) | 开始播放 | + | OH_AudioStream_Result OH_AudioRenderer_Pause(OH_AudioRenderer* renderer) | 暂停播放 | + | OH_AudioStream_Result OH_AudioRenderer_Stop(OH_AudioRenderer* renderer) | 停止播放 | + | OH_AudioStream_Result OH_AudioRenderer_Flush(OH_AudioRenderer* renderer) | 释放缓存数据 | + | OH_AudioStream_Result OH_AudioRenderer_Release(OH_AudioRenderer* renderer) | 释放播放实例 | ## 完整示例 + 参考以下示例,完成一次播放音频的完整流程。 -``` + +```c++ #include #include #include diff --git a/zh-cn/application-dev/media/using-ohaudio-for-recording.md b/zh-cn/application-dev/media/using-ohaudio-for-recording.md index bf90d45dfa..263835800b 100644 --- a/zh-cn/application-dev/media/using-ohaudio-for-recording.md +++ b/zh-cn/application-dev/media/using-ohaudio-for-recording.md @@ -1,4 +1,4 @@ -# OHAudio +# 使用OHAudio开发音频录制功能 OHAudio是OpenHarmony在API10中引入的一套全新C API,此API在设计上实现归一,同时支持普通音频通路和低时延通路。 @@ -31,70 +31,74 @@ OH_AudioStreamBuilder_Destroy(builder); ``` ## 开发步骤及注意事项 -详细的API说明请参考OHAudio API参考。 -开发者可以通过以下几个步骤来实现一个简单的录制功能。 - -1. **创建构造器** - -``` -OH_AudioStreamBuilder* builder; -OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_CAPTURER); -``` - -2. **配置音频流参数** - -创建音频播放构造器后,可以设置音频流所需要的参数,可以参考下面的案例。 - -``` -OH_AudioStreamBuilder_SetSamplingRate(builder, rate); -OH_AudioStreamBuilder_SetChannelCount(builder, channelCount); -OH_AudioStreamBuilder_SetSampleFormat(builder, format); -OH_AudioStreamBuilder_SetEncodingType(builder, encodingType); -OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType); -``` -同样,音频录制的音频数据要通过回调接口写入,开发者要实现回调接口,使用`OH_AudioStreamBuilder_SetCapturerCallback`设置回调函数。回调函数接口声明如下。 +详细的API说明请参考[OHAudio API参考](../reference/native-apis/_o_h_audio.md)。 -``` -typedef struct OH_AudioCapturer_Callbacks_Struct { - /** - * This function pointer will point to the callback function that - * is used to read audio data - */ - int32_t (*OH_AudioCapturer_OnReadData)( - OH_AudioCapturer* capturer, - void* userData, - void* buffer, - int32_t lenth); -} OH_AudioCapturer_Callbacks; -``` - -3. **设置音频回调函数** +开发者可以通过以下几个步骤来实现一个简单的录制功能。 -``` -OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, nullptr); -``` -4. **构造播放音频流** +1. 创建构造器 -``` -OH_AudioCapturer* audioCapturer; -OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer); -``` + ```c++ + OH_AudioStreamBuilder* builder; + OH_AudioStreamBuilder_Create(&builder, AUDIOSTREAM_TYPE_CAPTURER); + ``` + +2. 配置音频流参数 + + 创建音频播放构造器后,可以设置音频流所需要的参数,可以参考下面的案例。 + + ```c++ + OH_AudioStreamBuilder_SetSamplingRate(builder, rate); + OH_AudioStreamBuilder_SetChannelCount(builder, channelCount); + OH_AudioStreamBuilder_SetSampleFormat(builder, format); + OH_AudioStreamBuilder_SetEncodingType(builder, encodingType); + OH_AudioStreamBuilder_SetCapturerInfo(builder, sourceType); + ``` + + 同样,音频录制的音频数据要通过回调接口写入,开发者要实现回调接口,使用`OH_AudioStreamBuilder_SetCapturerCallback`设置回调函数。回调函数接口声明如下。 + + ```c++ + typedef struct OH_AudioCapturer_Callbacks_Struct { + /** + * This function pointer will point to the callback function that + * is used to read audio data + */ + int32_t (*OH_AudioCapturer_OnReadData)( + OH_AudioCapturer* capturer, + void* userData, + void* buffer, + int32_t lenth); + } OH_AudioCapturer_Callbacks; + ``` + +3. 设置音频回调函数 + + ```c++ + OH_AudioStreamBuilder_SetCapturerCallback(builder, callbacks, nullptr); + ``` + +4. 构造播放音频流 + + ```c++ + OH_AudioCapturer* audioCapturer; + OH_AudioStreamBuilder_GenerateCapturer(builder, &audioCapturer); + ``` -5. **使用音频流** +5. 使用音频流 -录制音频流包含下面接口,用来实现对音频流的控制。 + 录制音频流包含下面接口,用来实现对音频流的控制。 -| 接口 | 说明 | -| ------------------------------------------------------------ | ------------ | -| OH_AudioStream_Result OH_AudioCapturer_Start(OH_AudioCapturer* capturer) | 开始录制 | -| OH_AudioStream_Result OH_AudioCapturer_Pause(OH_AudioCapturer* capturer) | 暂停录制 | -| OH_AudioStream_Result OH_AudioCapturer_Stop(OH_AudioCapturer* capturer) | 停止录制 | -| OH_AudioStream_Result OH_AudioCapturer_Flush(OH_AudioCapturer* capturer) | 释放缓存数据 | -| OH_AudioStream_Result OH_AudioCapturer_Release(OH_AudioCapturer* capturer) | 释放录制实例 | + | 接口 | 说明 | + | ------------------------------------------------------------ | ------------ | + | OH_AudioStream_Result OH_AudioCapturer_Start(OH_AudioCapturer* capturer) | 开始录制 | + | OH_AudioStream_Result OH_AudioCapturer_Pause(OH_AudioCapturer* capturer) | 暂停录制 | + | OH_AudioStream_Result OH_AudioCapturer_Stop(OH_AudioCapturer* capturer) | 停止录制 | + | OH_AudioStream_Result OH_AudioCapturer_Flush(OH_AudioCapturer* capturer) | 释放缓存数据 | + | OH_AudioStream_Result OH_AudioCapturer_Release(OH_AudioCapturer* capturer) | 释放录制实例 | ## 完整示例 + 参考以下示例,完成一次录制`10s`时长音频的完整流程。 ``` -- GitLab