Cordova and Tone.js "Error: buffer is either not set or not loaded" when i try to load an mp3 file

Cordova and Tone.js "Error: buffer is either not set or not loaded" when i try to load an mp3 file

也许你可以帮帮我,我一直在寻找所有的信息,以解决我的这个问题,但是没有,我不能用 cordova 播放器...

实际上我无法加载 mp3 文件,无论它们是本地还是远程,我总是得到这个错误:“错误:缓冲区未设置或未加载”,路径中的文件在那里。

我尝试使用 Tone 的示波器来查看我是否在加载 Tone 时遇到问题,但这工作正常。

这是否取决于某些授权,特别是我可能会丢失?

例如,使用 cordova 媒体插件我可以重现音频,但我需要使用 Tonejs。

你有什么想法,这可能取决于什么。或者我可以尝试做什么? ...

即使是这个简单的例子,设备准备就绪后也不会去:

const player = new Tone.Player("https://tonejs.github.io/audio/berklee/gong_1.mp3") .toDestination();
   Tone.loaded().Then(() => {
       player.start ();
   });

已经使用过 Tone 和 Cordova 的你,希望它能以某种方式使用,如果你有任何想法,请告诉我,提前谢谢!

--- 更新:

目前,当应用程序启动时,我的行为是这样的(我声明这是为网站开发的代码的移植,并且加载它时一切正常,等等):

let myLoader_File = function functionOne(test) {
    var androidFixPath = cordova.file.applicationDirectory
    console.log("Entered function");
    return new Promise((resolve, reject) => {
    let CaricatorePlayers = new Tone.Players({
            Beep: androidFixPath + "sample/Beep.mp3",
            Clave: androidFixPath + "sample/Clave.mp3",
        }).toDestination();
        resolve(
            CaricatorePlayers
            //"ok tutti i file sono stati caricati!"
        );
        reject("si è verificato un errore!");
    });
};


function onDeviceReady() {
    $('#fade-wrapper-flash').fadeOut(1000);
    $('#fade-wrapper').fadeIn();

    //attach a click listener to a start button
    document.querySelector('#fade-wrapper').addEventListener('click', async () => {
        await Tone.start();
        console.log('audio is ready');
        myLoader_File().then((res) => {
            console.log(`The function recieved with value ${res}`)
            MultiPlayers = res;
            console.log(MultiPlayers)
            try {
                // Play
                MultiPlayers.player("Beep").start();
                $('#fade-wrapper').fadeOut();
                preLoad();
            } catch (error) {
                console.log(error);
                console.log("IN ERRORE RICARICO");
            }
        }).catch((error) => {
            console.log(`Handling error as we received ${error}`);
            console.log("IN ERRORE RICARICO");
            $('#fade-wrapper').fadeIn();
        });
    });
}

我发布了一个答案,,也解决了这个问题。

我不知道解决方案是唯一可行的方法还是最好的方法, 为了在本地访问文件夹,我对调用进行了这些更改。使用 XMLHttpRequest 对象 可以使用它从 Web 服务器请求数据,我得到了一个 Blob 对象,然后将其传递给 Tone 播放器。