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 播放器。
也许你可以帮帮我,我一直在寻找所有的信息,以解决我的这个问题,但是没有,我不能用 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 播放器。