首页 > 解决方案 > 编辑 MP3 标签

问题描述

你们中有人知道编辑 mp3 文件标签的方法吗?
我尝试了 Mp3agic,但是当我尝试声明MP3File对象时它崩溃了,我还尝试了 tha jaudiotagger 库,但它也崩溃了。

我需要帮助。

更新:

这是应用程序崩溃的代码片段:

     File testFile = new File(Environment.getExternalStorageDirectory(),"/Music/test.mp3");
        TagOptionSingleton.getInstance().setAndroid(true);

        AudioFile audioFile = AudioFileIO.read(testFile);

        Tag newTag = audioFile.getTag();
        newTag.setField(FieldKey.ALBUM, this.album);
        newTag.setField(FieldKey.ARTIST,this.artist);

        audioFile.commit();

应用程序崩溃在行

AudioFile audioFile = AudioFileIO.read(testFile);

毫无例外。

按照上述行中的所有调试步骤,应用程序在 JAudioTagger 的 MP3File 类的第 246 行崩溃。这是行:

..
finally {
        if(newFile != null) {
            newFile.close();
        }

..

所以我尝试在这里更改我的代码(我更改了 AudioFile 声明):

File testFile = new File(Environment.getExternalStorageDirectory(),"/Music/test.mp3");
        TagOptionSingleton.getInstance().setAndroid(true);

        AudioFile audioFile = new AudioFile();
        audioFile.setFile(testFile);

        Tag newTag = audioFile.getTag();
        newTag.setField(FieldKey.ALBUM, this.album);
        newTag.setField(FieldKey.ARTIST,this.artist);

        audioFile.commit();

并在线

AudioFile audioFile = new AudioFile();

它在 MP3File 类的第 232 行抛出 NullPointerException (该行试图找到文件的标题):

audioFile: Method threw 'java.lang.NullPointerException' exception. Cannot evaluate org.jaudiotagger.audio.AudioFile.toString()

此异常在下一行中导致此异常:

java.lang.NullPointerException: Attempt to invoke interface method 'void org.jaudiotagger.tag.Tag.setField(org.jaudiotagger.tag.FieldKey, java.lang.String)' on a null object reference

在线:

newTag.setField(FieldKey.ALBUM, this.album);

更新:

我也尝试更改线路:

Tag newTag = audioFile.getTag();

至:

Tag newTag = audioFile.getTagOrCreateAndSetDefault();

但它抛出了这个异常:

java.lang.RuntimeException: Unable to create default tag for this file format

标签: javaandroidtagsjaudiotaggermp3agic

解决方案


推荐阅读