Как установить и сохранить метаданные mp3 файла, используя mp3agi c in Scala - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь написать свой собственный mp3-плеер. Я могу использовать mp3agi c для чтения метаданных из mp3-файла, так что теперь я хотел бы изменить его. Mp3agi c показывает (под заголовком Установка значений полей ID3v2 в mp3agi c на GitHub ), что вы можете сделать это, изменив тег, затем вызвав save для файла mp3.

Я получаю сообщение об ошибке при вызове сохранения. Это та же ошибка, что и в другом сообщении Изменить имена альбомов, используя mp3agi c

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

сбт

scalaVersion := "2.13.1"
libraryDependencies += "com.mpatric" % "mp3agic" % "0.9.1"

1 Ответ

0 голосов
/ 21 января 2020

Мне удалось установить новые метаданные в mp3-файле, но мне пришлось создать новый тег и скопировать в него все данные из старого тега, а затем сохранить файл с новым тегом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...