私はオブジェクト自体はコンソールでULAWエンコーディングを返しULAWjava AudioSystem.getTargetEncodings(AudioFormat)は、私たちが提供するAudioFormatのエンコーディングと異なるエンコーディングを返すのはなぜですか?
System.out.println(audioInput.getFormat().getEncoding());
としてエンコーディングを持っていたAudioInputStream audioInputを持っています。
事があるPCM_SIGNED
、私は仕事をしなければならない:私はAudioSystem.getTargetEncodings(audioInput)を使用する場合
ULAW
しかし、それは返すエンコーディング
Encoding availableEncoding[] = AudioSystem.getTargetEncodings(audioIn.getFormat());
for (Encoding encode : availableEncoding)
{
System.out.println(encode);
}
の異なるセットを返しますこれらのファイルの多くでは、オブジェクトのエンコーディングとターゲットエンコーディングが一致しません。これらのオーディオファイルがAudioSystemのクリップで開かれ、私はターゲットエンコーディング
audioInput = AudioSystem.getAudioInputStream(Encoding.PCM_SIGNED , audioInput);
audioClip.open(audioInput); //it works !!
の一つにオーディオを変換する場合、このアプローチは、すべての音のために働くように見えるが、
Clip audioClip = AudioSystem.getClip();
audioClip.open(audioInput);
// this throws error javax.sound.sampled.LineUnavailableException: line with format ULAW 8000.0 Hz, 8 bit, mono, 1 bytes/frame, not supported.
ただし例外をスローすることはできません私がやっていることについての知識はほとんどありません。 Javaのドキュメントによると、AudioSystem.getTargetEncodings記述は、(それが役立つかもしれない場合には)次のとおりです。
"Obtains the encodings that the system can obtain from an audio input stream with the specified format using the set of installed format converters."
長い詳細は申し訳ありませんが、ここは私の質問です:
なぜJavaのAudioSystemのはありません。 getTargetEncodings(AudioFormat)は、パラメータで指定したAudioFormatのエンコーディングとは異なる結果を返します。
これは、私自身の場合、ファイル自体のエンコーディングがULAWであっても、システムがPCM_SIGNEDエンコーディングでしかファイルを認識して処理できないことを意味しますか?
私の解決策はありますか?それは本当にバグ私を私がこれまで学んだことによる
ここでは講義の内容はわかりませんが、うまくいけば機能します - AudioSystem.getTargetEncodingsはシステムが変換できるものを返すので、PCM - Fineに変換できます。私は完全な話を知っていないので、あなたがうまくいけば、短期的にはその合法性があるとコメントすることはできません - 問題に遭遇した場合、 – gpasch
母親、講演をおねがいします。私は本当にこれまでに学んだ情報を可能な限り提供したいと思っています。私はちょっとそれが逆光していると感じました – LameLoura