【问题标题】:Edited ID3 tags not showing in windows explorer已编辑的 ID3 标签未显示在 Windows 资源管理器中
【发布时间】:2014-03-19 15:35:06
【问题描述】:

我正在开发一个查看 mp3 文件并检查它是否有 ID3 数据的程序。如果缺少某些数据,它将查询 EchoNest(音乐数据库)以获取更多数据。

我的问题是,当我更新 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);
         }
     }         
}

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

【问题讨论】:

    标签: java api mp3 id3


    【解决方案1】:

    您是否尝试过使用 ID3v2 标签,因为当我从 Windows 中的音乐文件读取标签(使用该库)时,似乎只有 v2 有效。希望对你有帮助

    编辑: 如果这不起作用,我在另一个question 上使用mp3agic 找到了这个:(图片内容与专辑封面有关)

    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));
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      相关资源
      最近更新 更多