Java轻松使用工具类实现获取wav时间长度

网友投稿 301 2022-11-28

Java轻松使用工具类实现获取wav时间长度

获取wav格式音频时长。

Maven依赖

org

jaudiotagger

2.0.1

工具类

import org.jaudiotagger.audio.wav.util.WavInfoReader;

import java.io.File;

import java.io.IOException;

import java.io.RandoOEIQZwwkACmAccessFile;

/** @Author huyi @Date 2021/9/30 14:46 @Description: 音频工具类 */

public class AudioWavUtils {

public static void getWavInfo(String filePath) throws Exception {

File file = new File(filePath);

WavInfoReader wavInfoReader = new WavInfoReader();

RandomAccessFile raf = new RandomAccessFile(file, "r");

// wav音频时长

long duration = (long) (wavInfoReader.read(raf).getPreciseLength() * 1000);

// wav音频采样率

int sampleRate = toInt(read(raf, 24, 4));

System.out.println("duration -> " + duration + ",sampleRate -> " + sampleRate);

raf.close();

}

public static int toInt(byte[] b) {

return ((b[3] << 24) + (b[2] << 16) + (b[1] << 8) + (b[0]));

}

public static byte[] read(RandomAccessFile rdf, int pos, int length) throws IOException {

rdf.seek(pos);

byte[] result = new byte[length];

for (int i = 0; i < length; i++) {

result[i] = rdf.readByte();

}

return result;

}

public static void main(String[] args) throws Exception {

getWavInfo("E:\\csdn\\dzgz.wav");

}

}

输出结果:

duration为音频时长,单位毫秒,sampleRate为采样率。

说明

该工具类只能处理单声道音频,双声道会报错,多声道属于立体声范畴,提醒一下。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:网件WNR2000和R2000对比 详解它俩性能区别
下一篇:Simulink|电动汽车、永磁电动机建模与仿真
相关文章

 发表评论

暂时没有评论,来抢沙发吧~