【开源技术分享】Java读写操作Mp3的库:MP3AGIC,使用MP3AGIC获取ID3v1值和获取ID3v2专辑封面和修改ID3v2封面图片等mp3信息

这篇具有很好参考价值的文章主要介绍了【开源技术分享】Java读写操作Mp3的库:MP3AGIC,使用MP3AGIC获取ID3v1值和获取ID3v2专辑封面和修改ID3v2封面图片等mp3信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

mp3agic是一个纯Java库。用于读取mp3文件和读取/操作ID3标签(ID3v1和ID3v2.2到ID3v2.4),可以使用 ID3 标签中的详细信息重命名 mp3 文件、重新标记 mp3 文件、将图像附加到 mp3 文件以及从 mp3 文件中提取图像等等任务。

除此以外,JavaCV也可以支持mp3封面读取:《JavaCV音视频开发宝典:如何使用JavaCV读取mp3文件ID3V2专辑封面图片显示并保存成jpg图片和png图片并保留png透明度》

mp3文件尾部标签介绍

mp3音乐文件的有三种尾部标签,分别是:ID3v1,ID3v2,APEv2这三种类型

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

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

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

mp3agic依赖

<dependency>
  <groupId>com.mpatric</groupId>
  <artifactId>mp3agic</artifactId>
  <version>0.9.1</version>
</dependency>

官方维护地址

https://github.com/mpatric/mp3agic文章来源地址https://www.toymoban.com/news/detail-560964.html

使用示例

打开mp3文件

Opening an mp3 file
Mp3File mp3file = new Mp3File("eguid.mp3");
System.out.println("Length of this mp3 is: " + mp3file.getLengthInSeconds() + " seconds");
System.out.println("Bitrate: " + mp3file.getBitrate() + " kbps " + (mp3file.isVbr() ? "(VBR)" : "(CBR)"));
System.out.println("Sample rate: " + mp3file.getSampleRate() + " Hz");
System.out.println("Has ID3v1 tag?: " + (mp3file.hasId3v1Tag() ? "YES" : "NO"));
System.out.println("Has ID3v2 tag?: " + (mp3file.hasId3v2Tag() ? "YES" : "NO"));
System.out.println("Has custom tag?: " + (mp3file.hasCustomTag() ? "YES" : "NO"));

保存MP3文件

mp3file.save("MyMp3File.mp3");

删除ID3和自定义标签

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v1Tag()) {
  mp3file.removeId3v1Tag();
}
if (mp3file.hasId3v2Tag()) {
  mp3file.removeId3v2Tag();
}
if (mp3file.hasCustomTag()) {
  mp3file.removeCustomTag();
}
mp3file.save("eguidMp3FileWithoutTags.mp3");

获取ID3v1的值

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v1Tag()) {
  ID3v1 id3v1Tag = mp3file.getId3v1Tag();
  System.out.println("Track: " + id3v1Tag.getTrack());
  System.out.println("Artist: " + id3v1Tag.getArtist());
  System.out.println("Title: " + id3v1Tag.getTitle());
  System.out.println("Album: " + id3v1Tag.getAlbum());
  System.out.println("Year: " + id3v1Tag.getYear());
  System.out.println("Genre: " + id3v1Tag.getGenre() + " (" + id3v1Tag.getGenreDescription() + ")");
  System.out.println("Comment: " + id3v1Tag.getComment());
}

设置ID3v1的值

Mp3File mp3file = new Mp3File("SomeMp3File.mp3");
ID3v1 id3v1Tag;
if (mp3file.hasId3v1Tag()) {
  id3v1Tag =  mp3file.getId3v1Tag();
} else {
  // mp3 does not have an ID3v1 tag, let's create one..
  id3v1Tag = new ID3v1Tag();
  mp3file.setId3v1Tag(id3v1Tag);
}
id3v1Tag.setTrack("5");
id3v1Tag.setArtist("An Artist");
id3v1Tag.setTitle("The Title");
id3v1Tag.setAlbum("The Album");
id3v1Tag.setYear("2001");
id3v1Tag.setGenre(12);
id3v1Tag.setComment("Some comment");
    mp3file.save("MyMp3File.mp3");

