jaudiotagger POPULARIMETER标签

时间:2016-11-17 16:00:01

标签: android tags mp3 id3v2 jaudiotagger

我正在将我的应用从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_3_0Tag ID3V2_3_0Tag =     (org.blinkenlights.jid3.v2.ID3V2_3_0Tag) MediaFile.getID3V2Tag();
                if (null != ID3V2_3_0Tag) {
                    for (int i = 0; i < ID3V2_3_0Tag.getPOPMFrames().length; i++) {
                        if (ID3V2_3_0Tag.getPOPMFrames()[i] != null) {
                            rating = ID3V2_3_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;
    }

对于问号,它报告字符串,但是当我输入一个字符串,如“POPM”时,它报告所需:org.jaudiotagger.tag.id3.framebody FramebodyPOPM,找到java.lang.Object

任何能够展示如何使用jaudiotagger库读取和编写POPM标记的人?

更新:我认为该值应该是帧标识符,所以

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是正确的方法。

1 个答案:

答案 0 :(得分:0)

解决了这个问题。下面的代码按预期工作。

id  value1  value2  value3
10  1       27      30.5