Java amr转mp3工具类

Web组的小伙伴遇到amr音频转mp3的问题,刚开始用的jave在Win下好使部署到Linux下就不好使了。大体看了下实现jave是调用ffmpeg来实现音频格式转换的,只不过它把ffmpeg的可执行文件打包到了jar里面。那么问题就出现ffmpeg的调用上。
如果提前设置好ffmpeg的路径,直接调用就行了。
所以重复做了个轮子类直接完成转换
使用前先部署好ffmpeg:
下载附件,ffmpeg工具类

复制 ffmpeg到 C:\下(Linux下到/下,给予 chmod 777 /ffmpeg/ffmpeg 权限)

工具类:

package com.jzhung.util;

import java.io.*;

/**
 * FFmpeg工具类,用于音视频转换
 * @author jzhung.com
 * Created by Jzhung on 2017/9/9.
 */
public class FFmpegUtil {

    /**
     * amr转mp3,在Win和Linux上都要上要设置好ffpmeg,
     * WIN下放置ffmpeg.exe到c:\ffmpeg\ffmpeg.exe
     * LINUX下放到/ffmpeg/ffmpeg 并给调用用户可执行权限,也可chmod 777 ffmpeg给予全部权限
     *
     * @param amr
     * @param mp3
     * @throws IOException
     */
    public static void arm2mp3(String amr, String mp3) throws IOException {
        String ffmpeg = null;
        if (getOS().trim().toLowerCase().startsWith("win")) {
            ffmpeg = "c:\\ffmpeg\\ffmpeg.exe";
        } else {
            ffmpeg = "/ffmpeg/ffmpeg";
        }
        //先删除已经存在的文件
        new File(mp3).delete();
        String cmd = String.format("%s -i %s %s", ffmpeg, amr, mp3);
        FFmpegUtil.execute(cmd);
    }

    public static void execute(String cmd) throws IOException {
        Process process = Runtime.getRuntime().exec(cmd);
        InputStream inStream = process.getInputStream();
        InputStream errStream = process.getErrorStream();
        SequenceInputStream sequenceIs = new SequenceInputStream(inStream, errStream);
        BufferedInputStream bufStream = new BufferedInputStream(sequenceIs);
        Reader reader = new InputStreamReader(bufStream, getDefaultEncoding());
        BufferedReader bufReader = new BufferedReader(reader);
        String line;
        while ((line = bufReader.readLine()) != null) {
            System.out.println(line);
        }
        inStream.close();
        errStream.close();
        process.destroy();
    }

    private static String getDefaultEncoding() {
        if (getOS().trim().toLowerCase().startsWith("win")) {
            return "GBK";
        } else {
            return "UTF-8";
        }
    }

    private static String getOS() {
        String os = System.getProperty("os.name");
        return os;
    }

}

2 条思考于 “Java amr转mp3工具类

发表评论

电子邮件地址不会被公开。 必填项已用*标注