如何在jsp中计算上传的mp3文件的持续时间

时间:2012-01-27 11:12:23

标签: java jsp audio mp3

我使用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

1 个答案:

答案 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;
}