Sign In

@seemusic/audio-metadata

Package Overview
Dependencies
Maintainers
4
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@seemusic/audio-metadata

Extract audio metadata in the browser (ID3 tags via jsmediatags + duration via AudioContext)

latest
npmnpm
Version
0.1.1
Version published
Weekly downloads
12
-25%
Maintainers
4
Weekly downloads
 
Created
Source

@seemusic/audio-metadata

从浏览器端音频文件中提取元数据(ID3 标签 + 音频时长),纯浏览器实现,零 Node.js 依赖。

功能

  • MP3:提取标题、表演者、作曲、专辑、流派、歌词、ISRC、封面、时长
  • 其他格式(FLAC/WAV/OGG/M4A):提取时长(通过 AudioContext),标签字段为空
  • 艺人字符串自动拆分("A / B"["A", "B"]

安装

npm install @seemusic/audio-metadata
# or
pnpm add @seemusic/audio-metadata
# or
yarn add @seemusic/audio-metadata

使用

import { extractAudioMetadata, splitPeople } from '@seemusic/audio-metadata';

// 上传音频后提取元数据
const file = inputElement.files[0];
const meta = await extractAudioMetadata(file);

console.log(meta.title);        // "虫儿飞"
console.log(meta.artists);      // ["郑少秋"]
console.log(meta.composers);    // ["陈光荣"]
console.log(meta.cover);        // "data:image/jpeg;base64,..."
console.log(meta.duration);     // 198
console.log(meta.isFallback);   // false(非 MP3 格式时为 true)

// 拆分艺人字符串
const names = splitPeople('周杰伦 / 林俊杰');
// => ["周杰伦", "林俊杰"]

API

extractAudioMetadata(file, options?)

参数类型说明
fileFile音频文件
options.skipCoverboolean是否跳过封面解析(大文件时节省内存)

返回 Promise<ExtractedMetadata>,结构:

interface ExtractedMetadata {
  title?: string;
  artists: string[];
  album?: string;
  composers: string[];
  lyricists: string[];
  genres: string[];
  lyrics?: string;
  isrc?: string;
  cover?: string;        // data:image/jpeg;base64,...
  duration?: number;     // 秒
  isFallback?: boolean;  // 非 MP3 格式时为 true
}

splitPeople(value)

参数类型说明
valuestring | undefined艺人字符串,如 "A / B, C"

返回 string[],自动按 / , ; , ; 拆分。

技术说明

  • 标签解析:jsmediatags(~15KB gzip)
  • 时长提取:浏览器原生 AudioContext.decodeAudioData
  • 无 Node.js polyfill,Vite/Webpack 开箱即用

License

MIT

FAQs

Package last updated on 22 Jul 2026

Related posts