码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java实现音频转码,WAV、MP3、AMR互转


    1.背景

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

    2.Java实现

    2.1.引入Jar包

    1. <dependency>
    2. <groupId>ws.schildgroupId>
    3. <artifactId>jave-coreartifactId>
    4. <version>2.4.4version>
    5. dependency>
    6. <dependency>
    7. <groupId>ws.schildgroupId>
    8. <artifactId>jave-native-linux64artifactId>
    9. <version>2.4.4version>
    10. 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. }

  • 相关阅读:
    CSS进阶语法
    Camera-ISP DP/DM/EE/NR/CR
    秋招突击——6/10——复习{(树形DP)树的最长路径、}——新作{电话号码的字母组合}
    IDEA安装与配置
    服务治理-Eureka
    新手指南:如何运行自己的以太坊验证者节点
    深入理解Epoll是如何实现IO多路复用的,值得收藏
    面面面试三
    【云原生之Docker实战】使用Docker部署Pydio Cells文件分享工具
    深度学习7 Transformer系列实例分割Mask2Former
  • 原文地址:https://blog.csdn.net/qq_17486399/article/details/134358990
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号