项目里需要读取音频的播放时间,找了一个下午发现这个:
jaudiotagger(http://www.jthink.net/jaudiotagger/)
它是一个音频标签JAVA库,目前支持 Mp3, Mp4 (Mp4 audio, M4a and M4p audio) Ogg Vorbis, Flac and Wma, 但是对Wav 和 Real 的支持有限。
读取m4a格式的播放时间
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
| /**
* 获取m4a格式文件的播放时间
* @param filePath
* @return
*/
public static int getMp4AudioLength (String filePath){
File file = new File(filePath);
Mp4FileReader reader = new Mp4FileReader();
int length = -1;
AudioFile f;
try {
f = reader.read(file);
AudioHeader head = f.getAudioHeader();
length = head.getTrackLength();
} catch (CannotReadException e) {
log.error(e.getMessage(), e);
} catch (IOException e) {
log.error(e.getMessage(), e);
} catch (TagException e) {
log.error(e.getMessage(), e);
} catch (ReadOnlyFileException e) {
log.error(e.getMessage(), e);
} catch (InvalidAudioFrameException e) {
log.error(e.getMessage(), e);
}
return length;
}
|
读取mp3格式的播放时间
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
| /**
* 获取mp3格式文件的播放时间
* @param filePath
* @return
*/
public static int getMp3AudioLength (String filePath){
File file = new File(filePath);
int length = -1;
try {
MP3File f = (MP3File)AudioFileIO.read(file);
MP3AudioHeader audioHeader = f.getMP3AudioHeader();
length = audioHeader.getTrackLength();
} catch (CannotReadException e) {
log.error(e.getMessage(), e);
} catch (IOException e) {
log.error(e.getMessage(), e);
} catch (TagException e) {
log.error(e.getMessage(), e);
} catch (ReadOnlyFileException e) {
log.error(e.getMessage(), e);
} catch (InvalidAudioFrameException e) {
log.error(e.getMessage(), e);
}
return length;
}
|