Как играть в кадры игрока JavazoomJAVA

Программисты JAVA общаются здесь
Anonymous
Как играть в кадры игрока Javazoom

Сообщение Anonymous »

У меня есть проблема с воспроизведением музыкальных рамков от Javazoom AdvancedPlayer. Я кодирую игрока с ползунком, который может контролировать продолжительность музыки. Здесь вы можете увидеть мой код максимальных кадров и тестового кода воспроизводимых кадров. Метод возвращает максимальные рамки музыки правильно работает, но воспроизводимые кадры не делают.if (invisibleSliderRect.intersect(mx, my)) {
float clickPosition = Math.max(0, Math.min(1, (mx - invisibleSliderRect.getX()) / invisibleSliderRect.getW()));
int targetTime = (int) ((float) (clickPosition * music.getMaxFrames()));
music.seekTo(targetTime);

return true;
}
< /code>
Вот код кадров. getFramesplayed () не работает правильно, он не возвращает кадры, как getMaxFrames (). Он возвращает больше, чем getMaxFrames (), не бросает исключения и т. Д. < /P>
public int getFramesPlayed() {
int framesPlayed = skippedFrames;
AudioDevice audioDevice = ((JavaZoomAccessor) player).getAudio();
SourceDataLine sourceDataLine;
if (player != null && audioDevice instanceof JavaSoundAudioDevice js && (sourceDataLine = ((JavaSoundAudioDeviceAccessor) js).getSource()) != null) {
long bytesWritten = sourceDataLine.getLongFramePosition();
int frameSize = sourceDataLine.getFormat().getFrameSize();
int playedFrames = 0;
if (frameSize > 0) {
playedFrames = (int) (bytesWritten / frameSize);
}

framesPlayed += playedFrames;

int maxFrames = getMaxFrames();
if (framesPlayed > maxFrames) framesPlayed = maxFrames;
}
return framesPlayed;
}

public int getMaxFrames() {
if (currentTrackFile == null) return 0;
try {
FileInputStream fis = new FileInputStream(currentTrackFile);
Bitstream bitstream = new Bitstream(fis);
Header header = null;
int frameCount = 0;
while ((header = bitstream.readFrame()) != null) {
frameCount++;
bitstream.closeFrame();
}

fis.close();
return frameCount;
} catch (Exception e) {
System.err.println("Error getting max frames: " + e.getMessage());
return 0;
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... oom-player

Вернуться в «JAVA»