我目前有一个字节数组形式的 PCM 音频。格式是有符号的 16 位小端。我想将其转换为 Android 上的一些可播放格式,最好是 3.2 或更高版本。有人对如何做到这一点有建议吗?我做了一些研究并尝试了以下方法,但没有一个成功。如果有人能提出更好的方法或指出我哪里出错了,将不胜感激。
我尝试使用正确的音频设置创建 AudioFormat,但是 Android 不支持 javax.sound.sampled 库。
我也尝试将 PCM 数据写入波形文件,但在获取所有必要的 wav 标头信息时遇到了麻烦。
我还尝试使用 Android 提供的 AudioTrack 类来播放 PCM 数据。然而,我似乎听不到任何声音。这是我的方法:
public void playback(){
try{
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 500000, AudioTrack.MODE_STATIC);
audioTrack.write(audio, 0, 500000);
} catch(Throwable t){
Log.d("Audio","Playback Failed");
}
}
任何建议,将不胜感激。