更新日: 2023年5月15日
MP3フレームをデコードするためのJavaScriptクラス。
import MP3 from "mp3/decode";
constructor
は引数を取りません。
const mp3 = new MP3;
close
メソッドはすべてのリソースを解放します。MP3デコーダーはメモリを予約するため、使用後はメモリを解放するために閉じることが重要です。
mp3.close();
decode
メソッドは単一のMP3フレームをデコードします。出力は常にモノラルです(必要に応じて簡単に変更できます)。
mp3.decode(inputFrame, outputBuffer);
decode
メソッドは使用されたバイト数を返すか、フレームをデコードできなかった場合は0を返します。デコードされたサンプル数は出力バッファのsamples
プロパティとして設定されます。samples
は通常MP3では1152ですが、ビットストリームでは他の小さい値も含まれることがあります。
バッファをスキャンしてMP3フレームの開始位置を見つけ、ビットレート、サンプルレート、チャンネル数などのヘッダー情報を抽出する静的なscan
メソッドがあります。
let found = MP3.scan(buffer, start, end[, info]);
フレームが見つからなかった場合、戻り値は undefined
です。見つかった場合はオブジェクトが返されます。このオブジェクトには、入力バッファ内のフレームのオフセットとサイズを示す position
と length
プロパティがあります。length
の値は推定値であり、常にフレームのサイズ以上である必要があります。フレームの実際の終了位置を決定するには、decode
メソッドの戻り値を使用します。
MP3デコーダーはlibmadを使用しており、特にEarle F. Philhower, IIIによるESP8266用に最適化されたものをフォークしています。Moddable SDKではESP8266上での使用を意図していませんが、そのメモリ最適化を受け入れています。使用されているタグは ESP8266Audio リポジトリ の12131e9です。Moddable SDKのビルド環境に合わせた調整を除いて、ソースに変更はありません。この素晴らしい作品を提供してくれたEarleに感謝します。
libmad MP3デコーダーはGPLライセンスを使用しています。このモジュールを商用プロジェクトに組み込む場合は、これを考慮してください。