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 AttributesAudioAttributes 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 attributesEncodingAttributes attrs = new EncodingAttributes();attrs.setFormat(format);attrs.setAudioAttributes(audio);//EncodeEncoder encoder = new Encoder();encoder.encode(new MultimediaObject(source), target, attrs);} catch (Exception ex) {ex.printStackTrace();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/176945.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年好用的远程协同运维工具当属行云管家!

对于IT小伙伴而言&#xff0c;一款好用的远程协同运维工具是非常重要的&#xff0c;不仅可以提高工作效率&#xff0c;还能第一时间解决运维难题&#xff0c;所以好用的远程协同工具是非常必要的。这里就给大家推荐一款哦&#xff01; 2023年好用的远程协同运维工具当属行云管…

保护数据库防止数据泄露

为了避免金钱损失、声誉损害、机密性损失、不遵守政府法规等&#xff0c;保护组织的数据至关重要&#xff0c;保护数据库可以保护您的企业免受无数安全威胁&#xff0c;包括权限滥用、数据泄露、数据库注入和其他网络攻击。 选择工具保护数据库 Log360 是一站式 SIEM 解决方案…

省级数字经济政策词频分析数据集(2005-2023)

数据简介&#xff1a;当今社会&#xff0c;数字经济已经成为推动世界经济发展和社会变革的重要动力。随着信息技术的迅猛发展和智能化技术的普及应用&#xff0c;数字经济政策的制定和实施变得愈发重要。数字经济政策的词频分析成为了对政策文件和宣言进行深度解读的关键工具。…

NI MIMO原型验证系统硬件介绍 已更新 2023年1月6日

https://www.ni.com/zh-cn/shop/wireless-design-test/what-is-the-mimo-prototyping-system/introduction-to-the-ni-mimo-prototyping-system-hardware.html 概览 随着采用无线连接方式的设备大量涌现&#xff0c;迫切需要研发可满足更高数据与容量需求的无线技术。来势汹汹…

wx小程序web-view uniapp H5

最近微信小程序对有视频播放的审核严&#xff0c;需要提供“文娱类资质”。而申请这个资质比较繁琐。所以我们在小程序上用web-view做跳转到H5&#xff0c;这是小程序关于web-view文档说明https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html 开发前配…

MacOS Ventura 13 优化配置(ARM架构新手向导)

一、系统配置 1、About My MacBook Pro 2、在当前标签打开新窗口 桌面上创建目录的文件夹&#xff0c;每次新打开一个目录&#xff0c;就会创建一个窗口&#xff0c;这就造成窗口太多&#xff0c;不太好查看和管理&#xff0c;我们可以改成在新标签处打开新目录。需要在&…

Flink(五)【DataStream 转换算子(上)】

前言 这节注定是一个大的章节&#xff0c;我预估一下得两三天&#xff0c;涉及到的一些东西不懂就重新学&#xff0c;比如 Lambda 表达式&#xff0c;我只知道 Scala 中很方便&#xff0c;但在 Java 中有点发怵了&#xff1b;一个接口能不能 new 来构造对象? 答案是可以的&…

Hive的安装部署

目录 1.修改hadoop相关参数2.Hive解压安装3.Hive元数据的三种部署方式3.1 元数据库之Derby3.2 元数据库之Mysql3.3 元数据之MetaStore Server 4.hive的两种访问方式4.1 命令行的方式4.2 HiveServer2模式 1.修改hadoop相关参数 1&#xff09;修改core-site.xml [roothadoop102…

网网络安全基础之php开发 文件读取、写入功能的实现

前言 续之前的系列&#xff0c;这里php开发的文件操作的内容读取以及文本写入的部分 文件读取代码的实现 css代码 本系列的php博客都是这个css&#xff0c;名字都是index.css /* css样式初始化 */ * {font-family: Poppins, sans-serif;margin: 0;padding: 0;box-sizing: …

国际阿里云:Windows实例中数据恢复教程!!!

在处理磁盘相关问题时&#xff0c;您可能会碰到操作系统中数据盘分区丢失的情况。本文介绍了Windows系统下常见的数据盘分区丢失的问题以及对应的处理方法&#xff0c;同时提供了使用云盘的常见误区以及最佳实践&#xff0c;避免可能的数据丢失风险。 前提条件 已注册阿里云账…

做作业用台灯好还是不用台灯?高口碑护眼台灯分享

相信大家在生活着也遇到过这个问题&#xff0c;就是孩子在写作业时需不需要使用台灯。有些家长可能认为家里室内的亮度已经很足了&#xff0c;没必要使用台灯。 其实这个想法是错误的&#xff0c;孩子在书写作业时是需要使用台灯的&#xff01;室内灯源照到书桌时时远远不够的&…

Sealos 云操作系统一键集成 runwasi,解锁 Wasm 的无限潜力

WebAssembly (通常缩写为 Wasm) 是一种为网络浏览器设计的低级编程语言。它旨在提供一种比传统的 JavaScript 更快、更高效的方式来执行代码&#xff0c;以弥补 JavaScript 在性能方面的不足。通过使用二进制格式&#xff0c;WebAssembly 能够提供比传统 JavaScript 更快的解析…