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

4
我之前曾经问过一个类似的问题,但是是关于Python的,后来我决定转向Java,因为似乎有更多的资源可以做这样的事情。基本上我需要一些库、想法或说明,允许我编辑MP4文件中的ID3标签,就像在iTunes中找到的那种。如果有人知道任何信息,你的帮助将不胜感激。 到目前为止,我已经做了以下工作:
  1. 我找到了一个非常相似的问题/答案:How do you Edit Video ID3v2 Tags in Java(它描述了如何使用用于音频文件的库JID3来编辑视频ID3标签),但我无论如何都无法弄清楚如何将其导入eclipse项目并使用它。我基本上解压缩了它,并将所有包添加到项目中,但唯一一次它起作用时,它使得电影文件对任何媒体播放器都无法读取。如果有人具体了解如何导入和使用JID3,那就太好了。

  2. 我找到了这个网站:http://willcode4beer.com/parsing.jsp?set=mp3ID3,它有一些看起来不错的代码用于读写ID3标签,不幸的是它不能正常工作,经常返回一堆问号字符串或突然告诉我文件不存在(它会一次正常工作,然后下一次不做任何更改就不起作用)。尽管如此,我仍然喜欢通过读取文件的字节或ASCII码并找到/编辑ID3标签的方法,所以如果有人知道该怎么做,那就太好了。

提前感谢。

你看过 http://www.id3.org/ 吗? - MJB
2个回答

1
如果我理解正确,您希望能够编辑诸如艺术家、音轨、封面图像等元数据,并在iTunes或QuickTime中查看更改。 在这种情况下,您可能需要查看JCodec中可用的新API(org.jcodec.movtool.MetadataEditor)。 它还有一个CLI(org.jcodec.movtool.MetadataEditorMain)。 以下是基本用法:
# Changes the author of the movie
./metaedit -f -si ©ART=New\ value file.mov
通过Java API也可以实现同样的事情:
MetadataEditor mediaMeta = MetadataEditor.createFrom(new
    File("file.mp4"));
Map<Integer, MetaValue> meta = mediaMeta.getItunesMeta();
meta.put(0xa9415254, MetaValue.createString("New value")); // fourcc for '©ART'
mediaMeta.save(false); // fast mode is off

您可以在这里找到完整的文档:http://jcodec.org/docs/working_with_mp4_metadata.html


1
MP4文件中的元数据不一定是ID3格式的。虽然可以使用ID3,但并不广泛使用。ID3字节会出现在/moov/meta/id32盒子里。 iTunes文件会将它们的元信息放在/moov/udta/...中,这里有多个盒子,比如'@cmt'、'@nam'、'@des'、'@cpy',每个盒子都包含一个字符串(在这种情况下)用于评论、名称、描述、版权。请参阅http://code.google.com/p/mp4parser/以可视化、解析和编写MP4文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,