获取 ID3v2专辑封面

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v2Tag()) {
  ID3v2 id3v2Tag = mp3file.getId3v2Tag();
  byte[] imageData = id3v2Tag.getAlbumImage();//获取封面图像
  if (imageData != null) {
    String mimeType = id3v2Tag.getAlbumImageMimeType();//获取封面图像mine-type扩展名
    // 写出图像到文件 - 可以从 MIME 类型确定适当的文件扩展名
    RandomAccessFile file = new RandomAccessFile("album-artwork", "rw");
    file.write(imageData);
    file.close();
  }
}

设置ID3v2字段的值

Mp3File mp3file = new Mp3File("eguid.mp3");
ID3v2 id3v2Tag;
if (mp3file.hasId3v2Tag()) {
  id3v2Tag = mp3file.getId3v2Tag();
} else {
  // mp3 does not have an ID3v2 tag, let's create one..
  id3v2Tag = new ID3v24Tag();
  mp3file.setId3v2Tag(id3v2Tag);
}
id3v2Tag.setTrack("5");
id3v2Tag.setArtist("An Artist");
id3v2Tag.setTitle("The Title");
id3v2Tag.setAlbum("The Album");
id3v2Tag.setYear("2001");
id3v2Tag.setGenre(12);
id3v2Tag.setComment("Some comment");
id3v2Tag.setLyrics("Some lyrics");
id3v2Tag.setComposer("The Composer");
id3v2Tag.setPublisher("A Publisher");
id3v2Tag.setOriginalArtist("Another Artist");
id3v2Tag.setAlbumArtist("An Artist");
id3v2Tag.setCopyright("Copyright");
id3v2Tag.setUrl("http://foobar");
id3v2Tag.setEncoder("The Encoder");
mp3file.save("eguid-mp3.mp3");

获取ID3v2字段的值

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v2Tag()) {
  ID3v2 id3v2Tag = mp3file.getId3v2Tag();
  System.out.println("Track: " + id3v2Tag.getTrack());
  System.out.println("Artist: " + id3v2Tag.getArtist());
  System.out.println("Title: " + id3v2Tag.getTitle());
  System.out.println("Album: " + id3v2Tag.getAlbum());
  System.out.println("Year: " + id3v2Tag.getYear());
  System.out.println("Genre: " + id3v2Tag.getGenre() + " (" + id3v2Tag.getGenreDescription() + ")");
  System.out.println("Comment: " + id3v2Tag.getComment());
  System.out.println("Lyrics: " + id3v2Tag.getLyrics());
  System.out.println("Composer: " + id3v2Tag.getComposer());
  System.out.println("Publisher: " + id3v2Tag.getPublisher());
  System.out.println("Original artist: " + id3v2Tag.getOriginalArtist());
  System.out.println("Album artist: " + id3v2Tag.getAlbumArtist());
  System.out.println("Copyright: " + id3v2Tag.getCopyright());
  System.out.println("URL: " + id3v2Tag.getUrl());
  System.out.println("Encoder: " + id3v2Tag.getEncoder());
  byte[] albumImageData = id3v2Tag.getAlbumImage();
  if (albumImageData != null) {
    System.out.println("是否有专辑图数据, length: " + albumImageData.length + " bytes");
    System.out.println("专辑图MIME类型的文件扩展名: " + id3v2Tag.getAlbumImageMimeType());
  }
}

