JavaFX - 如何在计算机系统时钟的准确当前时间开始播放 24 小时视频(使用 javafx 媒体)?
JavaFX - How can i start a 24 hour video (using javafx media) at the exact current time from the computer system clock?
我有一个 24 小时的录音,从 00:00 小时开始,到 24 小时后结束。我想要 运行 程序并让它在显示系统时钟的同时开始播放 video。例如,巴西现在是 20:14,所以如果我执行该程序,video 将在 20 小时 14 分钟处开始播放。
基本上,我想将 video 时间与系统时钟上显示的实际时间同步。
我的代码有点乱,因为分配需要使用 Processing ide 但是对于我来说,实际上我正在尝试使用 Eclipse 导入 PApplet 和所有这些。无论如何,我只是查找了如何使用 javafx 播放 video,即使我的 video 很大,它也可以立即开始播放。
public class UsingProcessing extends PApplet{
String Dir = System.getProperty("C:");
Stage stage;
public static void main(String[] args) {
PApplet.main("UsingProcessing");
}
public void settings(){
size(1100, 618,FX2D);
}
public void setup(){
try {
Field field = PSurfaceFX.class.getDeclaredField("stage");
field.setAccessible(true);
stage = (Stage)field.get(surface);
File f = new File(Dir, "narrativas.mp4");
Media media = new Media(f.toURI().toURL().toString());
javafx.scene.media.MediaPlayer player = new
javafx.scene.media.MediaPlayer(media);
MediaView viewer = new MediaView(player);
DoubleProperty width = viewer.fitWidthProperty();
DoubleProperty height = viewer.fitHeightProperty();
width.bind(Bindings.selectDouble(viewer.sceneProperty(), "width"));
height.bind(Bindings.selectDouble(viewer.sceneProperty(), "height"));
viewer.setPreserveRatio(true);
StackPane root = new StackPane();
root.getChildren().add(viewer);
Scene scenes = new Scene(root, 1100, 618, Color.BLACK);
stage.setScene(scenes);
stage.setTitle("OBSV.CamFeed.6°07'08.3\"S 12°23'51.5\"E");
stage.setFullScreen(false);
stage.show();
player.play();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
我基本上使用标准方式在 Eclipse 中使用 javafx 播放 video。
首先你需要得到从午夜开始的持续时间:
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime startOfDay = now.toLocalDate().atStartOfDay();
java.time.Duration d = java.time.Duration.between(startOfDay, now);
转换 java.time.Duration
object to a javafx.util.Duration
对象。
javafx.util.Duration duration = new javafx.util.Duration( d.toMillis() ) ;
然后调用MediaPlayer::setStartTime
。
player.setStartTime(duration);
我有一个 24 小时的录音,从 00:00 小时开始,到 24 小时后结束。我想要 运行 程序并让它在显示系统时钟的同时开始播放 video。例如,巴西现在是 20:14,所以如果我执行该程序,video 将在 20 小时 14 分钟处开始播放。
基本上,我想将 video 时间与系统时钟上显示的实际时间同步。
我的代码有点乱,因为分配需要使用 Processing ide 但是对于我来说,实际上我正在尝试使用 Eclipse 导入 PApplet 和所有这些。无论如何,我只是查找了如何使用 javafx 播放 video,即使我的 video 很大,它也可以立即开始播放。
public class UsingProcessing extends PApplet{
String Dir = System.getProperty("C:");
Stage stage;
public static void main(String[] args) {
PApplet.main("UsingProcessing");
}
public void settings(){
size(1100, 618,FX2D);
}
public void setup(){
try {
Field field = PSurfaceFX.class.getDeclaredField("stage");
field.setAccessible(true);
stage = (Stage)field.get(surface);
File f = new File(Dir, "narrativas.mp4");
Media media = new Media(f.toURI().toURL().toString());
javafx.scene.media.MediaPlayer player = new
javafx.scene.media.MediaPlayer(media);
MediaView viewer = new MediaView(player);
DoubleProperty width = viewer.fitWidthProperty();
DoubleProperty height = viewer.fitHeightProperty();
width.bind(Bindings.selectDouble(viewer.sceneProperty(), "width"));
height.bind(Bindings.selectDouble(viewer.sceneProperty(), "height"));
viewer.setPreserveRatio(true);
StackPane root = new StackPane();
root.getChildren().add(viewer);
Scene scenes = new Scene(root, 1100, 618, Color.BLACK);
stage.setScene(scenes);
stage.setTitle("OBSV.CamFeed.6°07'08.3\"S 12°23'51.5\"E");
stage.setFullScreen(false);
stage.show();
player.play();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
我基本上使用标准方式在 Eclipse 中使用 javafx 播放 video。
首先你需要得到从午夜开始的持续时间:
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime startOfDay = now.toLocalDate().atStartOfDay();
java.time.Duration d = java.time.Duration.between(startOfDay, now);
转换 java.time.Duration
object to a javafx.util.Duration
对象。
javafx.util.Duration duration = new javafx.util.Duration( d.toMillis() ) ;
然后调用MediaPlayer::setStartTime
。
player.setStartTime(duration);