辅导:JAVA写的MP3标签读写器
来源:优易学  2011-10-6 22:37:52   【优易学:中国教育考试门户网】   资料下载   IT书店

  一个NB的音乐插件,挺方便的,如果能把歌词也显示出来那就更好了。Examda提示:怎么办呢,在显示歌词之前,必须要知道目前正在播放的MP3是什么内容啊,一点可以从文件名得到一些信息,还有一点就是从MP3文件里面得到这个MP3的信息,我这里实现的ID3V1的格式标签,APEV2也想实现,无奈找不到相关的资料,不知道APEV2的数据结构是怎么样的,所以也无从分析。已经写完了ID3V1格式标签的读取和写入。并且NB的音乐插件也实现了本地歌词的搜索,先把ID3V1的文件结构的类文件帖一下。
  MP3的ID3V1的信息结构是很有规律的,它一般是出现在MP3文件的最后128个字节上,并且是以“TAG”开头。这里把它封装成一个类了。
  代码如下:
  /*
  * To change this template, choose Tools | Templates
  * and open the template in the editor.
  */
  package com.hadeslee.music;
  /**
  * 一个歌曲信息的类的结构表示
  * 这个歌曲是使用ID3V1的信息存储结构的
  * @author hadeslee
  */
  public class SongInfo {
  private final String TAG = "TAG";//文件头1-3
  private String songName;//歌曲名4-33
  private String artist;//歌手名34-63
  private String album;//专辑名61-93
  private String year;//年94-97
  private String comment;//备注98-125
  private byte r1, r2, r3;//三个保留位126,127,128
  private boolean valid;//是否合法
  public transient String fileName;//此歌曲对应的文件名,没有封装
  public SongInfo(byte[] data) {
   if (data.length != 128) {
    throw new RuntimeException("数据长度不合法:" + data.length);
   }
   String tag = new String(data, 0, 3);
   //只有前三个字节是TAG才处理后面的字节
   if (tag.equalsIgnoreCase("TAG")) {
    valid = true;
   songName = new String(data, 3, 30).trim();
    artist = new String(data, 33, 30).trim();
    album = new String(data, 63, 30).trim();
    year = new String(data, 93, 4).trim();
   comment = new String(data, 97, 28).trim();
    r1 = data[125];
    r2 = data[126];
    r3 = data[127];
   } else {
    valid = false;
   }
  }

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训