我使用JSP上传了一个mp3文件。有没有办法在几秒钟内找到上传的mp3文件的持续时间?
以下是代码的一部分:
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
System.out.println("Content Type:"+contentType);
System.out.println("PATAH:"+saveFile);
System.out.println("Start :"+startPos);
System.out.println("endPos :"+endPos);
System.out.println("contentLength"+formDataLength);//Size of the file in Bytes
答案 0 :(得分:2)
仅通过文件大小无法知道音频长度,最好的方法是使用库来实现。
使用MP3 SPI:http://www.javazoom.net/mp3spi/documents.html
示例代码,返回音频文件的秒数:
private static int getDurationWithMp3Spi(File file) {
AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(file);
Map<?, ?> properties = ((TAudioFileFormat) fileFormat).properties();
String key = "duration";
Long microseconds = (Long) properties.get(key);
int mili = (int) (microseconds / 1000);
return (mili / 1000) % 60;
}