- Nek,
Bonjour tout le monde,
Je créé un encodeur audio, et j'utilise libmp3lame-js. Avec Chrome ça a l'air de bien se passer, cependant sur mobile et firefox ça plante. A tel point que sur desktop firefox ça plante tout l'ordinateur !
En fait j'ai une memory leak flagrante (quand je lance le script avec 2Go de ram occupé, il passe instantanément à 5Go de ram utilisée). Cependant je ne sais pas d'où ça vient, sachant en plus que le tout fonctionne bien sous chrome.
Je pensais que les workers fonctionnaient en queue, c'est à dire qu'à chaque postMessage
l'instruction était mise en queue, ais-je tord ? (je n'ai pas trouvé d'article ni de code contredisant cela)
En outre cela ne devrait pas créer de fuite de mémoire mais simplement ralentir l'ordinateur.
Je vous donne des bouts de code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // worker.js var data = []; function encodeSample(inputBuffer) { // In case of mp3 recording var mp3data = Lame.encode_buffer_ieee_float(mp3codec, inputBuffer[0], inputBuffer[1]); var length = mp3Data.length; for(var i=0;i<length;i++) { data.push(mp3Data[i]); } } function exportMp3() { var mp3data = Lame.encode_flush(mp3codec); var length = mp3Data.length; for(var i=0;i<length;i++) { data.push(mp3Data[i]); } this.postMessage(new Blob([new Uint8Array(data)], { type: 'audio/mp3' })); Lame.close(mp3codec); mp3codec = null; } |
J'espère que vous pourrez m'aider :/ . Merci d'avance.
[edit] ça ne plante que sous firefox linux et browsers android, sous windows ça fonctionne.