设置MP3 ID3v2标签中的歌词
我想在Android应用程序中为一个mp3写歌词。我找到了一个java库,用于读取mp3
文件和读取/操作ID3标签(ID3v1和ID3v2.2到ID3v2.4),名为mp3agic 。
我修改了mp3agic
来编写ID3v2标签的歌词标签,编写标签: USLT
。 在维基百科中找到
在Android应用程序示例中,我修改了MP3的艺术家,专辑,标题,流派,歌词和评论。 除歌词外,所有标签都被正确修改。 PowerAMP
用于validation修改后的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
上设置歌词,用我的app读取USLT
标签, getLyrics()
返回字符串eng
。 PowerAMP
确实找到了Windows程序设置的这些歌词。
我搜索过并发现许多post指向MP3 ID3标签修改器库,这是我发现mp3agic的地方。 这是我可以轻松修改以合并歌词更改的唯一库。
我找到的一个库是MyID3_for_Android ,它没有修改歌词的方法。
我正在寻找有关这方面的指导。
查看http://id3.org/id3v2.4.0-frames上的官方ID3规范:
Header for 'Unsynchronised lyrics/text transcription', ID: "USLT": Text encoding $xx Language $xx xx xx Content descriptor (text string according to encoding) $00 (00) Lyrics/text (full text string according to encoding)
因此,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都扩展的超类。