• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 音频时延管理
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支持两种模式:普通模式(AUDIOSTREAM_LATENCY_MODE_NORMAL)和低时延模式(AUDIOSTREAM_LATENCY_MODE_FAST)。
14
15开发者通过调用[OH_AudioStreamBuilder_SetLatencyMode()](../../reference/apis-audio-kit/capi-native-audiostreambuilder-h.md#oh_audiostreambuilder_setlatencymode),设置[OH_AudioStream_LatencyMode](../../reference/apis-audio-kit/capi-native-audiostream-base-h.md#oh_audiostream_latencymode),来决定音频流使用哪种模式。
16
17低时延模式通过读写数据架构优化,使得该模式下音频播放和录制具有更低的时延。
18
19为使用低时延模式,开发者需要使用OHAudio进行音频开发,可参考[使用OHAudio开发音频播放功能](using-ohaudio-for-playback.md)和[使用OHAudio开发音频录制功能](using-ohaudio-for-recording.md)。设置低时延模式开发示例:
20
21```cpp
22OH_AudioStream_LatencyMode latencyMode = AUDIOSTREAM_LATENCY_MODE_FAST;
23OH_AudioStreamBuilder_SetLatencyMode(builder, latencyMode);
24```
25
26应用可以通过[GetLatencyMode](../../reference/apis-audio-kit/capi-native-audiorenderer-h.md#oh_audiorenderer_getlatencymode)查询当前时延模式,开发示例:
27
28```cpp
29OH_AudioStream_Result OH_AudioRenderer_GetLatencyMode(OH_AudioRenderer *renderer, OH_AudioStream_LatencyMode *latencyMode);
30```
31
32在低时延模式下,应用需要每5ms提供一次数据,如果送数据不及时可能导致杂音等问题。
33
34但在以下场景中,即使设置了低时延模式,系统仍会使用普通模式:
35
36- 当前设备不支持低时延模式。
37- 采样率设置为非48K。
38- 系统低时延资源已被全部占用。
39
40游戏类应用对时延要求较高,建议使用低时延模式。