获取音频播放时长,支持wav格式(环境无声卡)

发布时间 2023-08-23 15:42:35作者: 嘻哈•﹏•亻

获取音频文件时长

/**
 * 获取音频播放时长,支持wav格式(环境无声卡)
 * @param filePath 文件授权地址
 * @author knight-jzc
 * @return 秒数
 */
public static Integer getDuration(String filePath){
    try{
        String bath = filePath.split(":")[0];
        AudioInputStream ais;
        String HTTP = "http";
        String HTTPS = "https";
        // 通过授权url获取音频输入流
        if (HTTP.equalsIgnoreCase(bath)||HTTPS.equalsIgnoreCase(bath)) {
            ais = AudioSystem.getAudioInputStream(new URL(filePath));
        } else {
            ais = AudioSystem.getAudioInputStream(new File(filePath));
        }
        AudioFormat format = ais.getFormat();
        // 新建文件获取音频输出流
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        if (AudioSystem.isFileTypeSupported(AudioFileFormat.Type.WAVE,
                ais)) {
            AudioSystem.write(ais, AudioFileFormat.Type.WAVE, outputStream);
        }
        // 获取音频比率和大小以及文件长度
        long audioFileLength = outputStream.toByteArray().length;
        int frameSize = format.getFrameSize();
        int frameRate = (int) format.getFrameRate();
        return (int) (audioFileLength / (frameSize * frameRate));
    }catch (Exception e){
        e.printStackTrace();
        return 0;
    }
}