这可能是由于用Base64.decode()解码后的音频数据格式不正确导致的。AudioTrack需要正确的音频格式才能正常播放。\n\nBase64.decode()方法返回的是一个字节数组(byte array),而AudioTrack需要的是一个原始的PCM音频数据。所以需要确保解码后的音频数据是正确的PCM格式。\n\n你可以尝试将解码后的音频数据转换为PCM格式,然后再使用AudioTrack进行播放。可以使用Android提供的AudioFormat类来指定PCM音频的格式,例如采样率、声道配置等。\n\n以下是一个示例代码,演示如何将解码后的音频数据转换为PCM格式,并使用AudioTrack进行播放:\n\njava\n// 解码base64音频数据\nbyte[] decodedData = Base64.decode(base64Audio, Base64.DEFAULT);\n\n// 配置音频参数\nint sampleRate = 44100; // 采样率\nint channelConfig = AudioFormat.CHANNEL_OUT_MONO; // 声道配置\nint audioFormat = AudioFormat.ENCODING_PCM_16BIT; // 音频格式\n\n// 计算缓冲区大小\nint bufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat);\n\n// 创建AudioTrack对象\nAudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, audioFormat, bufferSize, AudioTrack.MODE_STREAM);\n\n// 开始播放\naudioTrack.play();\n\n// 写入音频数据\naudioTrack.write(decodedData, 0, decodedData.length);\n\n// 停止播放\naudioTrack.stop();\naudioTrack.release();\n\n\n这样应该能够解决AudioTrack播放出现杂音的问题。


原文地址: https://www.cveoy.top/t/topic/pSxY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录