Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在MP3 ID3v2标签中设置歌词_Java_Android_Mp3_Id3v2 - Fatal编程技术网

Java 在MP3 ID3v2标签中设置歌词

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

我想在Android应用程序中为mp3编写歌词。我找到了一个java库,用于读取
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)