Редактирование тегов MP3

Кто-нибудь из вас знает, как редактировать теги mp3-файла?
Я пробовал Mp3agic, но он вылетает, когда я пытаюсь объявить объект MP3File, и я также пробовал библиотеку 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);

без исключений.

При выполнении всех шагов отладки из вышеупомянутой строки приложение аварийно завершает работу в строке 246 класса MP3File JAudioTagger. Это строки:

..
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();

он генерирует исключение NullPointerException в строке 232 класса MP3File (строка пытается найти заголовок файла):

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

Проблема в том, что ... это сбой без исключения, я использую отладку, чтобы следить за каждым шагом ... но не генерируется исключение

Nicolò Rebaioli 30.06.2018 17:10

Я также использую Try Catch, но исключение не создается, и в Logcat ничего не отображается, он вылетает без исключений или сообщений

Nicolò Rebaioli 30.06.2018 17:13

За вас голосуют против (не мной), потому что вы действительно должны предоставить больше информации и, желательно, какой-то код, чтобы показать, как вы пытаетесь это сделать :)

Arnold Schrijver 30.06.2018 17:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
111
0

Другие вопросы по теме