语音amr文件转换为mp3文件


1.安卓前端生成amr语音文件,经过base64加密变成加密字符串


2.把加密后的字符串解密成amr文件

生成amr文件目录
  String fileUrl = System.getProperty("user.dir").replace(
                            "bin", "webapps")
                            + File.separator
                            + "wfCloudRes"
                            + File.separator
                            + "image"
                            + File.separator
                            + dateStr
                            + File.separator + "topic" + File.separator + maxId;

public static String base64ToIo(String strBase64,String fileUrl) throws IOException {
        String string = strBase64;
        String fileName = fileUrl+File.separator+"audio.amr";
        String saveDir = fileUrl;
        File dir = new File(saveDir);
        if(!dir.exists()){
            dir.mkdirs();
        }
        try {
            // 解码,然后将字节转换为文件
            byte[] bytes = new BASE64Decoder().decodeBuffer(string); // 将字符串转换为byte数组
            
            FileOutputStream out = new FileOutputStream(fileName);
            out.write(bytes);
            out.close();
            
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

        return fileName;
    }



3.amr文件转换为MP3文件

这个转化要使用第三方的jar包jave-1.0.2.jar

http://www.sauronsoftware.it/projects/jave/download.php



// mp3文件目录
                        String fileTargetUrl = System.getProperty("user.dir")
                                .replace("bin", "webapps")
                                + File.separator
                                + "wfCloudRes"
                                + File.separator
                                + "image"
                                + File.separator
                                + dateStr
                                + File.separator
                                + "topic"
                                + File.separator
                                + maxId
                                + File.separator + "audio.mp3";


public static void changeToMp3(String sourcePath, String targetPath) {
        File source = new File(sourcePath);
        File target = new File(targetPath);
        AudioAttributes audio = new AudioAttributes();
        audio.setCodec("libmp3lame");
//        audio.setBitRate(new Integer(64000));
//        audio.setChannels(new Integer(2));
//        audio.setSamplingRate(new Integer(22050));
        
        EncodingAttributes attrs = new EncodingAttributes();
        attrs.setFormat("mp3");
        attrs.setAudioAttributes(audio);
        
        try {
            Encoder encoder = new Encoder();
            encoder.encode(source, target, attrs);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InputFormatException e) {
            e.printStackTrace();
        } catch (EncoderException e) {
            e.printStackTrace();
        }
    }

4.删除amr文件

FileUtils.deleteFile(fileUrl, "amr");


public static boolean deleteFile(String path, String suffixType) {
        boolean flag = false;
        if (StringUtils.isEmpty(path)) {
            return flag;
        }
        File file = new File(path);// 里面输入特定目录
        File temp = null;
        File[] filelist = file.listFiles();
        for (int i = 0; i < filelist.length; i++) {
            temp = filelist[i];

            if (temp.getName().endsWith(suffixType)) {// 获得文件名,如果后缀为“”,这个你自己写,就删除文件
                temp.delete();// 删除文件
                flag = true;
            }
        }
        return flag;
    }



Base64加密和解密工具类

mport java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;



public class Base64Utils {

    public static void main(String[] args) throws Exception {
        

//        String strBase64 = Base64Utils.ioToBase64("d:/bubugao.amr"); // 将 io 转换为 base64编码
//        System.out.println(">>> " + strBase64);
//        System.out.println(Base64Utils.base64ToIo(strBase64,"d:/bubugao.mp3")); // 将 base64编码转换为
                                                                // 文件流,生成一幅新图片
        
//        System.out.println(Base64Utils.encodeBase64File("d:/bubugao.amr"));
        
        
    }

    public static String ioToBase64(String path) throws IOException {
//        String fileName = "D:/u18.jpg"; // 源文件
        String source = path;
        String strBase64 = null;
        try {
            InputStream in = new FileInputStream(source);
            // in.available()返回文件的字节长度
            byte[] bytes = new byte[in.available()];
            // 将文件中的内容读入到数组中
            in.read(bytes);
            strBase64 = new BASE64Encoder().encode(bytes); // 将字节流数组转换为字符串
            in.close();
        } catch (FileNotFoundException fe) {
            fe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return strBase64;
    }

    public static String base64ToIo(String strBase64,String fileUrl) throws IOException {
        String string = strBase64;
        String fileName = fileUrl+File.separator+"audio.amr";
        String saveDir = fileUrl;
        File dir = new File(saveDir);
        if(!dir.exists()){
            dir.mkdirs();
        }
        try {
            // 解码,然后将字节转换为文件
            byte[] bytes = new BASE64Decoder().decodeBuffer(string); // 将字符串转换为byte数组
            
            FileOutputStream out = new FileOutputStream(fileName);
            out.write(bytes);
            out.close();
            
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

        return fileName;
    }

}
文件转换类的代码如下:

import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.EncodingAttributes;
import it.sauronsoftware.jave.InputFormatException;

import java.io.File;

public class Mp3Convert {

    public static void changeToMp3(String sourcePath, String targetPath) {
        File source = new File(sourcePath);
        File target = new File(targetPath);
        AudioAttributes audio = new AudioAttributes();
        audio.setCodec("libmp3lame");
//        audio.setBitRate(new Integer(64000));
//        audio.setChannels(new Integer(2));
//        audio.setSamplingRate(new Integer(22050));
        
        EncodingAttributes attrs = new EncodingAttributes();
        attrs.setFormat("mp3");
        attrs.setAudioAttributes(audio);
        
        try {
            Encoder encoder = new Encoder();
            encoder.encode(source, target, attrs);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InputFormatException e) {
            e.printStackTrace();
        } catch (EncoderException e) {
            e.printStackTrace();
        }
    }

    
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将QQ语音的.amr格式文件转换为.mp3格式的文件有多种方法。以下是其中一种方法: 第一步,下载并安装一个音频格式转换器。常用且免费的转换器有Format Factory、FFmpeg等。用户可以根据自己的需求选择合适的转换器。 第二步,打开转换器并导入要转换的.amr文件。有些转换器支持拖拽文件转换器窗口,也可以点击转换器界面上的添加文件/文件夹按钮进行导入。 第三步,选择输出格式为.mp3。在转换器界面中,一般可以找到一个输出格式选项或者设置按钮,点击后可以选择输出格式为.mp3。 第四步,设置转换参数。一些转换器提供了一些自定义的转换参数,例如比特率、采样率等,用户可以根据需要进行设置。 第五步,选择输出路径。转换器一般会默认保存到一个文件夹中,用户可以选择自己想要保存的路径。 第六步,开始转换。点击转换按钮,转换器会开始处理并转换文件转换时间会根据文件的大小和转换器的效率而有所不同。 第七步,等待转换完成。一般转换器会显示转换进度条或者转换完成的提示,用户需要等待转换完成后才能获取转换后的.mp3文件。 最后,用户可以通过文件资源管理器或者转换器自带的播放器来播放转换后的.mp3文件,以验证转换是否成功。注意,这是一种常用的方法,具体转换方法可能会因转换器不同而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值