簡體   English   中英

用Java將.wav文件讀取到字節數組

[英]Reading .wav file to a byte array in Java

我正在嘗試將.wav文件讀取為字節數組,以通過套接字連接發送並在另一端播放。 讀取文件的頭數據后,我遇到了一個問題,文件的其余部分僅用0填充了字節數組。這是示例代碼。 我嘗試了幾種其他方法,但是都可以得到相同的結果。

File audioIn = new File("assets/file.wav");
byte [] byteArray = new byte[filesize];
FileInputStream fileInStream = new FileInputStream(audioIn);
fileInStream.read(byteArray);

這是從單個字節中獲取的調試數據。 標頭信息與Java方法之前提取的內容相對應。 根據我的閱讀,聲音數據應該從字節[44]開始,但是我在下面得到了結果。 數組的其余部分填充為0。

Byte 0: 82
Byte 1: 73
Byte 2: 70
Byte 3: 70
...
Byte 41: 97
Byte 42: 0
Byte 43: -68
Byte 44: -1
Byte 45: 1
Byte 46: 0
Byte 47: 0
...

還應當注意,由於WAVE信息將被預先發送,因此報頭數據將在這里被丟棄。 在此先感謝您的幫助。

FileInputStream.read不會用數據填充字節數組; 它只讀取一次即可讀取的內容。 您必須循環調用它才能讀取所有內容。

另外,您可以使用DataInputStream.readFully方法。 如果您使用的是Java 7,則可以使用Files.readAllBytes

您還可以簽出Apache / Commons IO庫,那里有一些方便的資料可用於處理常見的I / O任務,例如將整個文件讀入字節數組或關閉輸入/輸出樣板資料。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM