J'apprends/je joue avec l'API Web Audio et c'est génial. J'ai du code qui analyse la FFT du flux audio et fait des calculs en temps réel. Il fonctionne dans le navigateur.PhantomJS analyse les données FFT du fichier mp3 et enregistrez-le
Mais maintenant je dois faire la même chose, mais traiter l'ensemble du fichier audio et obtenir un tableau de données, au lieu de le jouer et analyser en temps réel, et le meilleur des cas dans Phantomjs. S'il est impossible, votre navigateur est compatible aussi ..
Exemple de code:
var audioElement = document.getElementById("player");
var audioContext = new AudioContext();
var source = audioContext.createMediaElementSource(audioElement);
analyserNode = audioContext.createAnalyser();
analyserNode.fftSize = 2048;
source.connect(analyserNode);
source.connect(audioContext.destination);
analyserNode.connect(audioContext.destination);
et la fonction boucle:
var freqByteData = new Uint8Array(analyserNode.frequencyBinCount);
analyserNode.getByteFrequencyData(freqByteData);
//do processing FFT data
Maintenant je dois charger un fichier mp3, et traiter une fonction en boucle pour obtenir un tableau de données de résultats. Donc, ne pas attendre pendant le jeu, mais le traiter immédiatement.
Le problème est que je n'ai jamais essayé les fantômes. J'ai besoin de résultats exacts comme le fait le navigateur, aussi j'utilise les algorithNode.smoothingTimeConstant dans mes calculs. L'exigence est d'obtenir des données 30 fois par seconde.
Si c'est possible, comment réécrire ce code et l'exécuter comme ./phantomapp file.mp3 qui enregistre des données dans un fichier txt ou stdout?
Si ce n'est pas possible avec phantomjs, comment adopter ce code pour fonctionner dans le navigateur?
Merci
PhantomJS ne prend pas en charge l'audio et la vidéo actuellement. Peut-être jeter un oeil à Electron et/ou NW.js? – Vaviloff
Donc, vous êtes serveur côté droit? Commencez par décompresser votre mp3 en wav cru grâce à ffmpeg. Ensuite, l'analyse de ce wav brut est plus facile. Quelques paquets de noeuds: https://www.npmjs.com/browse/keyword/fft – Kaiido