赞
踩
最近在集成一款产品支持语音双向对讲,首先是采集小程序的音频下发给设备端,然后可以控制设备录音生成音频链路让小程序播放。在这个过程中发现,设备除了AMR格式的音频外,其他的音频都不支持,而微信小程序有不支持AMR格式的音频文件,所以这里需要进行音频转码。
- <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
我们可以将源音频文件按照需求输出成: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();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。