• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
嘻哈•﹏•亻
博客园    首页    新随笔    联系   管理    订阅  订阅
获取音频播放时长,支持wav格式(环境无声卡)

获取音频文件时长

/**
 * 获取音频播放时长,支持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;
    }
}
posted on 2023-08-23 15:37  嘻哈•﹏•亻  阅读(133)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3