最近需要用java读取音频文件(mp3,flac格式的文件)的详细属性信息,比如:包括采样率(SampleRate)、制作格式或制作技术(Format)、单曲名(TITLE)、单曲艺术家(ARTIST)、专辑名(ALBUM)、专辑艺术家(ALBUM_ARTIST)、音轨号(TRACK)、语言(LANGUAGE)、版权方(COPYRIGHT)等等,并统一修改。研究了好久,发现有个第三方的开源jar,很好用。
官网地址:http://www.jthink.net/jaudiotagger
API DOC:http://www.jthink.net/jaudiotagger/javadoc/index.html
下载地址:https://repo1.maven.org/maven2/org/jaudiotagger/2.0.3/
使用起来,很简单,读取MP3文件的Title和歌唱家属性,并修改:
private void readMP3File(File file){ String fileName = file.getName(); if(!fileName.endsWith(".MP3") && !fileName.endsWith(".mp3")){ return; } /** * 自定义 标题 作者 专辑 */ String _author = "周杰伦"; String _title = "青花瓷"; String _album = "《范特西》"; MP3FileReader reader = new MP3FileReader(); try { AudioFile audioFile = reader.read(file); Tag tag = audioFile.getTag(); boolean update = false; String ARTIST = tag.getFirst(FieldKey.ARTIST); if(StringUtils.isEmpty(ARTIST) ){ tag.setField(FieldKey.ARTIST,_author); update = true; } String TITLE = tag.getFirst(FieldKey.TITLE); if(StringUtils.isEmpty(TITLE) ){ tag.setField(FieldKey.TITLE,_title); update = true; } String ALBUM = tag.getFirst(FieldKey.ALBUM); if(StringUtils.isEmpty(ALBUM) ){ tag.setField(FieldKey.ALBUM,_album); update = true; } /** * 如果有修改,写入文件 */ if(update){ MP3FileWriter writer = new MP3FileWriter(); writer.writeFile(audioFile); } } catch (Exception e) { e.printStackTrace(); } }
同样,对于无损音乐文件也是一样的使用方式,只是,把Reader类 和 Writer类换成Flac的封装:
FlacFileReader reader = new FlacFileReader(); AudioFile audioFile = reader.read(file); Tag tag = audioFile.getTag();
FlacFileWriter writer = new FlacFileWriter(); writer.write(audioFile);
对于其他的属性和信息,大家可以参考官方文档。
参考文章:https://www.cnblogs.com/once/p/3734755.html