Mp3文件标签信息读取和写入(Kotlin)(mp3标签设置)

  本篇文章为你整理了Mp3文件标签信息读取和写入(Kotlin)(mp3标签设置)的详细内容,包含有mp3 标签 mp3标签设置 mp3标签设置什么意思 mp3 的标签格式能不能只保留第一个 Mp3文件标签信息读取和写入(Kotlin),希望能帮助你了解 Mp3文件标签信息读取和写入(Kotlin)。

  原文:Mp3文件标签信息读取和写入(Kotlin) - Stars-One的杂货小窝

  最近准备抽空完善了自己的星之音乐下载器,发现下载下来的mp3文件没有对应的标签

  也是了解可以通过mpatric这个库来实现标签的读取和写入,下面介绍一下关于mp3标签和贴上对应的代码示例

  在研究过程,发现mp3音乐标签主要有以下几种格式:

  ID3v1

  ID3v2(目前常用)

  APEv2

  ID3v1位于文件尾部,不支持封面,不支持一些特殊字符,长度短,但兼容老设备。

  ID3v2是ID3v1的后继替代者,位于文件头部,支持封面和特殊字符,长度任意。推荐使用。

  APEv2位于文件尾部(同时与ID3v1存在时,在ID3v1之前),同样支持封面和特殊字符,但不推荐用于mp3。

  常用的主要是ID3v2.而ID3v2格式又可具体分为3种:

  ID3v2.4 UTF-8

  ID3v2.3 UTF-16

  ID3v2.3 ISO-8859-1

  推荐用ID3v2.4 UTF-8,如果设备不支持可退一步用ID3v2.3 UTF-16,如果设备仍不支持可再退一步用ID3v2.3 ISO-8859-1。

  如果数码设备不支持,那么再试APEv2或ID3v1。根据设备支持情况进行调整就可以。

  引入依赖:

  

 dependency 

 

   groupId com.mpatric /groupId

   artifactId mp3agic /artifactId

   version 0.9.1 /version

   /dependency

  

 

  

@Test

 

  fun testRead() {

   val mp3Path = "D:\\temp\\music-download-test\\封印されし神々(東方風神録) - Whirling Truth.mp3"

   val mp3File = Mp3File(mp3Path)

   if (mp3File.hasId3v2Tag()) {

   val id3v2Tag = mp3File.id3v2Tag

   println("唱片歌曲数量: " + id3v2Tag.track)

   println("艺术家: " + id3v2Tag.artist)

   println("歌曲名: " + id3v2Tag.title)

   println("唱片名: " + id3v2Tag.album)

   println("歌曲长度:" + mp3File.lengthInSeconds + "秒")

   println("码率: " + mp3File.bitrate + " kbps " + if (mp3File.isVbr) "(VBR)" else "(CBR)")

  
println("专辑插画类型" + id3v2Tag.albumImageMimeType)

   println("发行时间: " + id3v2Tag.year)

   println("流派: " + id3v2Tag.genre + " (" + id3v2Tag.genreDescription + ")")

   println("注释: " + id3v2Tag.comment)

   println("歌词: " + id3v2Tag.lyrics)

   println("作曲家: " + id3v2Tag.composer)

   println("发行公司: " + id3v2Tag.publisher)

   println("Original artist: " + id3v2Tag.originalArtist)

   println("Album artist: " + id3v2Tag.albumArtist)

   println("版权: " + id3v2Tag.copyright)

   println("URL: " + id3v2Tag.url)

   println("编码格式: " + id3v2Tag.encoder)

   //专辑插画

   val albumImageData = id3v2Tag.albumImage

   if (albumImageData != null) {

   println("专辑插图长度: " + albumImageData.size + " bytes")

   println("专辑插图类型: " + id3v2Tag.albumImageMimeType)

   val imgFile = File("D:\\temp\\output.jpg")

   imgFile.writeBytes(albumImageData)

  @Test

  fun testWrite() {

   //todo m4a转MP3

   //val mp3Path = "D:\\temp\\music-download-test\\Romantic Night.mp3"

   val mp3Path = "D:\\temp\\music-download-test\\test.mp3"

   val imgFile = File("D:\\temp\\music-download-test\\109951167834013257.jpg")

   val mp3File = Mp3File(mp3Path)

   val tag = mp3File.id3v2Tag

   //歌曲名

   tag.title = mp3File.filename

   //歌手

   tag.artist = "张三"

   //唱片名(专辑)

   tag.album = "张三的专辑"

   tag.setAlbumImage(imgFile.readBytes(), MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType(imgFile))

   mp3File.save("D:\\temp\\music-download-test\\output.mp3")

  

 

  之后测试,在window系统右键属性就可以看到显示了对应的属性

  API大全

  Mp3File对象方法

  以上就是Mp3文件标签信息读取和写入(Kotlin)(mp3标签设置)的详细内容,想要了解更多 Mp3文件标签信息读取和写入(Kotlin)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: