最近需要用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