未知帧大小
Unknown frame size
试图获取音频文件的帧大小,但我得到的是 -1。我试图在 JavaDoc 中寻找对这个结果的解释,但它没有提到任何大的东西。这是源代码:
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
检查他 format
对象给出了这个:MPEG1L3 44100.0 Hz, unknown bits per sample, stereo, unknown frame size, 38.28125 frames/second,
我不知道为什么帧大小是未知的,尽管它确实出现在我的音频文件属性中:
非常感谢您的帮助。谢谢
getFormat() 等是由 MPEG 人员实现的,因此它 returns 他们拥有的东西 - 可能他们将此留空或无法提取;
如果你放另一个 .wav 文件你可能会得到 2:
try {
audioInputStream=AudioSystem.getAudioInputStream(new File(".......wav"));
System.out.println(audioInputStream.getFormat().getFrameSize());
} catch (Exception e) {
e.printStackTrace();
}
其他注意事项:我在您的显示器中没有看到帧大小;而是 sample/bit 比率,因此请务必对此加以区分。
但对于 mp3,您必须忍受这一点。
如果有帮助,您也可以创建自己的格式 - 不知道您的应用程序
AudioFormat format = audioInputStream.getFormat();
newFormat=new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
16,
format.getChannels(),
format.getChannels() * 2,
format.getSampleRate(),
false);
试图获取音频文件的帧大小,但我得到的是 -1。我试图在 JavaDoc 中寻找对这个结果的解释,但它没有提到任何大的东西。这是源代码:
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
检查他 format
对象给出了这个:MPEG1L3 44100.0 Hz, unknown bits per sample, stereo, unknown frame size, 38.28125 frames/second,
我不知道为什么帧大小是未知的,尽管它确实出现在我的音频文件属性中:
非常感谢您的帮助。谢谢
getFormat() 等是由 MPEG 人员实现的,因此它 returns 他们拥有的东西 - 可能他们将此留空或无法提取;
如果你放另一个 .wav 文件你可能会得到 2:
try {
audioInputStream=AudioSystem.getAudioInputStream(new File(".......wav"));
System.out.println(audioInputStream.getFormat().getFrameSize());
} catch (Exception e) {
e.printStackTrace();
}
其他注意事项:我在您的显示器中没有看到帧大小;而是 sample/bit 比率,因此请务必对此加以区分。
但对于 mp3,您必须忍受这一点。
如果有帮助,您也可以创建自己的格式 - 不知道您的应用程序
AudioFormat format = audioInputStream.getFormat();
newFormat=new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
16,
format.getChannels(),
format.getChannels() * 2,
format.getSampleRate(),
false);