在使用官方base64 audio播放例子时,在特定一款安卓手机上报错 setDataSourceFD failed.:status=0x80000000,其中极少数音频数据能播放成功
其他所有安卓手机,及苹果手机均未出现该问题(已用大量相同音频数据测试)
手机型号为 小米8 miui10.0.6稳定版 android8.1.0
代码如下:
dataURL2Audio(base64Str, function(entry) {
var player = plus.audio.createPlayer(path);
player.play(function() {
player = null;
}, function(e) {
mui.alert("播放失败:" + path + e.message);
});
})
function dataURL2Audio(base64Str, callback) {
var base64Str = base64Str.replace('data:audio/amr;base64,', '');
var audioName = (new Date()).valueOf() + '.amr';
plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
fs.root.getFile(audioName, {
create: true
}, function(entry) {
// 获得平台绝对路径
var fullPath = entry.fullPath;
if(mui.os.android) {
// 读取音频
var Base64 = plus.android.importClass("android.util.Base64");
var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");
try {
var out = new FileOutputStream(fullPath);
var bytes = Base64.decode(base64Str, Base64.DEFAULT);
out.write(bytes);
out.close();
// 回调
callback && callback(entry);
} catch(e) {
console.log(e.message);
}
}
})
})
}
[QQ]
759493637
求解答
7***@qq.com (作者)
我android单独处理的,把amr格式转为mp3然后用audio标签播放的
2018-11-27 16:39
7***@qq.com
噢噢,谢谢啦
2018-11-28 09:08