jsp中如何计算上传的mp3文件的时长

Posted

技术标签:

【中文标题】jsp中如何计算上传的mp3文件的时长【英文标题】:how to calculate the duration of an uploaded mp3 file in jsp 【发布时间】:2012-01-27 11:12:23 【问题描述】:

我已经上传了一个使用 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】:

仅通过文件大小无法知道音频长度,最好的方法是使用库来做到这一点。

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

【讨论】:

它给出了这样的异常“javax.sound.sampled.UnsupportedAudioFileException: file is not a supported file type” 可能你必须安装 JMF:oracle.com/technetwork/java/javase/tech/index-jsp-140239.html 是的,就是这样。您必须检查您的应用程序是否正在加载/使用 JMF。 已安装 JMF,仍然无法正常工作。这就是我所做的。 File n=new File(文件路径);然后我已将此文件“n”传递给函数。我正在使用 net beans 来运行 JSP。 可能是,我不知道如何,你必须包含 JMF jars 和文件。

以上是关于jsp中如何计算上传的mp3文件的时长的主要内容,如果未能解决你的问题,请参考以下文章

PHP获取音频mp3文件时长或音频文件其它参数属性

请教java如何实现获取一段mp3的总时长

如何在 Qt (QMediaPlayer) 上上传 Mp3 文件?

怎么获取一段mp3格式的音频的播放时长

EasyClick 获取MP3文件时长

java获取mp3的时长和播放mp3文件