我不擅长java。我正在做一个使用库 mp3agic 更新音乐文件元数据的项目。我在库中找不到歌词部分。有ID3标签的高手可以帮我取歌词吗?
问问题
320 次
1 回答
1
我知道这可能为时已晚,OP 可能已经想通了,但如果有人仍然坚持这一点,请看这里
并尝试以下
编辑 AbstractID3v2Tag 进行以下更改;
public static final String ID_TEXT_LYRICS = "USLT";
private ID3v2CommentFrameData extractLyricsFrameData(String id) {
ID3v2FrameSet frameSet = frameSets.get(id);
if (frameSet != null) {
Iterator<ID3v2Frame> iterator = frameSet.getFrames().iterator();
while (iterator.hasNext()) {
ID3v2Frame frame = (ID3v2Frame) iterator.next();
ID3v2CommentFrameData frameData;
try {
frameData = new ID3v2CommentFrameData(useFrameUnsynchronisation(), frame.getData());
return frameData;
} catch (InvalidDataException e) {
// Do nothing
}
}
}
return null;
}
public String getLyrics() {
ID3v2CommentFrameData frameData;
if (obseleteFormat) return null;
else frameData = extractLyricsFrameData(ID_TEXT_LYRICS);
if (frameData != null)
return frameData.getComment().toString();
return null;
}
public void setLyrics(String lyrics) {
if (lyrics != null && lyrics.length() > 0) {
invalidateDataLength();
ID3v2CommentFrameData frameData = new ID3v2CommentFrameData(useFrameUnsynchronisation(), "eng", null, new EncodedText(lyrics));
addFrame(createFrame(ID_TEXT_LYRICS, frameData.toBytes()), true);
}
}
之后您可以简单地调用 id3v2Tag.setLyrics() 和 id3v2tag.getLyrics(),这似乎工作正常。确保在使用 setLyrics() 时对歌词正文进行 ascii 编码。
于 2016-08-06T19:24:22.280 回答