2014-03-19 72 views
0

我正在研究一个程序,看一个MP3文件,并检查它是否有它的ID3数据。如果缺少某些数据,它将查询EchoNest(音乐数据库)以获取更多数据。编辑ID3标签不显示在Windows资源管理器

我的问题是,当我更新ID3标签时,Windows资源管理器似乎无法识别它(即当文件处于“详细信息”视图中时,艺术家,标题,专辑栏为空)。 当我在文件上第二次运行我的程序时,我的程序会首先查找元数据,就像它会在文件中找到所有数据一样。

我使用这里找到ID3标签库: http://javamusictag.sourceforge.net/

有什么我失踪?

public void writeData(boolean pForce) 
{ 
    if (mIsUpdated || pForce) 
    { 
     try 
     { 
      File file = new File(mPath); 
      RandomAccessFile destFile = new RandomAccessFile(file, "rw"); 
      ID3v1 tag = new ID3v1(); 
      tag.setAlbum(mAlbum); 
      tag.setArtist(mArtist); 
      tag.setTitle(mTitle); 
      tag.write(destFile); 
     } 
     catch (FileNotFoundException ex) 
     { 
      System.out.println("No File Found At " + mPath); 
     } 
     catch (IOException ex) 
     { 
      System.out.println("Error when writting to file: " + mPath); 
     } 
    }   
} 

就像我不知道有一些程序在做同样的事情,但我希望将它添加为我的程序的一个功能。与其说是关于如何制作一个能够做到这一点的程序的学习,不如说是功能。

回答

0

您是否尝试过使用ID3v2标签,因为当我从阅读标签(与该库)音乐文件在Windows中,只有v2似乎工作。希望它可以帮助

编辑: 如果不工作,我发现这个使用mp3agic另一个question:(图像的东西是专辑封面做)

Mp3File song = new Mp3File(filename); 
if (song.hasId3v2Tag()){ 
    ID3v2 id3v2tag = song.getId3v2Tag(); 
    byte[] imageData = id3v2tag.getAlbumImage(); 
    //converting the bytes to an image 
    BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData)); 
} 
相关问题