我的数据库有很多 base64 格式的短音频。我想在单击按钮时播放音频。基本上,我写了这段代码,但它不起作用。 (如果可能,文件最好不要写入存储,因为这个过程有延迟)
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
String url = "data:audio/mp3;base64,"+base64FormattedString;
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
}
catch(Exception e){
e.printStackTrace();
}
}
});
堆栈跟踪在这里:https://gist.github.com/AliAtes/aa46261aba3d755fbbd1eba300356a5f
最佳答案
根据您的 API 约束,您可以使用 AudioTrack .此外,这很容易。使用 AudioTrack
,您可以播放自 API 3 以来的 byte[]
音频数据。
您只需使用音频样本特性初始化您的 AudioTrack
对象:
AudioTrack audioTrack = new AudioTrack(...);
并调用:
audioTrack.play();
然后,解码您的 Base64 数据:
byte[] data = Base64.decode(yourBase64AudioSample, Base64.DEFAULT);
并放入audioTrack
中播放:
int iRes = audioTrack.write(data, 0, data.length);
和 TADAAA :)
...不要忘记在播放后释放:
audioTrack.release();
关于java - 通过解码 Base64 播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42853981/