我对Java编程比较陌生。在这里,我试图使用Jaudiotagger库来改变/创建新的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();
}
我可以运行程序而不会抛出任何错误和异常。只是标题,艺术家,专辑等matadata标签不会设置,但艺术作品可以成功设置。 谢谢你的帮助!
答案 0 :(得分: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