J'ai besoin de charger un mp3, le découper et le jouer en utilisant web audio, sur firefox une tranche mp3 n'importe où et décoder le travail bien, mais sur le safari une erreur avec la valeur nulle se produit. Existe-t-il une astuce ou un moyen de découper le ArrayBuffer sur Safari?Slice ArrayBuffer avec Safari et jouer
player.loadMp3 = function(url, callback) {
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
request.onload = function() {
var mp3slice = request.response.slice(1000,100000);
player.context.decodeAudioData(mp3slice); // context is webkitAudioContext on safari
callback();
};
request.send();
};
Je dois créer un lecteur mp3 avec quelques fonctionnalités Especial:
- Time Shift la musique (comme http://codepen.io/eranshapira/pen/mnuoB)
- écart Supprimer entre les musiques (je suis arrivé ce ArrayBuffers à trancher et rejoindre ensuite avec un blob, mais seulement en safary/IPAD ne fonctionne pas).
- Cross plate-forme (IPAD et Android.J'utilise Apache Cordova pour cela).
Solution
player.loadMp3 = function(url, callback) {
console.log("loading " + url);
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
request.onload = function() {
console.log("loaded");
console.log("decoding...");
player.context.decodeAudioData(request.response, function(buffer) {
console.log("decoded");
player.buffer = player.joinAudioBuffers(player.buffer,buffer,2000000);
player.duration += player.buffer.duration;
player.time = minsSecs(player.buffer.duration);
console.log("concatenated");
callback();
});
}, function() {
alert("decode failure");
};
request.send();
};
Je mets à jour ma question avec plus d'informations, merci pour tout! – JoeLoco
@CrazyJoe, la nouvelle information n'affecte pas ma réponse, mais j'ai ajouté du code pour montrer ce que je veux dire. – aldel
ok, je résous le problème en utilisant une solution similaire, merci. – JoeLoco