Java音频格式转换,支持amr、aud、slk、silk转成mp3
Java音频格式转换,支持amr、aud、slk、silk转成mp3
说明:仅支持Windows系统下,amr、aud、slk、silk转成mp3。转换之前先下载转换工具,点我下载,提取码:2olq
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/*** 支持在windows系统下,amr、aud、slk、silk转成mp3格式*/
public class AudioConversion {public static void main(String[] args) {String audioType = "amr";//源音频文件类型,amr、aud、slk、silkString source = "E:\\audio\\audio." + audioType;//源音频文件String target = "E:\\audio\\audio.mp3";//目标音频文件String path = "E:\\audio\\";//音频转换工具存放路径File sourceFile = new File(source);if(sourceFile.exists()) {String pcmPath = path + "audio.pcm";processPcm(path, source, pcmPath);//先转成pcm格式File file=new File(pcmPath);if(file.exists()) {processMp3(path, pcmPath, target);//再由pcm转成mp3} else {processFfmpegMp3(path, source, target);//直接转成mp3}} else {System.out.println("源文件不存在");}}// 调用sile_v3_decoder.exe,转成pcm格式private static void processPcm(String path, String source, String pcmPath){List<String> commend = new ArrayList<String>(); commend.add(path+"silk_v3_decoder.exe"); commend.add(source); commend.add(pcmPath); try { ProcessBuilder builder = new ProcessBuilder(); builder.command(commend); Process p=builder.start();p=Runtime.getRuntime().exec("taskkill -f -t -im silk_v3_decoder.exe");p.waitFor(); } catch (Exception e) {e.printStackTrace();}}// 调用ffmpeg,pcm转mp3 private static void processMp3(String path, String pcmPath, String target) {//ffmpeg -y -f s16le -ar 24000 -ac 1 -i 源文件 目标文件List<String> commend = new ArrayList<String>(); commend.add(path+"ffmpeg.exe"); commend.add("-y"); commend.add("-f"); commend.add("s16le"); commend.add("-ar"); commend.add("24000"); commend.add("-ac"); commend.add("1"); commend.add("-i"); commend.add(pcmPath); commend.add(target); try { ProcessBuilder builder = new ProcessBuilder(); builder.command(commend);Process p=builder.start();p.waitFor();} catch (Exception e) {e.printStackTrace();}}// 调用ffmpeg.exe,转MP3 private static void processFfmpegMp3(String path, String source, String target){List<String> commend = new ArrayList<String>(); commend.add(path+"ffmpeg.exe"); commend.add("-i"); commend.add(source); commend.add(target); try { ProcessBuilder builder = new ProcessBuilder(); builder.command(commend); Process p=builder.start();p=Runtime.getRuntime().exec("taskkill -f -t -im ffmpeg.exe");p.waitFor(); } catch (Exception e) { e.printStackTrace();}}
}