0
私はオーディオファイルから100ミリ秒のオーディオフレームを取得したいと思います。私はフレームを取得するために、以下のコードを使用しますが、私はほんの少しの開始フレームでデータを取得します。私は多くのJavaでオーディオファイルの処理を認識していません。私は正しいですか、何かが間違っています。私の悪い英語を申し訳ありません。javaで100ミリ秒のオーディオフレーミング。
public static void main(String[] args) throws UnsupportedAudioFileException, IOException {
byte[] audioBytes;
File file = new File("3.wav");
AudioInputStream frame;
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(file);
AudioFormat format = fileFormat.getFormat();
long audioFileLength = file.length();
int frameSize = format.getFrameSize();
double frameRate = format.getFrameRate();
int frameDuration = 10;
double frameLength = ( (frameRate * frameSize)/frameDuration);
double numOfFrames = (audioFileLength /frameLength);
long remaining = audioFileLength;
long framesOfAudioToCopy = (long) (format.getFrameRate()/frameDuration);
System.out.println(framesOfAudioToCopy);
int i = 0;
while(remaining > frameLength )
{
audioInputStream.skip((long) (i * frameLength));
frame = new AudioInputStream(audioInputStream, format, framesOfAudioToCopy);
audioBytes = new byte[frame.available()];
frame.read(audioBytes);
System.out.println(Arrays.toString(audioBytes));
i++;
remaining = (long) (remaining - frameLength);
/* if(remaining < frameLength)
{
i++;
audioInputStream.skip((long) (i * frameLength));
frame = new AudioInputStream(audioInputStream, format, framesOfAudioToCopy);
audioBytes = new byte[frame.available()];
frame.read(audioBytes);
}*/
}
}
あなたの返事のためにthnaks。それは素晴らしいと完璧に動作します。もう一度あなたに感謝します。 –
ようこそ。これが問題を解決すると思うなら、私の答えを受け入れることを検討することができます。 http://stackoverflow.com/help/someone-answers – Radiodef