本篇文章为你整理了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。