java获取音频文件播放时长

方法一:

在项目开发过程中,需要获取音视频文件时长。查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下:

The JAVE (Java Audio Video Encoder) library is Java wrapper on the ffmpeg project. Developers can take take advantage of JAVE to transcode audio and video files from a format to another. In example you can transcode an AVI file to a MPEG one, you can change a DivX video stream into a (youtube like) Flash FLV one, you can convert a WAV audio file to a MP3 or a Ogg Vorbis one, you can separate and transcode audio and video tracks, you can resize videos, changing their sizes and proportions and so on. Many other formats, containers and operations are supported by JAVE.

总的来说JAVE不仅能够获取音视频文件时长,而且能够在代码中将音视频进行格式转换,可以说功能很强大了,我暂时只用到获取时长这一最简单的功能。

首先,下载jar包,点此下载;

然后,通过maven进行安装(首先确保电脑已经配置好maven环境变量):

步骤:1.进入maven仓库目录,一般目录为C:\Users\Administrator\.m2\repository,亦可自己创建仓库,创建后需要在maven的conf目录下修改settings.xml文件中的localRepository的配置;

2.将jave-1.0.2.jar包复制到仓库目录下;

3.win键 + R 打开运行对话框,输入cmd进入Command,进入仓库目录,执行以下命令:

mvn install:install-file -Dfile=jave-1.0.2.jar -DgroupId=jave -DartifactId=jave -Dversion=1.0.2 -Dpackaging=jar -DgeneratePom=true

然后在maven项目中就可以通过maven导入jar包了。

简单的测试用例:

package com.jave;

import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.MultimediaInfo;
import java.io.File;

public class ReadVideo {

public static void main(String[] args) {
File source = new File("E:\\测试视频\\R41.avi");
Encoder encoder = new Encoder();
try {
MultimediaInfo m = encoder.getInfo(source);
long ls = m.getDuration();
int second = ls \ 1000;
System.out.println("此视频时长为:" + second + "秒!");
} catch (Exception e) {
e.printStackTrace();
}
}

}

转自https://blog.csdn.net/xie_sining/article/details/79643152

方法二:

import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.Clip;import java.io.File;import java.net.URL;import java.util.Date;

/** * @author liuziw * @date 2019/8/21 9:17 */public class AudioTimeTest {

    /**     * 获取音频文件时长     *     * @param wavFilePath wav文件路径,支持本地和网络HTTP路径     * @return 时长/微秒,可 /1000000D 得到秒     * @throws Exception     */    public static long getMicrosecondLengthForWav(String wavFilePath) throws Exception {

        if (wavFilePath == null || wavFilePath.length() == 0) {            return 0;        }        String bath = wavFilePath.split(":")[0];        Clip 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();    }

    public static void main(String [] args)throws Exception {        Long start = new Date().getTime();        String url = "";        Long time = getMicrosecondLengthForWav(url)/1000000;        Long end = new Date().getTime();        System.out.println("花费(毫秒)"+(end-start));        System.out.println("时长为(秒)"+time);

    }}

原文地址:https://www.cnblogs.com/luizw/p/11387459.html

时间: 2024-10-10 15:44:22

java获取音频文件播放时长的相关文章

统计音频文件总时长

统计音频文件总时长 两种实现方法,调用sox工具,调用python wave库. sox 命令行中键入sox wavfile -n stat -bash-4.2$ sox arctic_a0001.wav -n stat Samples read: 53680 Length (seconds): 3.355000 Scaled by: 2147483647.0 Maximum amplitude: 0.628510 Minimum amplitude: -0.649933 Midline amp

js获取video的播放时长

  1 setTimeout(function () { 2 var vid = document.getElementById("videoIntro"); 3 var currentTime=vid.currentTime.toFixed(1); 4 if(currentTime==1.2){ 5 //触发 6 return false; 7 } 8 console.log(currentTime); 9 getvideoprogress(); 10 }, 1000); 11 fu

java切割音频文件

工具: 一个jar包即可:jave-1.0.2.jar 可以切割wav格式的音频文件 完整工程目录 就一个jar包,一个main类 代码: package com.zit; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import it.sauronsoftw

xcode UIImageView创建、图片加载、 音频文件播放、 延迟调用

代码创建 /** 创建UIImageView */ UIImageView * imageView=[[UIImageView alloc]init]; /** 设置尺寸位置 */ imageView.frame=(CGRect){{50,50},{230,230}}; /** 创建图片 */ UIImage * image=[[UIImage alloc]init]; /** 获取图片 */ image=[UIImage imageNamed:@"图片名称"]; /** 把图片给容器

windows环境下音频文件播放

最近一个小项目要用到音乐播放模块,于是翻了一下资料,发现windows环境下播放音频文件有MCI.DirectShow等几种方式,当然也可以使用底层的api WaveOut播放.其中第一种方式最为简单,程序仅需通过发送MCI命令即可控制媒体设备,实现音频文件播放.暂停.停止等操作.其他两种方式就比较繁琐了,首先搭建DirectShow开发环境就比较周折,而使用WaveOut播放音频,需要先解码音频以获取pcm数据,然后才能播放.对于不涉及音频数据处理.仅需播放音频的简单使用场景,推荐使用MCI方

Java获取.properties文件

@SuppressWarnings("rawtypes") public static void getProperties() { Properties properties = null; InputStream in = null; try { properties = new Properties(); //获取文件 in = Object.class.getResourceAsStream("/config.properties"); properties

获取视频停止播放时已经播放的时间

获取停止,暂停时视频已经播放的时间主要靠注册通知,当暂停或停止时响应通知时间,获取当前已经播放的时间,同时也可以在视频开始播放时给一个播放时间,从当前播放时间播放视频,用此方法来达到播放视频从上次播放时间开始播放 主要代码 MPMoviePlayerViewController *mPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:self.itemVideoUrl]]; [

asp.net 获取mp3 播放时长

1 Shell32 //添加引用:COM组件的Microsoft Shell Controls And Automation //然后引用 using Shell32; //如果出现"无法嵌入互操作类型 请改用适用的接口"报错----修改引用里面的shell32属性嵌入互操作类型改为false public static string GetMP3FileDurationAll(string fileName) { ShellClass sh = new ShellClass(); F

获取音、视频时长(NAudio,Shell32,FFmpeg)

参考网址:https://blog.csdn.net/u013810234/article/details/57471780 以下为本次测试用到的音.视频格式: audio :".wav;.mp3;.wma;.ra;.mid;.ogg;.ape;.au;.aac;"; vedio :".mp4;.mpg;.mpeg;.avi;.rm;.rmvb;.wmv;.3gp;.flv;.mkv;.swf;.asf;"; Note: 1. 测试音.视频均为对应格式的有效文件(下