2017-02-04 23 views
0

オーディオファイルのフレームサイズを取得しようとしていますが、代わりに-1が表示されています。私はJavaDocでこの結果を解釈しようとしましたが、大きなことは言及していません。ここではソースコードは次のとおりです。彼にformat対象物を検査不明なフレームサイズ

import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader; 
/*....*/ 
File file = new File("/home/songs/audio.mp3"); 
MpegAudioFileReader mpegAudioFileReader = new MpegAudioFileReader();   
AudioInputStream audioInputStream = mpegAudioFileReader.getAudioInputStream(file); 
AudioFormat format = audioInputStream.getFormat(); 
long frameSize = format.getFrameSize();//frameSize = -1 
float frameRate = format.getFrameRate();//frameRate = 38.28125 

はこれを与える:MPEG1L3 44100.0 Hz, unknown bits per sample, stereo, unknown frame size, 38.28125 frames/second, それは私のオーディオファイルのプロパティに表示されないが、フレームサイズが不明な理由を私は知らない。

enter image description here

どんな援助も感謝以上です。ありがとう。

答えて

1

getFormat()などは、MPEGのメンバーによって実装されているので、これを空にしておくか、抽出することはできません。

あなたは別の.wavファイルを置く場合は、おそらく2を取得します:

try { 
    audioInputStream=AudioSystem.getAudioInputStream(new File(".......wav")); 

    System.out.println(audioInputStream.getFormat().getFrameSize()); 

} catch (Exception e) { 
     e.printStackTrace(); 
} 

その他の注意事項:私はあなたのディスプレイでのフレームサイズを参照してくださいいけません。むしろサンプル/ビットレートなので、それを区別してください。

しかし、mp3の場合はそれで生きなければなりません。

ことができます場合は、独自のフォーマットを作成することができます - いけないが、それは私をたくさん助けた、

AudioFormat format = audioInputStream.getFormat(); 
newFormat=new AudioFormat(
      AudioFormat.Encoding.PCM_SIGNED, 
      format.getSampleRate(), 
      16, 
      format.getChannels(), 
      format.getChannels() * 2, 
      format.getSampleRate(), 
      false); 
+0

はありがとう、あなたのアプリケーションを知っています – sasuke