私はWeb Audio APIを使って学習しています。素晴らしいです。 私はオーディオストリームのFFTを分析し、リアルタイムでいくつかの計算を行ういくつかのコードを持っています。それはブラウザで動作します。PhantomJSはMP3ファイルのFFTデータを解析して保存します
しかし、私は同じことをする必要がありますが、オーディオファイル全体を処理し、データの配列を取得し、それを再生してリアルタイムで分析し、最良の場合はPhantomjsで行います。それが不可能な場合は、ブラウザでもOKです。..
サンプルコード:
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を使用しています。 要求は1秒あたり30回のデータを取得することです。それが可能であれば
、どのようにこのコードを書き換えると、いくつかのtxtファイルまたは標準出力にデータを保存し ./phantomappのfile.mp3 のようにそれを実行するには?
ファントムでは不可能な場合は、このコードをブラウザで実行する方法を教えてください。
おかげ
PhantomJSは現在オーディオとビデオをサポートしていません。おそらく、ElectronやNW.jsを見ているかもしれませんか? – Vaviloff
あなたはサーバーの右側ですか?まずffmpegのおかげであなたのmp3を生のwavに解凍します。この生のwavを分析する方が簡単です。いくつかのノードパッケージ:https://www.npmjs.com/browse/keyword/fft – Kaiido