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

2.Java實現(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>-->如果運行環(huán)境是Linux則使用:jave-native-linux64
如果運行環(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實現(xiàn)音頻轉(zhuǎn)碼(WAV、MP3、AMR互轉(zhuǎn))的文章就介紹到這了,更多相關(guān)Java 音頻轉(zhuǎn)碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中實現(xiàn)兼容ie6 7 8 9的spring4+websocket
這篇文章主要介紹了java中實現(xiàn)兼容ie6 7 8 9的spring4+websocket程序代碼,十分的簡單實用,有需要的小伙伴可以參考下。2015-06-06
Java 數(shù)組元素倒序的三種方式(小結(jié))
這篇文章主要介紹了Java 數(shù)組元素倒序的三種方式(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
SpringBoot整合RabbitMQ實戰(zhàn)教程附死信交換機
這篇文章主要介紹了SpringBoot整合RabbitMQ實戰(zhàn)附加死信交換機,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
List集合中對數(shù)據(jù)實現(xiàn)多重規(guī)則進行排序的案例
今天小編就為大家分享一篇關(guān)于List集合中對數(shù)據(jù)實現(xiàn)多重規(guī)則進行排序的案例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解
這篇文章主要介紹了JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10

