已编辑的 ID3 标签未显示在 Windows 资源管理器中

Posted

技术标签:

【中文标题】已编辑的 ID3 标签未显示在 Windows 资源管理器中【英文标题】:Edited ID3 tags not showing in windows explorer 【发布时间】: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);
         
              

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

【问题讨论】:

【参考方案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));

【讨论】:

以上是关于已编辑的 ID3 标签未显示在 Windows 资源管理器中的主要内容,如果未能解决你的问题,请参考以下文章

编程语言中的 ID3 标签编辑

如何在 Java 中编辑 MP4 ID3 标签?

编辑和添加 mp3 的 ID3 标签

删除 id3v2 标签 c++

python中的ID3v1空字节解析

在 iOS 上保存 ID3 标签