2013-04-11 267 views
1
import java.io.BufferedInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 

import javax.sound.sampled.AudioInputStream; 
import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.UnsupportedAudioFileException; 


public class Audio_to_bytes { 

    public static void main(String args[]) throws IOException 
{ 
    File WAV_FILE = new File("/home/cybersecurity/Desktop/scream.wav"); 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    AudioInputStream in = null; 
    try { 
     in = AudioSystem.getAudioInputStream(WAV_FILE); 
    } catch (UnsupportedAudioFileException e) { 

     e.printStackTrace(); 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 


    int read,i; 
    byte[] buff = new byte[1024]; 
    while ((read = in.read(buff)) > 0) 
    { 
     out.write(buff, 0, read); 
    } 
    out.flush(); 
    byte[] audioBytes = out.toByteArray(); 
    for(i=0;i<audioBytes.length;i++) 
     System.out.println(audioBytes[i]); 
} 
} 

上述代碼是將.wav文件轉換爲字節數組。當我執行程序時,我得到許多值爲-128或-127,我想知道是否這些值是精確值,或者如果它超出了字節(-128到128), 的範圍,則該值將成爲邊界值。如果可以,則我可以將音頻文件轉換爲整數數組,因爲它具有更寬的範圍。將.wav轉換爲數組

+0

你試過序列化的概念嗎? – 2013-04-11 07:46:31

+0

爲什麼字節會成爲邊界值?是什麼給了你這個想法?這個數字會翻轉。 – 2013-04-11 07:49:55

+0

我已經試過我的程序與許多音頻文件,我總是得到最後的100-150值爲-128或-127僅適用於所有文件 ,因爲我是新手,所以想問問 – 2013-04-11 07:51:42

回答

2

原始文件不相關,因爲WAVE文件是使用塊構建的。我建議首先理解這些塊,RIFF File Format,瞭解WAVE文件。

+0

如何以pcm格式存儲音頻? – 2013-04-12 09:38:51

+0

網絡上有大量的規範說明了這一點。這也是另一個與你目前的問題無關的問題。 – 2013-04-12 09:58:40

+0

我已經在我的問題的評論中回答了爲什麼這個轉換是必要的,在搜索後我發現pcm格式可以幫助 所以我不認爲這個無關 – 2013-04-12 10:34:06