计算mp3时间以及位速工具(使用JMF框架)

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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值