uni-app plus.audio.createPlayer 播放音频十几次后提示未知错误

uni-app plus.audio.createPlayer 播放音频十几次后提示未知错误

开发环境 版本号 项目创建方式
HBuilderX 4.14 云端

示例代码:

function PalyMp3(type) {  
    var mp3 = "";  

    if (type == "OK") {  
        mp3 = "ScanOK.mp3";  
    } else {  
        mp3 = "ScanNG.mp3";  
    }  

    var p = plus.audio.createPlayer("_www/Voice/" + mp3);  

    p.play(function() {  
        console.log("播放成功");  
        //p.close();  
        //mui.toast("播放成功");  
    }, function(e) {  
        console.log("播放失败;" + JSON.stringify(e));  
        mui.toast(e.message);  
    });  
}

操作步骤:

function PalyMp3(type) {  
    var mp3 = "";  

    if (type == "OK") {  
        mp3 = "ScanOK.mp3";  
    } else {  
        mp3 = "ScanNG.mp3";  
    }  

    var p = plus.audio.createPlayer("_www/Voice/" + mp3);  

    p.play(function() {  
        console.log("播放成功");  
        //p.close();  
        //mui.toast("播放成功");  
    }, function(e) {  
        console.log("播放失败;" + JSON.stringify(e));  
        mui.toast(e.message);  
    });  
}

预期结果:

播放成功

实际结果:

播放失败;{"code":-99,"message":"未知错误"}

bug描述:

plus.audio.createPlayer 播放音频十几次后提示未知错误

更多关于uni-app plus.audio.createPlayer 播放音频十几次后提示未知错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

楼主,这问题有解决吗

更多关于uni-app plus.audio.createPlayer 播放音频十几次后提示未知错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在我这边,一定程度上解决了这个问题
function PalyMp3() { //index += 1; var f = “_www/Voice/error1.mp3”; if (mp3player == null) mp3player = plus.audio.createPlayer(f);
var option = mp3player.getStyles();
option.backgroundControl = true;
option.src = f;
option.autoplay = false;
mp3player.setStyles(option);
mp3player.play(() => {
//console.log(index);
}, (e) => {
mui.toast(e.message);
//console.log(“p0:播放失败;” + e.message + “:” + index);
});
}

在使用 uni-appplus.audio.createPlayer 播放音频时,如果播放十几次后出现“未知错误”,可能是由于以下原因导致的:

1. 资源未释放

  • 每次创建音频播放器后,如果没有正确释放资源,可能会导致内存泄漏或资源耗尽。
  • 解决方案:在播放结束后,调用 player.destroy() 方法释放资源。
const player = plus.audio.createPlayer('path/to/audio.mp3');
player.play();
player.onEnded(() => {
    player.destroy(); // 释放资源
});

2. 音频文件路径问题

  • 如果音频文件路径不正确或文件损坏,可能会导致播放失败。
  • 解决方案:确保音频文件路径正确,并且文件可以正常播放。

3. 并发播放限制

  • 某些平台可能对同时播放的音频数量有限制,如果创建了过多的音频播放器,可能会导致错误。
  • 解决方案:确保每次只播放一个音频,或在播放新音频前停止并释放之前的播放器。
let currentPlayer = null;

function playAudio(path) {
    if (currentPlayer) {
        currentPlayer.stop();
        currentPlayer.destroy();
    }
    currentPlayer = plus.audio.createPlayer(path);
    currentPlayer.play();
    currentPlayer.onEnded(() => {
        currentPlayer.destroy();
        currentPlayer = null;
    });
}

4. 平台限制

  • 不同平台(如 iOS 和 Android)对音频播放的实现可能有所不同,某些平台可能存在特定的限制或问题。
  • 解决方案:检查平台的文档或社区,看看是否有相关的已知问题或解决方案。

5. 内存泄漏

  • 如果频繁创建音频播放器而不释放资源,可能会导致内存泄漏,最终导致应用程序崩溃或出现“未知错误”。
  • 解决方案:使用开发者工具(如 Chrome DevTools 或 HBuilderX 的调试工具)检查内存使用情况,确保没有内存泄漏。

6. 日志记录

  • 在出现错误时,记录详细的日志信息,以便更好地定位问题。
  • 解决方案:在 player.onError 回调中记录错误信息。
player.onError((error) => {
    console.error('Audio player error:', error);
});

7. 更新 uni-app 和 HBuilderX

  • 如果使用的是旧版本的 uni-appHBuilderX,可能存在已知的 bug。尝试更新到最新版本,看看问题是否得到解决。

8. 使用其他音频播放库

  • 如果问题依然存在,可以考虑使用其他音频播放库,如 uni-appuni.createInnerAudioContext
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.src = 'path/to/audio.mp3';
innerAudioContext.play();
回到顶部