java 音頻轉(zhuǎn)換wav格式標(biāo)準(zhǔn)音頻的操作
簡述
該工具類主要是為了將各類音頻轉(zhuǎn)為wav標(biāo)準(zhǔn)格式,其中可以調(diào)節(jié)采樣率、聲道數(shù)等指標(biāo)。主要是使用ffmpeg命令進(jìn)行轉(zhuǎn)換。
環(huán)境依賴
maven依賴
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.5.5</version> </dependency>
這個包是個全能包,很大,具體可以自己查查它的作用。
ffmpeg依賴
這里要做兩點(diǎn)說明:
1、如果你是本機(jī)運(yùn)行,需要在你運(yùn)行的機(jī)器上安裝ffmpeg,并且將命令配置到環(huán)境變量中。
2、如果你是在docker運(yùn)行,那么在容器內(nèi)也需要安裝ffmpeg,所以給一個建議,可以將帶有ffmpeg命令和jdk8環(huán)境的docker打包為一個專門的ffmpeg運(yùn)行鏡像。以便以后還有使用的場景。
工具類代碼
import lombok.extern.slf4j.Slf4j; import org.bytedeco.javacpp.Loader; import java.io.IOException; import java.util.Optional; /** @Author huyi @Date 2021/10/15 10:20 @Description: 音頻轉(zhuǎn)換為wav格式工具類 */ @Slf4j public class AudioTransforWavUtils { /** * 音頻轉(zhuǎn)換 * * @param localPath 本地音頻 * @param fileName 文件名 * @return 轉(zhuǎn)換后的地址 * @throws Exception 異常 */ public static String transforAudio(String localPath, String fileName) throws Exception { // 這個本地轉(zhuǎn)換路徑可以自己調(diào)整 String transforPath = "D:" + "/" + fileName + ".wav"; Optional<String> transPath = Optional.empty(); try { transPath = transforWavStandard(localPath, transforPath); } catch (Exception exception) { exception.printStackTrace(); } if (transPath.isPresent()) { return transPath.get(); } else { throw new Exception("音頻轉(zhuǎn)換失敗失敗"); } } /** * wav音頻轉(zhuǎn)換為標(biāo)準(zhǔn)音頻 * * @param oldFilePath 老地址 * @param newFilePath 新地址 * @return 轉(zhuǎn)換完成后的地址 */ public static Optional<String> transforWavStandard(String oldFilePath, String newFilePath) { // 獲取本地ffmpeg執(zhí)行器 String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class); // 生成轉(zhuǎn)換命令管道 ProcessBuilder transforBuilder = new ProcessBuilder( ffmpeg, "-i", oldFilePath, "-f", "wav", "-ar", "16000", "-ac", "1", "-y", newFilePath); try { // inheritIO是指將 子流程的IO與當(dāng)前java流程的IO設(shè)置為相同 transforBuilder.inheritIO().start().waitFor(); } catch (InterruptedException | IOException e) { log.error("ffmpeg轉(zhuǎn)換wav為標(biāo)準(zhǔn)格式異常", e); return Optional.empty(); } // 返回pcm文件路徑 return Optional.of(newFilePath); } public static void main(String[] args) throws Exception { transforAudio("C:\\Users\\huyi\\Desktop\\測試.mp3", "new"); } }
測試數(shù)據(jù)為MP3音頻
執(zhí)行打印,會出現(xiàn)ffmpeg的執(zhí)行打印。
執(zhí)行結(jié)果。
說明:我們看到已經(jīng)轉(zhuǎn)換為wav格式。 具體的采樣率、聲道等,可以按照自己的需求配置或者變量化。
總結(jié)
沒什么好總結(jié)的,整就完了。
到此這篇關(guān)于java 音頻轉(zhuǎn)為wav格式標(biāo)準(zhǔn)音頻的文章就介紹到這了,更多相關(guān)java 音頻轉(zhuǎn)為wav格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Struts2的配置 struts.xml Action詳解
這篇文章主要介紹了Struts2的配置 struts.xml Action詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10jsp+servlet實現(xiàn)簡單登錄頁面功能(附demo)
本文主要介紹了jsp+servlet實現(xiàn)簡單登錄頁面功能登錄成功跳轉(zhuǎn)新頁面,登錄失敗在原登錄界面提示登錄失敗信息,對初學(xué)者有一定的幫助,感興趣的可以了解一下2021-07-07springboot自動配置原理以及spring.factories文件的作用詳解
這篇文章主要介紹了springboot自動配置原理以及spring.factories文件的作用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10Springboot一個注解搞定返回參數(shù)key轉(zhuǎn)換功能
平時在搬磚的時候,大家有沒有遇到過這樣場景,由于各種因素導(dǎo)致,一個接口返回的數(shù)據(jù)里面的key是A,?但是客戶端(前端)要求返回的key不叫A叫Aa?。也就是返回的值不變,就是key換了。本文將通過一個注解搞定返回參數(shù)key轉(zhuǎn)換,需要的可以了解一下2022-10-10Java for循環(huán)常見優(yōu)化方法案例詳解
這篇文章主要介紹了Java for循環(huán)常見優(yōu)化方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08