如何修改MP3元数据并通过Node.js保存?

我想实现以下目标:

  • 读取一个MP3元数据
  • 修改该元数据的编码(如果我可以修改该元数据的内容,那会更好)
  • 将修改保存到该MP3文件

所有这些操作都可以基于本地Node.js(不带浏览器)。 有没有模块提供这样的function,或者我可以开发基于?

对于那些通过Google来到这个问题的人,有一个节点模块可以做到这一点,无论是读取和写入元数据: https : //www.npmjs.org/package/ffmetadata

我不知道是否有办法在NodeJS中实际执行元数据操作。 这是一种解决方法,但是你可以使用child_process.exec和perl来做到这一点:

NodeJS代码

 var exec = require('child_process').exec, child; child = exec('perl changeTags.pl file.mp3', function (error, stdout, stderr) { console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); if (error !== null) { console.log('exec error: ' + error); } }); 

Perl代码

 #!/usr/bin/perl use MP3::Tag; $mp3 = MP3::Tag->new(@ARGV[0]); # create object $mp3->get_tags(); # read tags print "Attempting to print tags for @ARGV[0]\n"; if (exists $mp3->{ID3v2}) { print "Comments: " . $mp3->{ID3v2}->comment . "\n"; print "Zip: " . $mp3->{ID3v2}->album . "\n"; print "Tags: " . $mp3->{ID3v2}->title . "\n"; } else { print "@ARGV[0] does not have ID3v2 tags\n"; } $mp3->close(); # destroy object 

就是这样 你显然想给你更多的参数,你真的想改变元数据….祝你好运!

到目前为止,我发现jsmediatags是最好的npm包阅读ID3v2标签

 var jsmediatags = require("jsmediatags"); jsmediatags.read("./song.mp3", { onSuccess: function(tag) { console.log(tag); }, onError: function(error) { console.log(':(', error.type, error.info); } });