1# native_audiorenderer.h 2<!--Kit: Audio Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @songshenke--> 5<!--Designer: @caixuejiang; @hao-liangfei; @zhanganxiang--> 6<!--Tester: @Filger--> 7<!--Adviser: @zengyawen--> 8 9## 概述 10 11声明输出类型的音频流相关接口。 12 13**引用文件:** <ohaudio/native_audiorenderer.h> 14 15**库:** libohaudio.so 16 17**系统能力:** SystemCapability.Multimedia.Audio.Core 18 19**起始版本:** 10 20 21**相关模块:** [OHAudio](capi-ohaudio.md) 22 23## 汇总 24 25### 函数 26 27| 名称 | typedef关键字 | 描述 | 28| -- | -- | -- | 29| [OH_AudioStream_Result OH_AudioRenderer_Release(OH_AudioRenderer* renderer)](#oh_audiorenderer_release) | - | 释放输出音频流。 | 30| [OH_AudioStream_Result OH_AudioRenderer_Start(OH_AudioRenderer* renderer)](#oh_audiorenderer_start) | - | 开始输出音频数据。 | 31| [OH_AudioStream_Result OH_AudioRenderer_Pause(OH_AudioRenderer* renderer)](#oh_audiorenderer_pause) | - | 暂停输出音频流。 | 32| [OH_AudioStream_Result OH_AudioRenderer_Stop(OH_AudioRenderer* renderer)](#oh_audiorenderer_stop) | - | 停止输出音频流。 | 33| [OH_AudioStream_Result OH_AudioRenderer_Flush(OH_AudioRenderer* renderer)](#oh_audiorenderer_flush) | - | 清空缓冲区的音频数据。 | 34| [OH_AudioStream_Result OH_AudioRenderer_GetCurrentState(OH_AudioRenderer* renderer, OH_AudioStream_State* state)](#oh_audiorenderer_getcurrentstate) | - | 查询当前输出音频流状态。 | 35| [OH_AudioStream_Result OH_AudioRenderer_GetSamplingRate(OH_AudioRenderer* renderer, int32_t* rate)](#oh_audiorenderer_getsamplingrate) | - | 查询当前输出音频流采样率。 | 36| [OH_AudioStream_Result OH_AudioRenderer_GetStreamId(OH_AudioRenderer* renderer, uint32_t* streamId)](#oh_audiorenderer_getstreamid) | - | 查询当前输出音频流ID。 | 37| [OH_AudioStream_Result OH_AudioRenderer_GetChannelCount(OH_AudioRenderer* renderer, int32_t* channelCount)](#oh_audiorenderer_getchannelcount) | - | 查询当前输出音频流通道数。 | 38| [OH_AudioStream_Result OH_AudioRenderer_GetSampleFormat(OH_AudioRenderer* renderer, OH_AudioStream_SampleFormat* sampleFormat)](#oh_audiorenderer_getsampleformat) | - | 查询当前输出音频流采样格式。 | 39| [OH_AudioStream_Result OH_AudioRenderer_GetLatencyMode(OH_AudioRenderer* renderer, OH_AudioStream_LatencyMode* latencyMode)](#oh_audiorenderer_getlatencymode) | - | 查询当前输出音频流时延模式。 | 40| [OH_AudioStream_Result OH_AudioRenderer_GetRendererInfo(OH_AudioRenderer* renderer, OH_AudioStream_Usage* usage)](#oh_audiorenderer_getrendererinfo) | - | 查询当前输出音频流的使用类型。 | 41| [OH_AudioStream_Result OH_AudioRenderer_GetEncodingType(OH_AudioRenderer* renderer, OH_AudioStream_EncodingType* encodingType)](#oh_audiorenderer_getencodingtype) | - | 查询当前输出音频流编码类型。 | 42| [OH_AudioStream_Result OH_AudioRenderer_GetFramesWritten(OH_AudioRenderer* renderer, int64_t* frames)](#oh_audiorenderer_getframeswritten) | - | 查询自创建流以来已写入的帧数。 | 43| [OH_AudioStream_Result OH_AudioRenderer_GetTimestamp(OH_AudioRenderer* renderer, clockid_t clockId, int64_t* framePosition, int64_t* timestamp)](#oh_audiorenderer_gettimestamp) | - | 获取输出音频流时间戳和位置信息。<br> 该接口可以获取到音频通道实际播放位置(framePosition)以及播放到该位置时候的时间戳(timestamp),时间戳单位为纳秒。<br> 当设备切换或暂停恢复时,由于播放通路本身需要一段时间恢复,调用该接口获取的播放位置和时间戳会短暂地保持在切换或暂停前的状态。 | 44| [OH_AudioStream_Result OH_AudioRenderer_GetAudioTimestampInfo(OH_AudioRenderer* renderer, int64_t* framePosition, int64_t* timestamp)](#oh_audiorenderer_getaudiotimestampinfo) | - | 获取输出音频流时间戳和位置信息,适配倍速接口。<br> 获取输出音频流时间戳和位置信息,通常用于进行音画同步对齐。 | 45| [OH_AudioStream_Result OH_AudioRenderer_GetFrameSizeInCallback(OH_AudioRenderer* renderer, int32_t* frameSize)](#oh_audiorenderer_getframesizeincallback) | - | 在回调中查询帧大小,它是一个固定的长度,每次回调都要填充流。 | 46| [OH_AudioStream_Result OH_AudioRenderer_GetSpeed(OH_AudioRenderer* renderer, float* speed)](#oh_audiorenderer_getspeed) | - | 获取音频渲染速率。 | 47| [OH_AudioStream_Result OH_AudioRenderer_SetSpeed(OH_AudioRenderer* renderer, float speed)](#oh_audiorenderer_setspeed) | - | 设置音频渲染速率。 | 48| [OH_AudioStream_Result OH_AudioRenderer_SetMarkPosition(OH_AudioRenderer* renderer, uint32_t samplePos, OH_AudioRenderer_OnMarkReachedCallback callback, void* userData)](#oh_audiorenderer_setmarkposition) | - | 在当前渲染器上设置标记位置。调用此函数将覆盖已设置的标记位置。 | 49| [OH_AudioStream_Result OH_AudioRenderer_CancelMark(OH_AudioRenderer* renderer)](#oh_audiorenderer_cancelmark) | - | 取消由[OH_AudioRenderer_SetMarkPosition](#oh_audiorenderer_setmarkposition)设置的标记。 | 50| [OH_AudioStream_Result OH_AudioRenderer_SetVolume(OH_AudioRenderer* renderer, float volume)](#oh_audiorenderer_setvolume) | - | 设置当前音频流音量值。 | 51| [OH_AudioStream_Result OH_AudioRenderer_SetVolumeWithRamp(OH_AudioRenderer* renderer, float volume, int32_t durationMs)](#oh_audiorenderer_setvolumewithramp) | - | 在指定时间范围内使用渐变更改音量。 | 52| [OH_AudioStream_Result OH_AudioRenderer_GetVolume(OH_AudioRenderer* renderer, float* volume)](#oh_audiorenderer_getvolume) | - | 获取当前音频流音量值。 | 53| [OH_AudioStream_Result OH_AudioRenderer_GetUnderflowCount(OH_AudioRenderer* renderer, uint32_t* count)](#oh_audiorenderer_getunderflowcount) | - | 获取当前播放音频流欠载数。 | 54| [OH_AudioStream_Result OH_AudioRenderer_GetChannelLayout(OH_AudioRenderer* renderer, OH_AudioChannelLayout* channelLayout)](#oh_audiorenderer_getchannellayout) | - | 查询当前音频流声道布局。 | 55| [OH_AudioStream_Result OH_AudioRenderer_GetEffectMode(OH_AudioRenderer* renderer, OH_AudioStream_AudioEffectMode* effectMode)](#oh_audiorenderer_geteffectmode) | - | 查询当前音频流音效模式。 | 56| [OH_AudioStream_Result OH_AudioRenderer_SetEffectMode(OH_AudioRenderer* renderer, OH_AudioStream_AudioEffectMode effectMode)](#oh_audiorenderer_seteffectmode) | - | 设置当前音频流音效模式。 | 57| [OH_AudioStream_Result OH_AudioRenderer_GetRendererPrivacy(OH_AudioRenderer* renderer, OH_AudioStream_PrivacyType* privacy)](#oh_audiorenderer_getrendererprivacy) | - | 查询当前播放音频流是否会被其它应用录制。 | 58| [OH_AudioStream_Result OH_AudioRenderer_SetSilentModeAndMixWithOthers(OH_AudioRenderer* renderer, bool on)](#oh_audiorenderer_setsilentmodeandmixwithothers) | - | 设置静音并发播放模式。<br> 当设置为true,打开静音并发播放模式,系统将让此音频流静音播放,并且不会打断其他音频流。设置为false,将关闭静音并发播放,音频流可根据系统焦点策略抢占焦点。 | 59| [OH_AudioStream_Result OH_AudioRenderer_GetSilentModeAndMixWithOthers(OH_AudioRenderer* renderer, bool* on)](#oh_audiorenderer_getsilentmodeandmixwithothers) | - | 获取当前音频流是否开启静音并发播放。 | 60| [OH_AudioStream_Result OH_AudioRenderer_SetDefaultOutputDevice(OH_AudioRenderer* renderer, OH_AudioDevice_Type deviceType)](#oh_audiorenderer_setdefaultoutputdevice) | - | 设置默认本机内置发声设备。<br> 本接口仅适用于音频流类型[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage)为语音消息、VoIP语音通话或者VoIP视频通话的场景使用,以及可选的设备类型为听筒、扬声器和系统默认设备。<br> 本接口允许在AudioRenderer创建以后的任何时间被调用,系统会记录应用设置的默认本机内置发声设备。在应用启动播放时,若有外接设备如蓝牙耳机/有线耳机接入,系统优先从外接设备发声;否则系统遵循应用设置的默认本机内置发声设备发声。<br> | 61| [typedef void (\*OH_AudioRenderer_OnInterruptCallback)(OH_AudioRenderer* renderer, void* userData, OH_AudioInterrupt_ForceType type, OH_AudioInterrupt_Hint hint)](#oh_audiorenderer_oninterruptcallback) | OH_AudioRenderer_OnInterruptCallback | 音频流中断事件回调函数。 | 62| [typedef void (\*OH_AudioRenderer_OnErrorCallback)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_Result error)](#oh_audiorenderer_onerrorcallback) | OH_AudioRenderer_OnErrorCallback | 音频流错误事件回调函数。 | 63| [OH_AudioStream_Result OH_AudioRenderer_GetFastStatus(OH_AudioRenderer* renderer, OH_AudioStream_FastStatus* status)](#oh_audiorenderer_getfaststatus) | - | 获取音频播放过程中的运行状态,是否在低时延状态下工作。 | 64| [typedef void (\*OH_AudioRenderer_OnFastStatusChange)(OH_AudioRenderer* renderer, void* userData, OH_AudioStream_FastStatus status)](#oh_audiorenderer_onfaststatuschange) | OH_AudioRenderer_OnFastStatusChange | 音频播放过程中低时延状态改变事件的回调函数。 | 65| [OH_AudioStream_Result OH_AudioRenderer_SetLoudnessGain(OH_AudioRenderer* renderer, float loudnessGain)](#oh_audiorenderer_setloudnessgain) | - | 设置音频播放的响度值。默认的响度值是0.0dB。音频流播放类型必须是音乐[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage).AUDIOSTREAM_USAGE_MUSIC,<br> 电影或视频[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage).AUDIOSTREAM_USAGE_MUSIC,<br> 有声读物(包括听书、相声、评书)、听新闻、播客等[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage).AUDIOSTREAM_USAGE_AUDIOBOOK。<br> 音频流的时延模式必须是普通时延[OH_AudioStream_LatencyMode](capi-native-audiostream-base-h.md#oh_audiostream_latencymode).AUDIOSTREAM_LATENCY_MODE_NORMAL。<br> 本接口不支持通过高清通路播放的音频流设置响度。<br> 由于音频框架与硬件之间存在缓冲区,响度调节实际生效存在延迟,时长取决于缓冲区长度。<br> 建议在不同音频开始播放前预先设置响度,以实现最佳均衡效果。 | 66| [OH_AudioStream_Result OH_AudioRenderer_GetLoudnessGain(OH_AudioRenderer* renderer, float* loudnessGain)](#oh_audiorenderer_getloudnessgain) | - | 获取音频流的响度值。 | 67 68## 函数说明 69 70### OH_AudioRenderer_Release() 71 72``` 73OH_AudioStream_Result OH_AudioRenderer_Release(OH_AudioRenderer* renderer) 74``` 75 76**描述** 77 78释放输出音频流。 79 80**起始版本:** 10 81 82 83**参数:** 84 85| 参数项 | 描述 | 86| -- | -- | 87| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 88 89**返回:** 90 91| 类型 | 说明 | 92| -- | -- | 93| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。 | 94 95### OH_AudioRenderer_Start() 96 97``` 98OH_AudioStream_Result OH_AudioRenderer_Start(OH_AudioRenderer* renderer) 99``` 100 101**描述** 102 103开始输出音频数据。 104 105**起始版本:** 10 106 107 108**参数:** 109 110| 参数项 | 描述 | 111| -- | -- | 112| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 113 114**返回:** 115 116| 类型 | 说明 | 117| -- | -- | 118| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。 | 119 120### OH_AudioRenderer_Pause() 121 122``` 123OH_AudioStream_Result OH_AudioRenderer_Pause(OH_AudioRenderer* renderer) 124``` 125 126**描述** 127 128暂停输出音频流。 129 130**起始版本:** 10 131 132 133**参数:** 134 135| 参数项 | 描述 | 136| -- | -- | 137| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 138 139**返回:** 140 141| 类型 | 说明 | 142| -- | -- | 143| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。 | 144 145### OH_AudioRenderer_Stop() 146 147``` 148OH_AudioStream_Result OH_AudioRenderer_Stop(OH_AudioRenderer* renderer) 149``` 150 151**描述** 152 153停止输出音频流。 154 155**起始版本:** 10 156 157 158**参数:** 159 160| 参数项 | 描述 | 161| -- | -- | 162| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 163 164**返回:** 165 166| 类型 | 说明 | 167| -- | -- | 168| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。 | 169 170### OH_AudioRenderer_Flush() 171 172``` 173OH_AudioStream_Result OH_AudioRenderer_Flush(OH_AudioRenderer* renderer) 174``` 175 176**描述** 177 178清空缓冲区的音频数据。 179 180**起始版本:** 10 181 182 183**参数:** 184 185| 参数项 | 描述 | 186| -- | -- | 187| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 188 189**返回:** 190 191| 类型 | 说明 | 192| -- | -- | 193| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。 | 194 195### OH_AudioRenderer_GetCurrentState() 196 197``` 198OH_AudioStream_Result OH_AudioRenderer_GetCurrentState(OH_AudioRenderer* renderer,OH_AudioStream_State* state) 199``` 200 201**描述** 202 203查询当前输出音频流状态。 204 205**起始版本:** 10 206 207 208**参数:** 209 210| 参数项 | 描述 | 211| -- | -- | 212| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 213| [OH_AudioStream_State](capi-native-audiostream-base-h.md#oh_audiostream_state)* state | 指向一个用来接收音频流状态的变量。 | 214 215**返回:** 216 217| 类型 | 说明 | 218| -- | -- | 219| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 220 221### OH_AudioRenderer_GetSamplingRate() 222 223``` 224OH_AudioStream_Result OH_AudioRenderer_GetSamplingRate(OH_AudioRenderer* renderer, int32_t* rate) 225``` 226 227**描述** 228 229查询当前输出音频流采样率。 230 231**起始版本:** 10 232 233 234**参数:** 235 236| 参数项 | 描述 | 237| -- | -- | 238| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 239| int32_t* rate | 指向一个用来接收音频流采样率的变量。 | 240 241**返回:** 242 243| 类型 | 说明 | 244| -- | -- | 245| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 246 247### OH_AudioRenderer_GetStreamId() 248 249``` 250OH_AudioStream_Result OH_AudioRenderer_GetStreamId(OH_AudioRenderer* renderer, uint32_t* streamId) 251``` 252 253**描述** 254 255查询当前输出音频流ID。 256 257**起始版本:** 10 258 259 260**参数:** 261 262| 参数项 | 描述 | 263| -- | -- | 264| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 265| uint32_t* streamId | 指向一个用来接收音频流ID的变量。 | 266 267**返回:** 268 269| 类型 | 说明 | 270| -- | -- | 271| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 272 273### OH_AudioRenderer_GetChannelCount() 274 275``` 276OH_AudioStream_Result OH_AudioRenderer_GetChannelCount(OH_AudioRenderer* renderer, int32_t* channelCount) 277``` 278 279**描述** 280 281查询当前输出音频流通道数。 282 283**起始版本:** 10 284 285 286**参数:** 287 288| 参数项 | 描述 | 289| -- | -- | 290| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 291| int32_t* channelCount | 指向一个用来接收音频流通道数的变量。 | 292 293**返回:** 294 295| 类型 | 说明 | 296| -- | -- | 297| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 298 299### OH_AudioRenderer_GetSampleFormat() 300 301``` 302OH_AudioStream_Result OH_AudioRenderer_GetSampleFormat(OH_AudioRenderer* renderer,OH_AudioStream_SampleFormat* sampleFormat) 303``` 304 305**描述** 306 307查询当前输出音频流采样格式。 308 309**起始版本:** 10 310 311 312**参数:** 313 314| 参数项 | 描述 | 315| -- | -- | 316| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 317| [OH_AudioStream_SampleFormat](capi-native-audiostream-base-h.md#oh_audiostream_sampleformat)* sampleFormat | 指向一个用来接收音频流采样格式的变量。 | 318 319**返回:** 320 321| 类型 | 说明 | 322| -- | -- | 323| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 324 325### OH_AudioRenderer_GetLatencyMode() 326 327``` 328OH_AudioStream_Result OH_AudioRenderer_GetLatencyMode(OH_AudioRenderer* renderer,OH_AudioStream_LatencyMode* latencyMode) 329``` 330 331**描述** 332 333查询当前输出音频流时延模式。 334 335**起始版本:** 10 336 337 338**参数:** 339 340| 参数项 | 描述 | 341| -- | -- | 342| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 343| [OH_AudioStream_LatencyMode](capi-native-audiostream-base-h.md#oh_audiostream_latencymode)* latencyMode | 指向一个用来接收音频流时延模式的变量。 | 344 345**返回:** 346 347| 类型 | 说明 | 348| -- | -- | 349| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 350 351### OH_AudioRenderer_GetRendererInfo() 352 353``` 354OH_AudioStream_Result OH_AudioRenderer_GetRendererInfo(OH_AudioRenderer* renderer,OH_AudioStream_Usage* usage) 355``` 356 357**描述** 358 359查询当前输出音频流的使用类型。 360 361**起始版本:** 10 362 363 364**参数:** 365 366| 参数项 | 描述 | 367| -- | -- | 368| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 369| [OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage)* usage | 指向一个用来接收输出类型音频流的使用类型的变量。 | 370 371**返回:** 372 373| 类型 | 说明 | 374| -- | -- | 375| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 376 377### OH_AudioRenderer_GetEncodingType() 378 379``` 380OH_AudioStream_Result OH_AudioRenderer_GetEncodingType(OH_AudioRenderer* renderer,OH_AudioStream_EncodingType* encodingType) 381``` 382 383**描述** 384 385查询当前输出音频流编码类型。 386 387**起始版本:** 10 388 389 390**参数:** 391 392| 参数项 | 描述 | 393| -- | -- | 394| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 395| [OH_AudioStream_EncodingType](capi-native-audiostream-base-h.md#oh_audiostream_encodingtype)* encodingType | 指向一个用来接收音频流编码类型的变量。 | 396 397**返回:** 398 399| 类型 | 说明 | 400| -- | -- | 401| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 402 403### OH_AudioRenderer_GetFramesWritten() 404 405``` 406OH_AudioStream_Result OH_AudioRenderer_GetFramesWritten(OH_AudioRenderer* renderer, int64_t* frames) 407``` 408 409**描述** 410 411查询自创建流以来已写入的帧数。 412 413**起始版本:** 10 414 415 416**参数:** 417 418| 参数项 | 描述 | 419| -- | -- | 420| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 421| int64_t* frames | 指向将为帧计数设置的变量的指针。 | 422 423**返回:** 424 425| 类型 | 说明 | 426| -- | -- | 427| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 428 429### OH_AudioRenderer_GetTimestamp() 430 431``` 432OH_AudioStream_Result OH_AudioRenderer_GetTimestamp(OH_AudioRenderer* renderer, clockid_t clockId,int64_t* framePosition, int64_t* timestamp) 433``` 434 435**描述** 436 437获取输出音频流时间戳和位置信息。<br> 该接口可以获取到音频通道实际播放位置(framePosition)以及播放到该位置时候的时间戳(timestamp),时间戳单位为纳秒。<br> 当设备切换或暂停恢复时,由于播放通路本身需要一段时间恢复,调用该接口获取的播放位置和时间戳会短暂地保持在切换或暂停前的状态。<br> 该接口一般用来实现音画同步,建议频率不要太频繁,可以每分钟一次,最好不要低200ms一次。频繁调用可能会带来功耗问题,因此在能保证音画同步效果的情况下,不需要频繁的查询时间戳。 438 439**起始版本:** 10 440 441 442**参数:** 443 444| 参数项 | 描述 | 445| -- | -- | 446| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 447| clockid_t clockId | 时钟标识符,使用CLOCK_MONOTONIC。 | 448| int64_t* framePosition | 指向要接收位置的变量的指针。 | 449| int64_t* timestamp | 指向接收时间戳的变量的指针。 | 450 451**返回:** 452 453| 类型 | 说明 | 454| -- | -- | 455| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数clockId无效。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。 | 456 457### OH_AudioRenderer_GetAudioTimestampInfo() 458 459``` 460OH_AudioStream_Result OH_AudioRenderer_GetAudioTimestampInfo(OH_AudioRenderer* renderer,int64_t* framePosition, int64_t* timestamp) 461``` 462 463**描述** 464 465获取输出音频流时间戳和位置信息,适配倍速接口。<br> 获取输出音频流时间戳和位置信息,通常用于进行音画同步对齐。<br> 注意,当实际播放位置(framePosition)为0时,时间戳(timestamp)是固定值,直到流真正跑起来时才会更新。当调用Flush接口时实际播放位置也会被重置。<br> 当音频流路由(route)变化时,例如设备变化或者输出类型变化时,播放位置也会被重置,但此时时间戳仍会持续增长。推荐当实际播放位置和时间戳的变化稳定后再使用该接口获取的值。该接口适配倍速接口,例如当播放速度设置为2倍时,播放位置的增长速度也会返回为正常的2倍。<br> 466 467**起始版本:** 15 468 469 470**参数:** 471 472| 参数项 | 描述 | 473| -- | -- | 474| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 475| int64_t* framePosition | 指向要接收位置的变量的指针。 | 476| int64_t* timestamp | 指向接收时间戳的变量的指针。 | 477 478**返回:** 479 480| 类型 | 说明 | 481| -- | -- | 482| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数framePosition或timestamp为nullptr。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:当前流状态不为合法状态时返回。<br> AUDIOSTREAM_ERROR_SYSTEM:<br> 1. 系统进程崩溃或被阻塞;<br> 2. 内部系统其他错误。 | 483 484### OH_AudioRenderer_GetFrameSizeInCallback() 485 486``` 487OH_AudioStream_Result OH_AudioRenderer_GetFrameSizeInCallback(OH_AudioRenderer* renderer, int32_t* frameSize) 488``` 489 490**描述** 491 492在回调中查询帧大小,它是一个固定的长度,每次回调都要填充流。 493 494**起始版本:** 10 495 496 497**参数:** 498 499| 参数项 | 描述 | 500| -- | -- | 501| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 502| int32_t* frameSize | 指向将为帧大小设置的变量的指针。 | 503 504**返回:** 505 506| 类型 | 说明 | 507| -- | -- | 508| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 509 510### OH_AudioRenderer_GetSpeed() 511 512``` 513OH_AudioStream_Result OH_AudioRenderer_GetSpeed(OH_AudioRenderer* renderer, float* speed) 514``` 515 516**描述** 517 518获取音频渲染速率。 519 520**起始版本:** 11 521 522 523**参数:** 524 525| 参数项 | 描述 | 526| -- | -- | 527| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 528| float* speed | 指向接收播放倍速值的变量的指针。 | 529 530**返回:** 531 532| 类型 | 说明 | 533| -- | -- | 534| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 535 536### OH_AudioRenderer_SetSpeed() 537 538``` 539OH_AudioStream_Result OH_AudioRenderer_SetSpeed(OH_AudioRenderer* renderer, float speed) 540``` 541 542**描述** 543 544设置音频渲染速率。 545 546**起始版本:** 11 547 548 549**参数:** 550 551| 参数项 | 描述 | 552| -- | -- | 553| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 554| float speed | 设置播放的倍速值(倍速范围:0.25-4.0)。 | 555 556**返回:** 557 558| 类型 | 说明 | 559| -- | -- | 560| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 561 562### OH_AudioRenderer_SetMarkPosition() 563 564``` 565OH_AudioStream_Result OH_AudioRenderer_SetMarkPosition(OH_AudioRenderer* renderer, uint32_t samplePos,OH_AudioRenderer_OnMarkReachedCallback callback, void* userData) 566``` 567 568**描述** 569 570在当前渲染器上设置标记位置。调用此函数将覆盖已设置的标记位置。 571 572**起始版本:** 12 573 574 575**参数:** 576 577| 参数项 | 描述 | 578| -- | -- | 579| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 580| uint32_t samplePos | 设置目标标记位置。 | 581| [OH_AudioRenderer_OnMarkReachedCallback](capi-native-audiostream-base-h.md#oh_audiorenderer_onmarkreachedcallback) callback | 当到达目标标记位置时回调。 | 582| void* userData | 指向通过回调函数传递的应用数据指针。 | 583 584**返回:** 585 586| 类型 | 说明 | 587| -- | -- | 588| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数samplePos无效。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。<br> AUDIOSTREAM_ERROR_SYSTEM:出现系统错误。 | 589 590### OH_AudioRenderer_CancelMark() 591 592``` 593OH_AudioStream_Result OH_AudioRenderer_CancelMark(OH_AudioRenderer* renderer) 594``` 595 596**描述** 597 598取消由[OH_AudioRenderer_SetMarkPosition](#oh_audiorenderer_setmarkposition)设置的标记。 599 600**起始版本:** 12 601 602 603**参数:** 604 605| 参数项 | 描述 | 606| -- | -- | 607| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 608 609**返回:** 610 611| 类型 | 说明 | 612| -- | -- | 613| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 614 615### OH_AudioRenderer_SetVolume() 616 617``` 618OH_AudioStream_Result OH_AudioRenderer_SetVolume(OH_AudioRenderer* renderer, float volume) 619``` 620 621**描述** 622 623设置当前音频流音量值。 624 625**起始版本:** 12 626 627 628**参数:** 629 630| 参数项 | 描述 | 631| -- | -- | 632| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 633| float volume | 设置当前音频流音量,音量值范围[0.0, 1.0]。 | 634 635**返回:** 636 637| 类型 | 说明 | 638| -- | -- | 639| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数volume无效。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。<br> AUDIOSTREAM_ERROR_SYSTEM:出现系统错误。 | 640 641### OH_AudioRenderer_SetVolumeWithRamp() 642 643``` 644OH_AudioStream_Result OH_AudioRenderer_SetVolumeWithRamp(OH_AudioRenderer* renderer, float volume, int32_t durationMs) 645``` 646 647**描述** 648 649在指定时间范围内使用渐变更改音量。 650 651**起始版本:** 12 652 653 654**参数:** 655 656| 参数项 | 描述 | 657| -- | -- | 658| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 659| float volume | 目标音量值,取值范围[0.0, 1.0]。 | 660| int32_t durationMs | 音量渐变的持续时间,以毫秒为单位。 | 661 662**返回:** 663 664| 类型 | 说明 | 665| -- | -- | 666| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数volume无效。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。<br> AUDIOSTREAM_ERROR_SYSTEM:出现系统错误。 | 667 668### OH_AudioRenderer_GetVolume() 669 670``` 671OH_AudioStream_Result OH_AudioRenderer_GetVolume(OH_AudioRenderer* renderer, float* volume) 672``` 673 674**描述** 675 676获取当前音频流音量值。 677 678**起始版本:** 12 679 680 681**参数:** 682 683| 参数项 | 描述 | 684| -- | -- | 685| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 686| float* volume | 指向一个获取当前音频流音量值的指针。音量值的范围是[0.0, 1.0]。 | 687 688**返回:** 689 690| 类型 | 说明 | 691| -- | -- | 692| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数volume为nullptr。 | 693 694### OH_AudioRenderer_GetUnderflowCount() 695 696``` 697OH_AudioStream_Result OH_AudioRenderer_GetUnderflowCount(OH_AudioRenderer* renderer, uint32_t* count) 698``` 699 700**描述** 701 702获取当前播放音频流欠载数。 703 704**起始版本:** 12 705 706 707**参数:** 708 709| 参数项 | 描述 | 710| -- | -- | 711| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 712| uint32_t* count | 指向一个用来接收音频流欠载数的变量的指针。 | 713 714**返回:** 715 716| 类型 | 说明 | 717| -- | -- | 718| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数count为nullptr。 | 719 720### OH_AudioRenderer_GetChannelLayout() 721 722``` 723OH_AudioStream_Result OH_AudioRenderer_GetChannelLayout(OH_AudioRenderer* renderer,OH_AudioChannelLayout* channelLayout) 724``` 725 726**描述** 727 728查询当前音频流声道布局。 729 730**起始版本:** 12 731 732 733**参数:** 734 735| 参数项 | 描述 | 736| -- | -- | 737| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 738| [OH_AudioChannelLayout](../apis-avcodec-kit/_core.md#oh_audiochannellayout-1)* channelLayout | 指向一个用来接收音频流声道布局的变量的指针。 | 739 740**返回:** 741 742| 类型 | 说明 | 743| -- | -- | 744| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 745 746### OH_AudioRenderer_GetEffectMode() 747 748``` 749OH_AudioStream_Result OH_AudioRenderer_GetEffectMode(OH_AudioRenderer* renderer,OH_AudioStream_AudioEffectMode* effectMode) 750``` 751 752**描述** 753 754查询当前音频流音效模式。 755 756**起始版本:** 12 757 758 759**参数:** 760 761| 参数项 | 描述 | 762| -- | -- | 763| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 764| [OH_AudioStream_AudioEffectMode](capi-native-audiostream-base-h.md#oh_audiostream_audioeffectmode)* effectMode | 指向一个用来接收音频流音效模式的变量的指针。 | 765 766**返回:** 767 768| 类型 | 说明 | 769| -- | -- | 770| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 771 772### OH_AudioRenderer_SetEffectMode() 773 774``` 775OH_AudioStream_Result OH_AudioRenderer_SetEffectMode(OH_AudioRenderer* renderer,OH_AudioStream_AudioEffectMode effectMode) 776``` 777 778**描述** 779 780设置当前音频流音效模式。 781 782**起始版本:** 12 783 784 785**参数:** 786 787| 参数项 | 描述 | 788| -- | -- | 789| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 790| [OH_AudioStream_AudioEffectMode](capi-native-audiostream-base-h.md#oh_audiostream_audioeffectmode) effectMode | 设置当前音频流的目标音效模式。 | 791 792**返回:** 793 794| 类型 | 说明 | 795| -- | -- | 796| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 797 798### OH_AudioRenderer_GetRendererPrivacy() 799 800``` 801OH_AudioStream_Result OH_AudioRenderer_GetRendererPrivacy(OH_AudioRenderer* renderer,OH_AudioStream_PrivacyType* privacy) 802``` 803 804**描述** 805 806查询当前播放音频流是否会被其它应用录制。 807 808**起始版本:** 12 809 810 811**参数:** 812 813| 参数项 | 描述 | 814| -- | -- | 815| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 816| [OH_AudioStream_PrivacyType](capi-native-audiostream-base-h.md#oh_audiostream_privacytype)* privacy | 用于返回当前流的内录策略。 | 817 818**返回:** 819 820| 类型 | 说明 | 821| -- | -- | 822| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 823 824### OH_AudioRenderer_SetSilentModeAndMixWithOthers() 825 826``` 827OH_AudioStream_Result OH_AudioRenderer_SetSilentModeAndMixWithOthers(OH_AudioRenderer* renderer, bool on) 828``` 829 830**描述** 831 832设置静音并发播放模式。<br> 当设置为true,打开静音并发播放模式,系统将让此音频流静音播放,并且不会打断其他音频流。设置为false,将关闭静音并发播放,音频流可根据系统焦点策略抢占焦点。 833 834**起始版本:** 12 835 836 837**参数:** 838 839| 参数项 | 描述 | 840| -- | -- | 841| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 842| bool on | 设置当前音频流的静音并发状态。<br> true:设置当前播放的音频流静音播放,并且不会打断其它音频流播放。<br> false:取消当前播放的音频流静音播放,音频流可根据系统焦点策略抢占焦点。 | 843 844**返回:** 845 846| 类型 | 说明 | 847| -- | -- | 848| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 849 850### OH_AudioRenderer_GetSilentModeAndMixWithOthers() 851 852``` 853OH_AudioStream_Result OH_AudioRenderer_GetSilentModeAndMixWithOthers(OH_AudioRenderer* renderer, bool* on) 854``` 855 856**描述** 857 858获取当前音频流是否开启静音并发播放。 859 860**起始版本:** 12 861 862 863**参数:** 864 865| 参数项 | 描述 | 866| -- | -- | 867| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 868| bool* on | 用于返回当前流的静音并发状态。返回true表示打开,返回false表示关闭。 | 869 870**返回:** 871 872| 类型 | 说明 | 873| -- | -- | 874| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。 | 875 876### OH_AudioRenderer_SetDefaultOutputDevice() 877 878``` 879OH_AudioStream_Result OH_AudioRenderer_SetDefaultOutputDevice(OH_AudioRenderer* renderer, OH_AudioDevice_Type deviceType) 880``` 881 882**描述** 883 884设置默认本机内置发声设备。<br> 本接口仅适用于音频流类型[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage)为语音消息、VoIP语音通话或者VoIP视频通话的场景使用,以及可选的设备类型为听筒、扬声器和系统默认设备。<br> 本接口允许在AudioRenderer创建以后的任何时间被调用,系统会记录应用设置的默认本机内置发声设备。在应用启动播放时,若有外接设备如蓝牙耳机/有线耳机接入,系统优先从外接设备发声;否则系统遵循应用设置的默认本机内置发声设备发声。<br> 885 886**起始版本:** 12 887 888 889**参数:** 890 891| 参数项 | 描述 | 892| -- | -- | 893| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 894| [OH_AudioDevice_Type](capi-native-audio-device-base-h.md#oh_audiodevice_type) deviceType | 指向[OH_AudioDevice_Type](capi-native-audio-device-base-h.md#oh_audiodevice_type)用于设置发声设备类型。可设置的设备类型包括:<br> AUDIO_DEVICE_TYPE_EARPIECE:听筒<br> AUDIO_DEVICE_TYPE_SPEAKER:扬声器<br> AUDIO_DEVICE_TYPE_DEFAULT:系统默认设备 | 895 896**返回:** 897 898| 类型 | 说明 | 899| -- | -- | 900| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数deviceType无效。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常。<br> AUDIOSTREAM_ERROR_SYSTEM:出现系统错误。 | 901 902### OH_AudioRenderer_OnInterruptCallback() 903 904``` 905typedef void (*OH_AudioRenderer_OnInterruptCallback)(OH_AudioRenderer* renderer, void* userData,OH_AudioInterrupt_ForceType type, OH_AudioInterrupt_Hint hint) 906``` 907 908**描述** 909 910音频流中断事件回调函数。 911 912**起始版本:** 20 913 914 915**参数:** 916 917| 参数项 | 描述 | 918| -- | -- | 919| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 920| void* userData | 指向应用自定义的数据存储区域。 | 921| [OH_AudioInterrupt_ForceType](capi-native-audiostream-base-h.md#oh_audiointerrupt_forcetype) type | 音频流中断类型。 | 922| [OH_AudioInterrupt_Hint](capi-native-audiostream-base-h.md#oh_audiointerrupt_hint) hint | 音频流中断提示类型。 | 923 924### OH_AudioRenderer_OnErrorCallback() 925 926``` 927typedef void (*OH_AudioRenderer_OnErrorCallback)(OH_AudioRenderer* renderer, void* userData,OH_AudioStream_Result error) 928``` 929 930**描述** 931 932音频流错误事件回调函数。 933 934**起始版本:** 20 935 936 937**参数:** 938 939| 参数项 | 描述 | 940| -- | -- | 941| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 942| void* userData | 指向应用自定义的数据存储区域。 | 943| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) error | 音频流播放错误结果。 | 944 945### OH_AudioRenderer_GetFastStatus() 946 947``` 948OH_AudioStream_Result OH_AudioRenderer_GetFastStatus(OH_AudioRenderer* renderer,OH_AudioStream_FastStatus* status) 949``` 950 951**描述** 952 953获取音频播放过程中的运行状态,是否在低时延状态下工作。 954 955**起始版本:** 20 956 957 958**参数:** 959 960| 参数项 | 描述 | 961| -- | -- | 962| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 963| [OH_AudioStream_FastStatus](capi-native-audiostream-base-h.md#oh_audiostream_faststatus)* status | 指向接收低时延状态的指针。 | 964 965**返回:** 966 967| 类型 | 说明 | 968| -- | -- | 969| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:参数renderer为nullptr。<br> AUDIOSTREAM_ERROR_ILLEGAL_STATE:执行状态异常,仅在释放状态之前可用。 | 970 971### OH_AudioRenderer_OnFastStatusChange() 972 973``` 974typedef void (*OH_AudioRenderer_OnFastStatusChange)(OH_AudioRenderer* renderer,void* userData,OH_AudioStream_FastStatus status) 975``` 976 977**描述** 978 979音频播放过程中低时延状态改变事件的回调函数。 980 981**起始版本:** 20 982 983 984**参数:** 985 986| 参数项 | 描述 | 987| -- | -- | 988| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 989| void* userData | 指向应用自定义的数据存储区域。 | 990| status | 返回当前低时延状态。 | 991 992### OH_AudioRenderer_SetLoudnessGain() 993 994``` 995OH_AudioStream_Result OH_AudioRenderer_SetLoudnessGain(OH_AudioRenderer* renderer, float loudnessGain) 996``` 997 998**描述** 999 1000设置音频播放的响度值。默认的响度值是0.0dB。音频流播放类型必须是音乐[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage).AUDIOSTREAM_USAGE_MUSIC,<br> 电影或视频[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage).AUDIOSTREAM_USAGE_MUSIC,<br> 有声读物(包括听书、相声、评书)、听新闻、播客等[OH_AudioStream_Usage](capi-native-audiostream-base-h.md#oh_audiostream_usage).AUDIOSTREAM_USAGE_AUDIOBOOK。<br> 音频流的时延模式必须是普通时延[OH_AudioStream_LatencyMode](capi-native-audiostream-base-h.md#oh_audiostream_latencymode).AUDIOSTREAM_LATENCY_MODE_NORMAL。<br> 本接口不支持通过高清通路播放的音频流设置响度。<br> 由于音频框架与硬件之间存在缓冲区,响度调节实际生效存在延迟,时长取决于缓冲区长度。<br> 建议在不同音频开始播放前预先设置响度,以实现最佳均衡效果。 1001 1002**起始版本:** 20 1003 1004 1005**参数:** 1006 1007| 参数项 | 描述 | 1008| -- | -- | 1009| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 1010| float loudnessGain | 设置播放的响度值(响度值范围为[-90.0, 24.0],单位为dB)。 | 1011 1012**返回:** 1013 1014| 类型 | 说明 | 1015| -- | -- | 1016| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr,或音频流不支持设置响度;<br> 2. 参数loudnessGain不在响度值范围内。 | 1017 1018### OH_AudioRenderer_GetLoudnessGain() 1019 1020``` 1021OH_AudioStream_Result OH_AudioRenderer_GetLoudnessGain(OH_AudioRenderer* renderer, float* loudnessGain) 1022``` 1023 1024**描述** 1025 1026获取音频流的响度值。 1027 1028**起始版本:** 20 1029 1030 1031**参数:** 1032 1033| 参数项 | 描述 | 1034| -- | -- | 1035| [OH_AudioRenderer](capi-ohaudio-oh-audiorendererstruct.md)* renderer | 指向[OH_AudioStreamBuilder_GenerateRenderer](capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_generaterenderer)创建的音频流实例。 | 1036| float* loudnessGain | 指向接收播放响度值的变量的指针。 | 1037 1038**返回:** 1039 1040| 类型 | 说明 | 1041| -- | -- | 1042| [OH_AudioStream_Result](capi-native-audiostream-base-h.md#oh_audiostream_result) | AUDIOSTREAM_SUCCESS:函数执行成功。<br> AUDIOSTREAM_ERROR_INVALID_PARAM:<br> 1. 参数renderer为nullptr;<br> 2. 参数loudnessGain为nullptr。 | 1043 1044 1045