3

我对 Java 编程比较陌生。在这里,我正在尝试使用 Jaudiotagger 库为 mp3 更改/创建新的 ID3 标记,而我的一个 android 项目中没有一个。但是,我真的无法设置为使库正常工作。也就是说,对于已经设置了一些 ID3 标签的 mp3,我可以成功地写入和更改元数据而没有任何问题。但是对于那些没有设置ID3标签(空白)的mp3,我只能设法设置专辑封面插图,而艺术家,标题,专辑封面等其他字段仍然像以前一样空白。

这是我的代码片段 -

import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.jaudiotagger.tag.TagOptionSingleton;
import org.jaudiotagger.tag.id3.ID3v23Tag;
import org.jaudiotagger.tag.images.Artwork;
import org.jaudiotagger.tag.images.ArtworkFactory;

try{
    TagOptionSingleton.getInstance().setAndroid(true);
    AudioFile f =AudioFileIO.read(file_path_to_mp3);
    f.setTag(new ID3v23Tag());
    Tag tag=f.getTag();
    tag.setField(FieldKey.ARTIST,artist);
    tag.setField(FieldKey.ALBUM,album);
    Artwork cover=ArtworkFactory.createArtworkFromFile(cover_file);
    tag.setField(cover);
    f.commit();
}catch (Exception e){
    e.printStackTrace();
}

我可以运行程序而不会引发任何错误和异常。只是像标题、艺术家、专辑等这样的元数据标签不会设置,尽管可以成功设置艺术品。谢谢你的帮助!

4

1 回答 1

0

我写了一些代码来帮助你改变mp3文件的数据

    TagOptionSingleton.getInstance().setAndroid(true);

    File mp3File = new File(mp3Song);

    AudioFile audioFile = AudioFileIO.read(mp3File);

    audioFile.setTag(new ID3v23Tag());


    Tag newTag=    audioFile.getTag();

    if (album != null) {
        newTag.setField(ALBUM, album);
    }
    if (artist != null) {
        newTag.setField(ARTIST, artist);
    }

    if (trackName != null) {
        Log.d("ALBUM TITLE",trackName);

        newTag.setField(TITLE, trackName);
    }


    if (imageAlbum != null) {
        Log.d("ALBUM COVER",imageAlbum);

        File fileCover = new File(imageAlbum);
        if (!fileCover.exists()){

            Log.d("ALBUM ","DOESNT EXIST");

        }


        Artwork artwork = Artwork.createArtworkFromFile(fileCover);
        newTag.addField(artwork);
        newTag.setField(artwork);

    }
    audioFile.commit();de here
于 2016-03-08T00:12:05.453 回答