这里需要用到第三方 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());
}

}

}

java实现音频转换的更多相关文章

  1. java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)

    java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) 这节主要是ffmpeg的相关方法封装,在实际调用中主要使用f ...

  2. java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)

    1.自动判断格式并调用相应的转换工具,默认方法 /** * 自动判断格式并调用相应的转换工具,默认方法 * @param srcVideoPath * @param tarVideoPath * @r ...

  3. 使用jave2实现将wav格式的音频转换成mp3格式

    最近需要用到语音合成功能,网上查阅了一番,发现可以使用腾讯云的语音合成API来完成这个功能,但是腾讯云的api返回的是wav格式的音频文件,这个格式的文件有些不通用,因此需要转换成mp3格式的文件. ...

  4. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  5. JSONObject.fromObject(map)(JSON与JAVA数据的转换)

    JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么 ...

  6. C# 使用ffmpeg.exe进行音频转换完整demo-asp.net转换代码

    C# 使用ffmpeg.exe进行音频转换完整demo-asp.net转换代码 上一篇说了在winform下进行调用cmd.exe执行ffmpeg.exe进行音频转换完整demo.后来我又需要移植这个 ...

  7. Java文件编码格式转换

    转自博文<Java文件编码格式转换>: 默认被转换的格式为GBK,转换成的格式为UTF-8 import info.monitorenter.cpdetector.CharsetPrint ...

  8. C# 使用ffmpeg.exe进行音频转换完整demo

    今天在处理微信的开发接口时候,发现微信多媒体上传接口中返回的音频格式是amr.坑人的是现在大部分的web 播放器,不支持amr的格式播放.试了很多方法都不行. 没办法,只要找一个妥协的解决方案:将am ...

  9. java 实现视频转换通用工具类:视频截图-Ffmpeg(四)

    java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) java 实现视频转换通用工具类:视频相互转换-Ffmpeg ...

随机推荐

  1. Silverlight 调用 aspx 相关文件

    private void Button_Click_1(object sender, RoutedEventArgs e) { WebClient wb = new WebClient(); wb.D ...

  2. 阅读verilog程序总结

    1.写程序先直接写出时钟信号 //-----------------产生串行时钟scl,为输入时钟的二分频--------- always@(negedge clk)//二分频表示频率小了,周期大了 ...

  3. UML 中的用例图解析以及starUML详细介绍

    UML中的用例(Use Case)概念分析及StarUML实例 在UML 中use case 似 乎最簡單的,用例建模的最主要功能就是用来表达系统的功能性需求或行为,依我的理解用例建模可分为用例图和用 ...

  4. 微软职位内部推荐-SDEII

    微软近期Open的职位: Software Engineer II for Customer Experience (Level 62+) Location: Suzhou Contact Perso ...

  5. android 开发对gif解码(适配android 4.2、4.3、4.4版本)

    android 开发对gif解码(适配android 4.2.4.3.4.4版本) 使用方法: public class ImageInputActivity extends Activity imp ...

  6. IEEE802.11数据帧在Linux上的抓取

    IEEE802.11数据帧在Linux上的抓取终于得到了梦寐的<802.11无线网络权威指南>,虽然是复印版本,看起来也一样舒服,光看书是不行的,关键还是自己练习,这就需要搭建一个舒服的实 ...

  7. boost之thread

    1.boost里的thread创建之后会立即启动. 代码示例: #include <iostream> #include <string> #include <vecto ...

  8. matrix_world_final_2011

    C  http://acm.hust.edu.cn/vjudge/contest/view.action?cid=98613#problem/C 题意:输入16进制的n*m矩阵,其在二进制表示下有6种 ...

  9. 2014 ACM/ICPC Asia Regional Anshan Online

    默默的签到 Osu! http://acm.hdu.edu.cn/showproblem.php?pid=5003 #include<cstdio> #include<algorit ...

  10. JavaScript垃圾回收

    JavaScript内存监测工具   http://www.cnblogs.com/strick/p/4002010.html