java实现音频转换

这里需要用到第三方 ffmpeg.exe

package com.convertaudio;

import java.io.File;

import java.util.ArrayList;

import java.util.List;

import java.util.logging.Level;

import java.util.logging.Logger;

import sun.rmi.runtime.Log;

public class ConvertAudio {

/**

* 检查文件是不是文件

* @param file

* @return

*/

public boolean checkFile(File file){

if(file.isFile())

return true;

else

return false;

}

/**

* 获取文件的后缀名

*/

public String getFileSuffix(File file){

String filename=file.getName();

String fileSuffixName=null;

if(filename!=null){

int startPosition=filename.lastIndexOf(".");

fileSuffixName=filename.substring(startPosition);

}

return fileSuffixName;

}

/**

* 检验后缀名是否符合转换要求

* @param suffixName

* @return

*/

public boolean checkFileSuffix(String suffixName){

switch (suffixName) {

case ".aac":

case ".avi":

case ".wmv":

case ".3gp":

case ".flv":

case ".mp4":return true;

default: return false;

}

}

/**

* 转换

* @param ffmpegPath

* @param srcFile

* @param destFile

* @return

*/

public boolean process(String ffmpegPath,File srcFile,File destFile){

if(this.checkFile(srcFile)){

String suffixName=this.getFileSuffix(srcFile);

if(this.checkFileSuffix(suffixName)){

List<String> commend =new ArrayList<String>();

commend.add(ffmpegPath);//"d:\\pcm\\ffmpeg.exe"

commend.add("-i");

commend.add(srcFile.toString());

commend.add("-ab");

commend.add("64");

// commend.add(" -acodec ");

// commend.add("codec");

commend.add("-ac");

commend.add("2");

commend.add("-ar");

commend.add("22050");

// 清晰度 -qscale 4 为最好可是文件大, -qscale 6就可以了

commend.add("-b");

commend.add("230");

// commend.add("-s");

// commend.add("350x240");

commend.add("-r");

commend.add("29.97");

commend.add("-y");

commend.add(destFile.toString());

System.out.println(commend);

System.out.println("----");

try {

ProcessBuilder builder = new ProcessBuilder();

builder.command(commend);

builder.start();

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

}else{

System.out.println(srcFile+" is not a file!");

}

return false;

}

public static void main(String[] args) {

File srcFile=new File("D:/pcm/baichuanyu.aac");

File destFile=new File("D:/pcm/baichuanyu.wav");

String ffmpegPath="d:/pcm/ffmpeg.exe";

ConvertAudio ca=new ConvertAudio();

if(ca.process(ffmpegPath, srcFile, destFile)){

Logger log= Logger.getLogger("test.Test");

log.log(Level.INFO, srcFile.getName()+" 已成功转换为 "+destFile.getName());

}

}

}