JJa*_*ipt 18 java windows video javafx media-player
我已经创建了一个基本的JavaFX媒体播放器.在我的Windows 10操作系统上,一切正常,它的功能完全符合预期.
private MediaPlayer initializeMediaPlayer(){
Media media = new Media(getClass().getResource("1-1.mp4").toString());
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
mediaPlayer.setRate(1.25);
mediaPlayer.setMute(true);
return mediaPlayer;
}
Run Code Online (Sandbox Code Playgroud)
然而,当我在Windows 7上运行此代码时,视频不会循环:它播放五秒钟,在视频结束时,视频就会冻结.鉴于视频只有5秒长,循环对于此程序正常工作绝对必不可少.
以下是我对此问题的了解:
环境:
我使用此网站上的 mp4 作为测试样本:techslides.com
我的代码(注意:我使用自定义 FX 框架,所以我只向您展示设置播放器的控制器创建方法):
@Override
protected BorderPane createView() {
final BorderPane view = new BorderPane();
final Media media = new Media(getClass().getResource("small.mp4").toString());
final MediaPlayer player = new MediaPlayer(media);
player.setCycleCount(MediaPlayer.INDEFINITE);
player.setRate(1.25);
player.setMute(true);
player.setOnEndOfMedia(() -> {
player.play();
});
player.play();
final MediaView mediaView = new MediaView(player);
view.setCenter(mediaView);
return view;
}
Run Code Online (Sandbox Code Playgroud)
我使用回调并手动启动重播。这作为一个无限循环工作,尽管这是更“复杂”的方法。另外,这对我也有用,应该被认为是更“正确”的方式:
@Override
protected BorderPane createView() {
final BorderPane view = new BorderPane();
final Media media = new Media(getClass().getResource("small.mp4").toString());
final MediaPlayer player = new MediaPlayer(media);
player.setAutoPlay(true);
player.setCycleCount(MediaPlayer.INDEFINITE); // or Integer.MAX_VALUE
player.setRate(1.25);
player.setMute(true);
final MediaView mediaView = new MediaView(player);
view.setCenter(mediaView);
return view;
}
Run Code Online (Sandbox Code Playgroud)
附加说明:
small.mp4技术幻灯片页面中给出的代码测试了这两个代码| 归档时间: |
|
| 查看次数: |
623 次 |
| 最近记录: |