【发布时间】:2013-07-11 06:54:33
【问题描述】:
我想实现以下目标:
- 读取 MP3 元数据
- 修改该元数据的编码(如果我可以修改该元数据的内容,那就更好了)
- 保存对该 MP3 文件的修改
所有这些操作都可以基于原生 Node.js(无需浏览器)。有没有提供这种功能的模块或者我可以基于它开发?
【问题讨论】:
标签: node.js node-modules
我想实现以下目标:
所有这些操作都可以基于原生 Node.js(无需浏览器)。有没有提供这种功能的模块或者我可以基于它开发?
【问题讨论】:
标签: node.js node-modules
到目前为止,我发现jsmediatags 是阅读ID3v2 标签的最佳npm 包
var jsmediatags = require("jsmediatags");
jsmediatags.read("./song.mp3", {
onSuccess: function(tag) {
console.log(tag);
},
onError: function(error) {
console.log(':(', error.type, error.info);
}
});
【讨论】:
对于那些通过谷歌提出这个问题的人,有一个节点模块可以做到这一点,读取和写入元数据: https://www.npmjs.org/package/ffmetadata
【讨论】:
id3v2.3 选项,可以设置为 true。参见ffmetadata的文档。
我不知道是否有办法在 NodeJS 中实际进行元数据操作。这是一种变通方法,但您可以使用 child_process.exec 和 perl 来做到这一点:
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);
}
});
#!/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
类似的东西。您显然想为您真正想要将元数据更改为的内容提供更多参数......祝您好运!
【讨论】: