ffmpeg 操作音频元数据

音频文件的元数据(如标题、艺术家、专辑等)是很多播放器归类的依据,为了更好的管理音频文件在 VLC 等播放器中的分组,可以根据需要对音频的元数据进行处理。

可以通过 ffmpeg 处理,这里还是用之前使用的 fluent-ffmpeg 库来处理。

import ffmpeg from 'fluent-ffmpeg';

const metadata = {
  artist: '歌手名称',
  album: '专辑名称',
};

ffmpeg()
  .input(inputFile)
  .outputOptions([
      // 设置新元数据
      ...Object.entries(config.metadata)
          .flatMap(([key, value]) => ['-metadata', `${key}=${value}`]),
      // 保持原音频编码,避免重压缩
      '-codec', 'copy'
  ])
  .output(outputFile)
  .on('end', async () => {
      console.log('操作成功');
  })
  .on('error', err => {
      console.log('操作失败');
  })
  .run();

以上根据需求可再作定制化和调整,如封装为函数,对目录遍历处理等等。

Node.js 在编写这种小工具和脚本的时候还是很方便的,依托于强大的 npm 生态,基本常用的能力都可得到满足。