# AudioRenderer播放音频有杂音

#### 问题现象

使用AudioRenderer播放音频数据时，会出现杂音。

#### 背景知识

AudioRenderer：用于音频输出的ArkTS/JS API，仅支持PCM格式，需要应用持续写入音频数据进行工作。应用可以在输入前添加数据预处理，如设定音频文件的采样率、位宽等，要求开发者具备音频处理的基础知识，适用于更专业、更多样化的媒体播放应用开发。

#### 问题定位

1.  检查播放音频格式：
    
    AudioRenderer仅支持播放PCM格式的音频文件，播放其他格式的音频会由于无法解析而输出杂音。
    
2.  检查音频播放参数配置：
    
    在参数配置时，如果设置的声道数、声道布局以及采样率等和需要播放的音频不一致，会导致音频播放速度、声音不正常，出现杂音现象。
    
3.  检查音频数据写入情况：
    
    调用on('writeData')方法，订阅监听音频数据写入回调并返回回调结果，系统可以根据返回的值来决定此次回调中的数据是否播放。
    
    *   能填满回调所需长度数据的情况下，返回audio.AudioDataCallbackResult.VALID，系统会取用完整长度的数据缓冲进行播放。如果在未填满数据的情况下返回audio.AudioDataCallbackResult.VALID，会导致杂音、卡顿等现象。
    *   回调函数结束后，音频服务会把缓冲中数据放入队列里等待播放，因此请勿在回调外再次更改缓冲中的数据。对于最后一帧，如果数据不够填满缓冲长度，需要使用剩余数据拼接空数据的方式，将缓冲填满，避免缓冲内的历史脏数据对播放效果产生不良的影响。

#### 分析结论

造成AudioRenderer播放杂音情况较多，需要根据上述问题定位场景逐一排查。

#### 修改建议

按照问题定位步骤排查修改，完整示例代码可以参考官方文档：使用AudioRenderer开发音频播放功能完整示例。