Java 在MP3 ID3v2标签中设置歌词
我想在Android应用程序中为mp3编写歌词。我找到了一个java库,用于读取Java 在MP3 ID3v2标签中设置歌词,java,android,mp3,id3v2,Java,Android,Mp3,Id3v2,我想在Android应用程序中为mp3编写歌词。我找到了一个java库,用于读取mp3文件和读取/操作ID3标记(ID3v1和ID3v2.2到ID3v2.4),名为 我修改了mp3agic来编写ID3v2标记的歌词标记,编写标记:USLT。发现于 在一个示例Android应用程序中,我修改了MP3的艺术家、专辑、标题、流派、歌词和评论。除歌词外,所有标签均修改正确PowerAMP用于验证修改后的MP3文件,并且PowerAMP无法在MP3中找到歌词 如果有人熟悉这个库,这里是我从Abstract
mp3
文件和读取/操作ID3标记(ID3v1和ID3v2.2到ID3v2.4),名为
我修改了mp3agic
来编写ID3v2标记的歌词标记,编写标记:USLT
。发现于
在一个示例Android应用程序中,我修改了MP3的艺术家、专辑、标题、流派、歌词和评论。除歌词外,所有标签均修改正确PowerAMP
用于验证修改后的MP3
文件,并且PowerAMP
无法在MP3中找到歌词
如果有人熟悉这个库,这里是我从AbstractID3v2Tag.java修改的代码:
//define lyric tag for id3v2
public static final String ID_TEXT_LYRICS = "USLT";
//get the lyrics from the tag
public String getLyrics() {
ID3v2TextFrameData frameData;
if (obseleteFormat) return null;
else frameData = extractTextFrameData(ID_TEXT_LYRICS);
if (frameData != null && frameData.getText() != null)
return frameData.getText().toString();
return null;
}
//set the lyrics in the tag
public void setLyrics(String lyrics) {
if (lyrics != null && lyrics.length() > 0) {
invalidateDataLength();
ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(lyrics));
addFrame(createFrame(ID_TEXT_LYRICS, frameData.toBytes()), true);
}
}
我用Windows中的程序在MP3
上设置歌词,并用我的应用程序读取USLT
标签,然后getLyms()
返回字符串eng
PowerAMP
确实找到了这些由Windows程序设置的歌词
我搜索并找到了很多指向MP3 ID3标签修改器库的帖子,这就是我找到mp3agic的地方。这是唯一的库,我可以很容易地修改,以纳入歌词的变化
我发现的一个库没有修改歌词的方法
我正在寻找这方面的指导。查看官方ID3规范,网址为: 因此,USLT框架不仅仅是一个文本框架,这就是您试图解析它的方式。相比之下,文本框如下所示:
Header for 'Text information frame', ID: "T000" - "TZZZ" excluding "TXXX":
Text encoding $xx
Information (text string(s) according to encoding)
请注意USLT框架中的额外字段。您将需要一个定制的框架类(比如ID3v2LyricsFrameData)
但是,USLT框架与注释框架(COMM)非常相似,因此您可能可以重用其中一些代码。也许可以创建一个ID3v2CommentFrameData和ID3v2LyricsFrameData都可以扩展的超类。您的建议非常正确。
Header for 'Text information frame', ID: "T000" - "TZZZ" excluding "TXXX":
Text encoding $xx
Information (text string(s) according to encoding)