[英]PhantomJS analyze FFT data of mp3 file and save it
我正在學習/使用Web Audio API玩,它很棒。 我有一些代碼,可以分析音頻流的FFT並實時進行一些計算。 它在瀏覽器中運行。
但是現在我需要做同樣的事情,但是要處理整個音頻文件並獲取數據數組,而不是實時播放和分析數據,最好是在Phantomjs中進行。 如果不可能,瀏覽器也可以。
樣例代碼:
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);
和循環功能:
var freqByteData = new Uint8Array(analyserNode.frequencyBinCount);
analyserNode.getByteFrequencyData(freqByteData);
//do processing FFT data
現在,我需要加載一個mp3文件,並對其執行循環功能,以獲取結果數據數組。 因此,播放時不要等待,而要立即處理。
問題是,我從未嘗試過phantomjs。 我需要與瀏覽器一樣的精確結果,我也在計算中使用了analyserNode.smoothingTimeConstant。 要求是每秒獲取30次數據。
如果可能,如何重寫此代碼並像./phantomapp file.mp3一樣運行它,以將數據保存到某些txt文件或stdout?
如果phantomjs無法實現,如何采用此代碼在瀏覽器中運行?
謝謝
Github上有一個項目: https : //github.com/sebpiq/node-web-audio-api
其中聲稱“ Web音頻API的Node.js實現”。
警告:“而且這甚至都不是alpha。僅當您喜歡冒險時才使用此庫。”
這是一個相關的SO問題: 為什么Node.js不支持Web Audio API?
對phantomjs一無所知,但是如果您可以使用decodeAudioData
將整個文件加載到內存中,則可以使用OfflineAudioContext
處理該文件。 這將盡快運行。 使用OfflineAudioContext.suspend(time)
停止處理,因此您可以在正確的時間調用AnalyserNode.getByteFrequencyData(freqByteData)
以獲取頻率數據。 然后在適當的時間安排一個暫停,然后從該暫停中resume()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.