Closed2

wavファイルにメタデータを書き込む

IMAIMA

目的

wavファイルでメタデータを自由に登録できるかを調査する。

やりたいこと

wavファイルに「録音日時:2023/4/13」的な情報を複数登録して、
単体のwavファイルから複数の情報を取得したい。

調査

music-metadataライブラリでメタデータをさわれそうな雰囲気だったが、読み取り専用のよう。

ffmpegを使用すればよいというのも見かけたが、
ffmpegはバグが多いらしいので別の方法を見つけたい。

wavefileライブラリを試す。

結論

wavefileの「Add RIFF tags to files」の機能でwavファイルのインスタンスにタグを編集することができた。

以下のコードで実装可能。
情報を付与した新規wavファイルを作成した後、元のwavファイルは削除する。

const WaveFile = require("wavefile").WaveFile;
const fs = require("fs");

const FILE_NAME = "demo";

(async () => {
  try {
    // wavファイルの読み取り
    const wav = new WaveFile(await fs.readFileSync(`./${FILE_NAME}.wav`));

    // wavファイルのインスタンスのICMT(コメント)タグに書き込み
    wav.setTag("ICMT", "This is a test.");

    // 新規wavファイルを作成
    await fs.writeFileSync(`./${FILE_NAME}_meta.wav`, wav.toBuffer());
    console.log("コメント取得", wav.getTag("ICMT"));
    fs.unlinkSync(`./${FILE_NAME}.wav`);
  } catch (err) {
    console.log(err.toString());
  }
})();

コメントタグに複数の情報を記述し、wavファイル取得と同じタイミングでここを読み取る

IMAIMA

登録できるタグについて

wavはRIFFファイル形式であるので、こちらの表で適切なタグがあればそこに情報を書き込むのがベスト

このスクラップは2023/04/12にクローズされました