package com.xyz.common.utils;
import lombok.extern.slf4j.Slf4j;
import javax.sound.sampled.*;
import java.io.File;
import java.net.URL;
@Slf4j
public class VoiceUtils {
//获取时长
public static Long getVoiceLength(String wavFilePath) {
//可以是本地路径也可以是网络路径,返回的是秒*10000000,要变秒就除以1000000,和我下边的一个方法那样
if (wavFilePath == null || wavFilePath.length() == 0) {
return 0L;
}
String bath = wavFilePath.split(":")[0];
Clip clip = null;
try {
clip = AudioSystem.getClip();
AudioInputStream ais;
if ("http".equals(bath.toLowerCase()) || "https".equals(bath.toLowerCase())) {
ais = AudioSystem.getAudioInputStream(new URL(wavFilePath));
} else {
ais = AudioSystem.getAudioInputStream(new File(wavFilePath));
}
clip.open(ais);
return clip.getMicrosecondLength();
} catch (Exception e) {
System.out.println(e);
return 0L;
} finally {
if(clip!=null){
clip.close();
}
}
}
//获取时长
public static Double getUrlVoiceLength(String wavFilePath) {
//网络路径,返回的是秒
if (wavFilePath == null || wavFilePath.length() == 0) {
return 0D;
}
Clip clip = null;
try {
clip = AudioSystem.getClip();
URL url = new URL(wavFilePath);
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
clip.open(ais);
Double v = clip.getMicrosecondLength() / 1000000D;
return v;
} catch (Exception e) {
log.info("获取语音时长失败,错误信息:{}", e);
return 0D;
} finally {
if(clip!=null){
clip.close();
}
}
}
}
java获取音频时长(wav)
最新推荐文章于 2024-01-24 16:09:02 发布