最近需要用java读取音频文件(mp3,flac格式的文件)的详细属性信息,比如:包括采样率(SampleRate)、制作格式或制作技术(Format)、单曲名(TITLE)、单曲艺术家(ARTIST)、专辑名(ALBUM)、专辑艺术家(ALBUM_ARTIST)、音轨号(TRACK)、语言(LANGUAGE)、版权方(COPYRIGHT)等等,并统一修改。研究了好久,发现有个第三方的开源jar,很好用。
JAudiotagger
官网地址: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和歌唱家属性,并修改:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
privatevoidreadMP3File(Filefile){
StringfileName=file.getName();
if(!fileName.endsWith(".MP3")&&!fileName.endsWith(".mp3")){
return;
}
/**
* 自定义 标题 作者 专辑
*/
String_author="周杰伦";
String_title="青花瓷";
String_album="《范特西》";
MP3FileReaderreader=newMP3FileReader();
try{
AudioFileaudioFile=reader.read(file);
Tagtag=audioFile.getTag();
booleanupdate=false;
StringARTIST=tag.getFirst(FieldKey.ARTIST);
if(StringUtils.isEmpty(ARTIST)){
tag.setField(FieldKey.ARTIST,_author);
update=true;
}
StringTITLE=tag.getFirst(FieldKey.TITLE);
if(StringUtils.isEmpty(TITLE)){
tag.setField(FieldKey.TITLE,_title);
update=true;
}
StringALBUM=tag.getFirst(FieldKey.ALBUM);
if(StringUtils.isEmpty(ALBUM)){
tag.setField(FieldKey.ALBUM,_album);
update=true;
}
/**
* 如果有修改,写入文件
*/
if(update){
MP3FileWriterwriter=newMP3FileWriter();
writer.writeFile(audioFile);
}
}catch(Exceptione){
e.printStackTrace();
}
}
同样,对于无损音乐文件也是一样的使用方式,只是,把Reader类 和 Writer类换成Flac的封装:
Java
1
2
3
FlacFileReaderreader=newFlacFileReader();
AudioFileaudioFile=reader.read(file);
Tagtag=audioFile.getTag();
Java
1
2
FlacFileWriterwriter=newFlacFileWriter();
writer.write(audioFile);
对于其他的属性和信息,大家可以参考官方文档。
参考文章:https://www.cnblogs.com/once/p/3734755.html