Java實(shí)現(xiàn)音頻轉(zhuǎn)碼(WAV、MP3、AMR互轉(zhuǎn))
1.背景
最近在集成一款產(chǎn)品支持語音雙向?qū)χv,首先是采集小程序的音頻下發(fā)給設(shè)備端,然后可以控制設(shè)備錄音生成音頻鏈路讓小程序播放。在這個(gè)過程中發(fā)現(xiàn),設(shè)備除了AMR格式的音頻外,其他的音頻都不支持,而微信小程序有不支持AMR格式的音頻文件,所以這里需要進(jìn)行音頻轉(zhuǎn)碼。

2.Java實(shí)現(xiàn)
2.1.引入Jar包
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-core</artifactId>
<version>2.4.4</version>
</dependency>
<!-- Linux 環(huán)境 -->
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-native-linux64</artifactId>
<version>2.4.4</version>
</dependency>
<!-- Windows 環(huán)境 -->
<!-- <dependency>-->
<!-- <groupId>ws.schild</groupId>-->
<!-- <artifactId>jave-native-win64</artifactId>-->
<!-- <version>2.4.4</version>-->
<!-- </dependency>-->如果運(yùn)行環(huán)境是Linux則使用:jave-native-linux64
如果運(yùn)行環(huán)境是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();
}
}到此這篇關(guān)于Java實(shí)現(xiàn)音頻轉(zhuǎn)碼(WAV、MP3、AMR互轉(zhuǎn))的文章就介紹到這了,更多相關(guān)Java 音頻轉(zhuǎn)碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)訂單超時(shí)未支付自動(dòng)取消的8種方法總結(jié)
這篇文章主要為大家介紹了Java實(shí)現(xiàn)訂單超時(shí)未支付自動(dòng)取消功能的8種不同方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08
Java中使用JDBC操作數(shù)據(jù)庫簡單實(shí)例
這篇文章主要介紹了Java中使用JDBC操作數(shù)據(jù)庫簡單實(shí)例,本文以Mysql為例介紹使用Java JDBC操作數(shù)據(jù)庫的6個(gè)步驟,需要的朋友可以參考下2015-06-06
SpringBoot 如何添加容器啟動(dòng)的初始化邏輯的操作方法
這篇文章主要介紹了SpringBoot 如何添加容器啟動(dòng)的初始化邏輯,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
SpringBoot2.0整合jackson配置日期格式化和反序列化的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot2.0整合jackson配置日期格式化和反序列化的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11

