我在播放器用户界面中有一个控制栏,其中有一个播放按钮,一个滑块和一个时间戳(格式为mm:ss/$video-duration
,其中mm为当前分钟,ss为当前秒,$ video-duration为其姓名状态,视频的持续时间)。
我的代码更新了MediaPlayerEventAdapter方法positionChanged(MediaPlayer mediaPlayer, float newPosition)
中的滑块位置和时间戳。但是,我相信由于该方法中的代码,视频播放正在跳帧(当播放的视频帧速率较低时,波动性变得特别明显)。
@Override
public void positionChanged(MediaPlayer player, final float newPosition) {
final float newTime = Math.round(newPosition*getVideoDuration());
slider.setValue(Math.round(newTime*VIDEO_FRAME_RATE));
timeLabel.setText(formatTimeDisplay(newTime));
}
如果positionChanged不是运行此类代码的好地方,那么您建议我尝试一下?
答案 0 :(得分:0)
我想出了原因(希望我犯的错误可以帮助别人) -
我的滑块使用了ChangeListener,在stateChanged(ChangeEvent e)
方法中,我正在更新视频播放位置(当人们拖动滑块时,我希望视频播放位置相应地更新)所以基本上我创建了类似于循环的情况,当视频播放位置改变时滑块的位置得到更新,当滑块的位置改变时,它也会更新视频播放位置。
我通过使用MouseMotionListener来解决问题并实现mouseDragged(MouseEvent arg0)
方法来处理人们拖动滑块以更改播放位置时的情况。