簡述
該工具類主要是為了將各類音頻轉為wav標準格式,其中可以調節采樣率、聲道數等指標。主要是使用ffmpeg命令進行轉換。
環境依賴
maven依賴
1
2
3
4
5
|
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version> 1.5 . 5 </version> </dependency> |
這個包是個全能包,很大,具體可以自己查查它的作用。
ffmpeg依賴
這里要做兩點說明:
1、如果你是本機運行,需要在你運行的機器上安裝ffmpeg,并且將命令配置到環境變量中。
2、如果你是在docker運行,那么在容器內也需要安裝ffmpeg,所以給一個建議,可以將帶有ffmpeg命令和jdk8環境的docker打包為一個專門的ffmpeg運行鏡像。以便以后還有使用的場景。
工具類代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
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: 音頻轉換為wav格式工具類 */ @Slf4j public class AudioTransforWavUtils { /** * 音頻轉換 * * @param localPath 本地音頻 * @param fileName 文件名 * @return 轉換后的地址 * @throws Exception 異常 */ public static String transforAudio(String localPath, String fileName) throws Exception { // 這個本地轉換路徑可以自己調整 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( "音頻轉換失敗失敗" ); } } /** * wav音頻轉換為標準音頻 * * @param oldFilePath 老地址 * @param newFilePath 新地址 * @return 轉換完成后的地址 */ public static Optional<String> transforWavStandard(String oldFilePath, String newFilePath) { // 獲取本地ffmpeg執行器 String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg. class ); // 生成轉換命令管道 ProcessBuilder transforBuilder = new ProcessBuilder( ffmpeg, "-i" , oldFilePath, "-f" , "wav" , "-ar" , "16000" , "-ac" , "1" , "-y" , newFilePath); try { // inheritIO是指將 子流程的IO與當前java流程的IO設置為相同 transforBuilder.inheritIO().start().waitFor(); } catch (InterruptedException | IOException e) { log.error( "ffmpeg轉換wav為標準格式異常" , e); return Optional.empty(); } // 返回pcm文件路徑 return Optional.of(newFilePath); } public static void main(String[] args) throws Exception { transforAudio( "C:\\Users\\huyi\\Desktop\\測試.mp3" , "new" ); } } |
測試數據為MP3音頻
執行打印,會出現ffmpeg的執行打印。
執行結果。
說明:我們看到已經轉換為wav格式。 具體的采樣率、聲道等,可以按照自己的需求配置或者變量化。
總結
沒什么好總結的,整就完了。
到此這篇關于java 音頻轉為wav格式標準音頻的文章就介紹到這了,更多相關java 音頻轉為wav格式內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/zhiweihongyan1/article/details/120779902