簡體   English   中英

PhantomJS分析mp3文件的FFT數據並保存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM