当前位置:   article > 正文

Java实现音频转码,WAV、MP3、AMR互转_java wav转mp3

java wav转mp3

1.背景

最近在集成一款产品支持语音双向对讲,首先是采集小程序的音频下发给设备端,然后可以控制设备录音生成音频链路让小程序播放。在这个过程中发现,设备除了AMR格式的音频外,其他的音频都不支持,而微信小程序有不支持AMR格式的音频文件,所以这里需要进行音频转码。

2.Java实现

2.1.引入Jar包

  1. <dependency>
  2. <groupId>ws.schild</groupId>
  3. <artifactId>jave-core</artifactId>
  4. <version>2.4.4</version>
  5. </dependency>
  6. <!-- Linux 环境 -->
  7. <dependency>
  8. <groupId>ws.schild</groupId>
  9. <artifactId>jave-native-linux64</artifactId>
  10. <version>2.4.4</version>
  11. </dependency>
  12. <!-- Windows 环境 -->
  13. <!-- <dependency>-->
  14. <!-- <groupId>ws.schild</groupId>-->
  15. <!-- <artifactId>jave-native-win64</artifactId>-->
  16. <!-- <version>2.4.4</version>-->
  17. <!-- </dependency>-->

如果运行环境是Linux则使用:jave-native-linux64

如果运行环境是Windows则使用: jave-native-win64

2.2.封装工具方法

我们可以将源音频文件按照需求输出成:wav/mp3/amr

  1. /**
  2. * 音频格式处理
  3. * @param source 源音频文件
  4. * @param target 输出的音频文件
  5. * @param format wav/mp3/amr
  6. */
  7. public static void audioFormatConversion(File source,File target,String format) {
  8. try {
  9. //Audio Attributes
  10. AudioAttributes audio = new AudioAttributes();
  11. if(format.equals("wav")) {
  12. audio.setCodec("pcm_s16le");
  13. }else if(format.equals("mp3")) {
  14. audio.setCodec("libmp3lame");
  15. }else if(format.equals("amr")){
  16. audio.setCodec("libvo_amrwbenc");
  17. }
  18. audio.setBitRate(16000);
  19. audio.setChannels(1);
  20. audio.setSamplingRate(16000);
  21. //Encoding attributes
  22. EncodingAttributes attrs = new EncodingAttributes();
  23. attrs.setFormat(format);
  24. attrs.setAudioAttributes(audio);
  25. //Encode
  26. Encoder encoder = new Encoder();
  27. encoder.encode(new MultimediaObject(source), target, attrs);
  28. } catch (Exception ex) {
  29. ex.printStackTrace();
  30. }
  31. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/80205
推荐阅读
相关标签
  

闽ICP备14008679号