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)を超える場合、範囲が広いのでオーディオファイルを整数配列に変換できますか?

4

1 に答える 1

2

WAVE ファイルはチャンクを使用して構築されるため、raw ファイルは関係ありません。WAVE ファイルを理解するには、まずこれらのチャンクであるRIFFFile Formatを理解することをお勧めします。

于 2013-04-11T07:50:34.710 に答える