Java实现音频转码(WAV、MP3、AMR互转)
作者:大鱼>
本文主要介绍了Java实现音频转码,包括WAV、MP3、AMR互转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1.背景
最近在集成一款产品支持语音双向对讲,首先是采集小程序的音频下发给设备端,然后可以控制设备录音生成音频链路让小程序播放。在这个过程中发现,设备除了AMR格式的音频外,其他的音频都不支持,而微信小程序有不支持AMR格式的音频文件,所以这里需要进行音频转码。
2.Java实现
2.1.引入Jar包
<dependency> <groupId>ws.schild</groupId> <artifactId>jave-core</artifactId> <version>2.4.4</version> </dependency> <!-- Linux 环境 --> <dependency> <groupId>ws.schild</groupId> <artifactId>jave-native-linux64</artifactId> <version>2.4.4</version> </dependency> <!-- Windows 环境 --> <!-- <dependency>--> <!-- <groupId>ws.schild</groupId>--> <!-- <artifactId>jave-native-win64</artifactId>--> <!-- <version>2.4.4</version>--> <!-- </dependency>-->
如果运行环境是Linux则使用:jave-native-linux64
如果运行环境是Windows则使用: jave-native-win64
2.2.封装工具方法
我们可以将源音频文件按照需求输出成:wav/mp3/amr
/** * 音频格式处理 * @param source 源音频文件 * @param target 输出的音频文件 * @param format wav/mp3/amr */ public static void audioFormatConversion(File source,File target,String format) { try { //Audio Attributes AudioAttributes audio = new AudioAttributes(); if(format.equals("wav")) { audio.setCodec("pcm_s16le"); }else if(format.equals("mp3")) { audio.setCodec("libmp3lame"); }else if(format.equals("amr")){ audio.setCodec("libvo_amrwbenc"); } audio.setBitRate(16000); audio.setChannels(1); audio.setSamplingRate(16000); //Encoding attributes EncodingAttributes attrs = new EncodingAttributes(); attrs.setFormat(format); attrs.setAudioAttributes(audio); //Encode Encoder encoder = new Encoder(); encoder.encode(new MultimediaObject(source), target, attrs); } catch (Exception ex) { ex.printStackTrace(); } }
到此这篇关于Java实现音频转码(WAV、MP3、AMR互转)的文章就介绍到这了,更多相关Java 音频转码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!