计算mp3时间以及位速工具(使用JMF框架)
2011-04-24 09:58
465 查看
1、从http://www.javazoom.net/ 网站下载jlayer.jar mp3spi.jar包
如果是使用maven加下面依赖
<dependency>
<groupId>de.huxhorn.sulky</groupId>
<artifactId>de.huxhorn.sulky.3rdparty.jlayer</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>javazoom</groupId>
<artifactId>mp3spi</artifactId>
<version>1.9.4</version>
</dependency>
2、下载与系统相关的mp3编码包 如linux需要下载tritonus_share.jar包
如果是使用maven加下面依赖
<dependency>
<groupId>org.tritonus.net</groupId>
<artifactId>tritonus_share</artifactId>
<version>1.0</version>
</dependency>
注:具体可以看www.javazoom.net提供的相关文档
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
import org.apache.log4j.Logger;
/**
*
* File Name : AudioUtil.java
*
* @Description : 音频工具类
*/
public class AudioUtil
{
private static Logger logger = Logger.getLogger(PinyinUtil.class.getName());
/**
* Description : 得到音频文件信息
*
* @param audioFile
* @return
*
*/
@SuppressWarnings("unchecked")
public static Map getAudioInfoByFile(String path )
{
File audioFile = new File(path);
Map result = new HashMap();
if (null == audioFile || !audioFile.exists())
{
return null;
}
try
{
AudioFileFormat aff = AudioSystem.getAudioFileFormat(audioFile);
result = aff.properties();
} catch (UnsupportedAudioFileException e)
{
String filename = audioFile.getName();
logger.error("file name is:" + filename, e);
} catch (IOException e)
{
logger.error(e);
}
return result;
}
/**
* Description : 得到音频文件持续时间
*
* @param audioFile
* @return second
*
*/
@SuppressWarnings("unchecked")
public static long getAudioTimeByFile(String path){
long total = 0;
Map info = getAudioInfoByFile(path);
if (info!=null && info.containsKey("duration")){
total = (long) Math.round((((Long) info.get("duration"))
.longValue()) / (1000*1000));
}
return total;
}
/**
* Description : 得到音频文件位速
*
* @param audioFile
* @return second
*
*/
@SuppressWarnings("unchecked")
public static int getAudioHZByFile(String path){
int total = 0;
Map info = getAudioInfoByFile(path);
if (info!=null && info.containsKey("mp3.bitrate.nominal.bps")){
total = ((Integer)info.get("mp3.bitrate.nominal.bps")).intValue()/1000;
}
return total;
}
}
如果是使用maven加下面依赖
<dependency>
<groupId>de.huxhorn.sulky</groupId>
<artifactId>de.huxhorn.sulky.3rdparty.jlayer</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>javazoom</groupId>
<artifactId>mp3spi</artifactId>
<version>1.9.4</version>
</dependency>
2、下载与系统相关的mp3编码包 如linux需要下载tritonus_share.jar包
如果是使用maven加下面依赖
<dependency>
<groupId>org.tritonus.net</groupId>
<artifactId>tritonus_share</artifactId>
<version>1.0</version>
</dependency>
注:具体可以看www.javazoom.net提供的相关文档
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
import org.apache.log4j.Logger;
/**
*
* File Name : AudioUtil.java
*
* @Description : 音频工具类
*/
public class AudioUtil
{
private static Logger logger = Logger.getLogger(PinyinUtil.class.getName());
/**
* Description : 得到音频文件信息
*
* @param audioFile
* @return
*
*/
@SuppressWarnings("unchecked")
public static Map getAudioInfoByFile(String path )
{
File audioFile = new File(path);
Map result = new HashMap();
if (null == audioFile || !audioFile.exists())
{
return null;
}
try
{
AudioFileFormat aff = AudioSystem.getAudioFileFormat(audioFile);
result = aff.properties();
} catch (UnsupportedAudioFileException e)
{
String filename = audioFile.getName();
logger.error("file name is:" + filename, e);
} catch (IOException e)
{
logger.error(e);
}
return result;
}
/**
* Description : 得到音频文件持续时间
*
* @param audioFile
* @return second
*
*/
@SuppressWarnings("unchecked")
public static long getAudioTimeByFile(String path){
long total = 0;
Map info = getAudioInfoByFile(path);
if (info!=null && info.containsKey("duration")){
total = (long) Math.round((((Long) info.get("duration"))
.longValue()) / (1000*1000));
}
return total;
}
/**
* Description : 得到音频文件位速
*
* @param audioFile
* @return second
*
*/
@SuppressWarnings("unchecked")
public static int getAudioHZByFile(String path){
int total = 0;
Map info = getAudioInfoByFile(path);
if (info!=null && info.containsKey("mp3.bitrate.nominal.bps")){
total = ((Integer)info.get("mp3.bitrate.nominal.bps")).intValue()/1000;
}
return total;
}
}
相关文章推荐
- 微信开发准备(三)——框架以及工具的基本使用
- 微信开发准备(三)--框架以及工具的基本使用
- Struts2框架基本构建,Maven工具使用以及搭建私服,Hbernate框架构建以及连接mysql数据库
- 微信开发准备(三)——框架以及工具的基本使用
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- java对象的内存布局(一):计算java对象占用的内存空间以及java object layout工具的使用
- Web 表格table实现横向滚动条以及时间组件laydate的使用
- 开发工具以及网络通讯使用的组件!
- SPCAMLEditor使用系列(3)--利用SPCamlEditor实现 时间字段跟当前时间进行实时比较计算
- 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量
- 使用不同方法查找数组中某个特定值,并计算时间(改正二分法查找错误和数组转化集合错误)
- MPEG简介 + 如何计算CBR/VBR MP3的播放时间
- 网络协议分析工具Wireshark的使用、用Wireshark观察ARP协议以及ping命令的工作过程分析以太网报文格式
- controller中使用@RequestBody,Java如何传递json对象访问接口,以及对象中的时间类型
- java Calendar类时间操作简单总结,计算工作日排除法定假日以及周末
- 使用 DurationFormatUtils 计算时间间隔
- 16个HTML5 框架、模板以及生成工具
- 【开源项目13】Volley框架 以及 设置request超时时间
- linux下命令执行时间统计工具time使用小结