ここ数日、これを機能させるために少し問題がありました。しかし、ネットワーク経由で生データを送信するアプリケーションが必要です。次に、このバイナリ データを読み取り、wav (任意のオーディオ) ファイルに保存します。後で圧縮を見るかもしれません。
したがって、問題のあるコード:
byte[] allBytes = ...
InputStream b_in = new ByteArrayInputStream(allBytes);
try
{
AudioFormat format = new AudioFormat(8000f, 16, 1, true, true);
AudioInputStream stream = new AudioInputStream(b_in, format, allBytes.length);
//AudioInputStream stream = AudioSystem.getAudioInputStream(b_in);
上記のステートメントも使用しようとしましたが、例外が発生しました: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from stream
. 私のストリームは生のオーディオ データであり、ウェーブ ヘッダーがないため、例外がスローされていると思いますか?
File newPath = new File(SystemConfiguration.getLatest().voiceNetworkPathDirectory + currentPhoneCall.fileName);
if (!AudioSystem.isFileTypeSupported(Type.WAVE, stream))
{
Logger.error("Audio System file type not supported");
}
AudioSystem.write(stream, Type.WAVE, newPath);
ファイルは正常に書き込みますが、すべて静的です。このようなものを使用して、出力にウェーブ ヘッダーを作成する必要がありますか。出力された wav ファイルをメモ帳で見ると、「RIFF」で始まるヘッダーがあるように見えます。
入力ストリームに偽のヘッダーを追加する必要がありますか? 独自の出力ヘッダーを作成し、バイナリ ライターで保存する必要がありますか?