Я переношу свое приложение с org.blinkenlights.jid3 на jaudiotagger. Я успешно реализовал большинство тегов mp3, но борюсь с тегом POPM. Я пытаюсь прочитать POPM, получив кадр. Похоже, это правильный метод, поскольку код распознает три метода.
(Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser()).
Что нужно указать в скобках FrameBodyPOPM popmframe = id3v24tag.getFrame();. Используя JID3, я добился следующего результата:
try {
ID3V2 try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
0Tag ID3V2 try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
0Tag = (org.blinkenlights.jid3.v2.ID3V2 try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
0Tag) MediaFile.getID3V2Tag();
if (null != ID3V2 try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
0Tag) {
for (int i = 0; i < ID3V2 try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
0Tag.getPOPMFrames().length; i++) {
if (ID3V2 try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
0Tag.getPOPMFrames()[i] != null) {
rating = ID3V2 try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
0Tag.getPOPMFrames()[i].getPopularity();
break;
}
}
}
rating = rating / 50;
} catch (ID3Exception e) {
e.printStackTrace();
}
используя jaudiotagger, у меня есть следующий код:
try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24();
FrameBodyPOPM popmframe = id3v24tag.getFrame(??????);
Long irating = popmframe.getRating();
Long cnt = popmframe.getCounter();
String mail = popmframe.getEmailToUser();
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
Для вопросительных знаков он сообщает String, но когда я ввожу строку, такую как «POPM», он сообщает, что требуется: org.jaaudiotagger.tag.id3.framebody FramebodyPOPM , found java.lang.Object
Кто-нибудь может показать, как читать и писать тег POPM с помощью библиотеки jaudiotagger?
обновление: я считаю, что значение должно быть идентификатором кадра, поэтому
FrameBodyPOPM popmframe = (FrameBodyPOPM) id3v24tag.getFrame(ID3v24Frames.FRAME_ID_POPULARIMETER);
компилируется, но выдает ошибку:
java.lang.ClassCastException: org.jaudiotagger.tag.id3.ID3v24Frame cannot be cast to org.jaudiotagger.tag.id3.framebody.FrameBodyPOPM
Но если я сделаю popmframe ID3v24Frame, 3 метода больше не будут доступны, поэтому я думаю, что FrameBodyPOPM — правильный путь.