到了这里,关于【开源技术分享】Java读写操作Mp3的库:MP3AGIC,使用MP3AGIC获取ID3v1值和获取ID3v2专辑封面和修改ID3v2封面图片等mp3信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • M4a如何转换成MP3格式?分享三个M4a转成MP3的方法

    M4a和MP3是两种常见的音频格式,M4a是苹果公司使用的音频格式,而MP3则是广泛使用的音频格式。M4a文件通常比MP3文件质量更高,但是在某些情况下,例如在使用其他设备或播放器时,将M4a文件转换为MP3文件可能更有用。在本文中,我们将讨论如何将M4a文件转换为MP3文件。 方法

    2023年04月16日
    浏览(42)
  • 常用的开源MP3编解码器

    由于工作需要,需对MP3进行编解码处理,研究了几款开源的MP3编解码器。相对于FFMPEG来说,这几款都属于轻量级的编解码器,更容易移植。 源码下载链接:https://sourceforge.net/projects/lame/ 支持MP3编解码。编码出来的MP3音色纯厚、空间宽广、低音清晰、细节表现良好,它独创的心

    2023年04月09日
    浏览(23)
  • 怎样压缩mp3文件?分享四个压缩音频的方法

    为什么压缩mp3为什么压缩MP3? 随着数字音乐的普及,MP3格式已成为最常用的音频文件格式之一。然而,尽管MP3提供了高质量的音乐体验,但它也带来了一个不可忽视的问题:文件大小。未压缩的音频文件,尤其是无损音频文件,可能会占用大量的存储空间。这对于拥有大量音

    2024年03月23日
    浏览(44)
  • FLAC格式如何转换为MP3?分享三种方法!

    在数字音乐的世界中,FLAC和MP3是两种常见的音频格式。FLAC (Free Lossless Audio Codec)提供无损的音质,但文件大小较大。而MP3文件较小,更易于传输和保存,但可能牺牲一些音质。如果你想将FLAC音频转换成MP3格式,本文将为你介绍三种有效的方法。 方法一:使用记灵在线工具 记

    2024年02月13日
    浏览(27)
  • 音乐怎么转换成mp3格式?分享几种简单格式转换方法

    MP3 格式是一种压缩格式,它可以将音频文件的大小减小到原始文件的一半或更少,节省存储空间。这对于那些拥有大量音乐和需要在移动设备上播放音乐的人来说非常有用。其次,MP3 格式是一种广泛使用的格式,几乎可以在所有的设备上播放,包括计算机、手机、平板电脑

    2024年02月11日
    浏览(36)
  • 【干货】分享几个免费下载音乐mp3的网站实测可用

    本文仅用于学习交流,不做任何声明。 分享几个免费下载音乐mp3的网站、免费音乐、 大家有找不到资源的,可以留言评论下,帮忙代下载~~ 文本由PUSDN强力驱动! 有账号的朋友,可以点个赞或者评论两句哦,评论后会获得积分奖励~ 评价:比较推荐,无需登录,歌曲较全,

    2024年02月06日
    浏览(56)
  • flac转mp3格式怎么转?傻瓜操作只需3步!

    Flac(Free Lossless Audio Codec)文件格式诞生于2001年,由Xiph.Org基金会推出。其产生背景源于对音质极高要求的音乐爱好者需求。 Flac采用无损压缩技术,可以减小文件大小,同时保持音频的原始质量,为用户提供了更灵活的音频存储和传输选择。 MP3文件格式介绍及特性 MP3(MPE

    2024年01月23日
    浏览(33)
  • Java使用ffmpeg实现视频剪切、mp3剪切

      直接运行代码即可:   剪切前      剪切后

    2024年02月16日
    浏览(27)
  • java获取一段音频/mp3的时长

    引言 在日常开发中,经常会遇到产品经理提出一个需求“上传音乐/音频”,而且还得显示出音频的播放时长。那我们直接世界上最简单的实现方案,必须是最简单,多一句啰嗦不准点赞。 How to do 1.提前引入包 2.逻辑实现

    2024年01月25日
    浏览(31)
  • Java pcm/wav文件转mp3(流的方式)

    pcm与wav文件是无损音质,几分钟的文件就高达20几M,要求将pcm/wav文件转mp3文件,既完成文件的压缩,又不影响使用。 网上找了很多例子,大都是Lame与FFmpeg,但前者的例子总是DOS命令控制lame.exe,后者好些,但是需要使用音频文件的绝对路径,这就需要频繁创建临时文件,不

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包