您的位置:首页 > 其它

计算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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