我意识到使用 mp3agic 或 jaudiotagger 之类的库会更容易,但我想手动编辑 id3 标签以用于学习目的。
我设置了代码以正确获取标签,但是我注意到对于某些歌曲,标题被削减为 30 个字符,但是当我在音乐播放器中打开 .mp3 文件时,会显示完整的标题,长度超过 30 个字符。
这是我现在用来查看标签的代码:
File mp3File = new File(filePath);
byte[] mp3Meta = new byte[128];
try {
//convert file into array of bytes
fileReader = new FileInputStream(mp3File);
fileReader.skip((int)mp3File.length() - 128);
fileReader.read(mp3Meta);
String id3 = new String(mp3Meta);
String tag = id3.substring(0, 3);
if (tag.equals("TAG")) {
System.out.println("\nTitle: " + id3.substring(3, 32) + "\n" +
"Artist: " + id3.substring(33, 62) + "\n" +
"Album: " + id3.substring(63, 91) + "\n" +
"Year: " + id3.substring(93, 97) + "\n" +
"************************************************");
} else {
System.out.println("File has no ID3 tags..");
}
}catch(Exception e){
e.printStackTrace();
}
我对如何编辑标签有一个想法,但是如果它超过 30 个字符,我如何获得完整的标题(或任何标签)?我读到有一种方法可以在 id3v2 中添加超过 30 个字符的标签,但我不确定如何访问 id3v2 帧
我相信我必须确定 mp3 使用的是哪个版本(id3v1 或 id3v2),但我也不确定如何以编程方式执行此操作。