音频格式转换Java代码,以mp3转amr为例

import ws.schild.jave.*;

import java.io.File;

public class VoiceToAmr {
    /**创建maven项目,导入依赖
     
     ws.schild
     jave-all-deps
     2.6.0
     
     */
    //程序员是不需要格式工厂的,直接自己写代码解决。算法如果我们写不来,我们可以做调包侠呀。技术都是站在巨人的肩膀上,我调包我快乐!没必要抵触。
    //
    //以MP3转为amr格式举例:

    public static void main(String[] args) {
        System.out.println(m4aToWav());
//        encodingFormats();
//        codec();
    }

    public static boolean m4aToWav() {
        boolean succeeded = true;
        try {
            File source = new File("C:\\Users\\Administrator\\Desktop\\obj_wo3.mp3");
            File target = new File("C:\\Users\\Administrator\\Desktop\\targetnew1.amr");

            //Audio Attributes
            AudioAttributes audio = new AudioAttributes();
//            audio.setCodec("pcm_s16le");//wav
//            audio.setCodec("libmp3lame");//mp3
            audio.setCodec("libvo_amrwbenc");//amr
            audio.setBitRate(16000);
            audio.setChannels(1);
            audio.setSamplingRate(16000);

            //Encoding attributes
            EncodingAttributes attrs = new EncodingAttributes();
            attrs.setFormat("amr");
            attrs.setAudioAttributes(audio);

            //Encode
            Encoder encoder = new Encoder();
            encoder.encode(new MultimediaObject(source), target, attrs);

        } catch (Exception ex) {
            ex.printStackTrace();
            succeeded = false;
        }
        return succeeded;
    }

    //对于格式属性,可以调整成需要的数值。如果需要其他的Codec,可以使用如下方法打印出所有支持的Codec,选择所需要的。
    public static void codec() {
        Encoder encoder = new Encoder();
        try {
            for (int i = 0; i < encoder.getAudioEncoders().length; i++) {
                System.out.println(encoder.getAudioEncoders()[i].toString());
            }
        } catch (EncoderException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //对于支持的格式种类,可以使用如下方法打印出所有支持的格式。
    public static void encodingFormats() {
        Encoder encoder = new Encoder();
        try {
            for (int i = 0; i < encoder.getSupportedEncodingFormats().length; i++) {
                System.out.println(encoder.getSupportedEncodingFormats()[i].toString());
            }
        } catch (EncoderException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

你可能感兴趣的:(java,开发语言,后端)