已编辑的 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 资源管理器中的主要内容,如果未能解决你的问题,请参考以下文章