我正在尝试编写自己的mp3播放器。我能够使用mp3agic从mp3文件中读取元数据,因此现在我想对其进行修改。 mp3agic显示(在mp3agic on GitHub的标题为设置ID3v2字段值下),可以通过修改标签,然后在mp3文件上调用save来做到这一点。
调用保存时出现错误。与另一个帖子Change Album names using mp3agic]的错误相同
Exception in thread "main" com.mpatric.mp3agic.NotSupportedException: Packing Obselete frames is not supported at com.mpatric.mp3agic.ID3v2ObseleteFrame.packFrame(ID3v2ObseleteFrame.java:32) at com.mpatric.mp3agic.ID3v2Frame.toBytes(ID3v2Frame.java:83) at com.mpatric.mp3agic.AbstractID3v2Tag.packSpecifiedFrames(AbstractID3v2Tag.java:275) at com.mpatric.mp3agic.AbstractID3v2Tag.packFrames(AbstractID3v2Tag.java:261) at com.mpatric.mp3agic.AbstractID3v2Tag.packTag(AbstractID3v2Tag.java:227) at com.mpatric.mp3agic.AbstractID3v2Tag.toBytes(AbstractID3v2Tag.java:218) at com.mpatric.mp3agic.Mp3File.save(Mp3File.java:450) at Example$.$anonfun$new$2(Example.scala:16)
代码
import java.nio.file.Paths import com.mpatric.mp3agic.Mp3File object Example extends App { Paths.get("content").resolve("raw").toFile.listFiles.toList .find(f => f.isFile && f.getName.endsWith(".mp3")) .foreach { file => val mp3 = new Mp3File(file) println(mp3.hasId3v1Tag) println(mp3.hasId3v2Tag) println(mp3.hasCustomTag) val tag = mp3.getId3v2Tag println(tag.getYear) tag.setComment("Cool song.") mp3.save(file.getParentFile.toPath.resolve("x.mp3").toFile.getAbsolutePath) } }
输出
false true false 1973
sbt
scalaVersion := "2.13.1" libraryDependencies += "com.mpatric" % "mp3agic" % "0.9.1"
我正在尝试编写自己的mp3播放器。我能够使用mp3agic从mp3文件中读取元数据,因此现在我想对其进行修改。 mp3agic显示(在标题下的设置ID3v2字段值位于...
我能够在mp3文件上设置新的元数据,但是我必须创建一个新标签,并将所有数据从旧标签复制到上面,然后使用新标签保存文件。