欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-25 10:51:04
获取wav格式音频时长。maven依赖 org...

获取wav格式音频时长。

maven依赖

        <dependency>
            <groupid>org</groupid>
            <artifactid>jaudiotagger</artifactid>
            <version>2.0.1</version>
        </dependency>

工具类

import org.jaudiotagger.audio.wav.util.wavinforeader;
 
import java.io.file;
import java.io.ioexception;
import java.io.randomaccessfile;
 
/** @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");
  }
}

输出结果:

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

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

说明

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

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

到此这篇关于java轻松使用工具类实现获取wav时间长度的文章就介绍到这了,更多相关java 获取wav时长内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!