オーディオファイルからデータのバイトを抽出する次の2つの実装の違いは何ですか?Java:オーディオファイルからバイトを抽出する
ファイルは.wav
ファイルなので、ヘッダーなどを使わずにデータのみを抽出します。
実現1:
public byte[] extractAudioFromFile(String filePath) {
try {
// Get an input stream on the byte array
// containing the data
File file = new File(filePath);
final AudioInputStream audioInputStream = AudioSystem
.getAudioInputStream(file);
byte[] buffer = new byte[4096];
int counter;
while ((counter = audioInputStream.read(buffer, 0, buffer.length)) != -1) {
if (counter > 0) {
byteOut.write(buffer, 0, counter);
}
}
audioInputStream.close();
byteOut.close();
} catch (Exception e) {
System.out.println(e);
System.exit(0);
}// end catch
return ((ByteArrayOutputStream) byteOut).toByteArray();
}
実装2:
public byte[] readAudioFileData(String filePath) throws IOException,
UnsupportedAudioFileException {
final AudioInputStream audioInputStream = AudioSystem
.getAudioInputStream(new File(filePath));
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, byteOut);
audioInputStream.close();
byteOut.close();
return ((ByteArrayOutputStream) byteOut).toByteArray();
}
すべての実装がバイトの異なったサイズを返します。 最初のものは、長さが2番目の実装よりも短いbyte[]
を返します。
ファイルのスペクトログラムを視覚化するためにデータのバイトを抽出しようとしました。
何か説明があります。
おかげで、
SAMER
Javaは頭字語ではありません。大文字ではありません。同じことを「データ」と同じです。 –