JavaFXの - どのように私は、コンピュータ・システム・クロックから正確な現在時刻(JavaFXのメディアを使用して)24時間のビデオを開始することができますか?

94matheus:

私は、24時間の録画時間0時00分に始まり、後者の24時間の終了を持っています。私は、プログラムを実行すると、それがシステムクロックに表示されているのと同時に開始するビデオを再生しています。例えば、それは私がプログラムを実行している場合ので、ビデオは20hoursと14minsマークの再生を開始すると、今ここブラジルで夜08時14分です。

基本的に、私は、システムクロックに表示される実際の時刻と映像の時間を同期します。

assigmentが処理IDEを使用する必要がありますが、私は実際に私はEclipseはPAppletをインポートし、すべてのことに使用しようとしている私につもり何を行うためにので私のコードは、一種厄介なのです。とにかく、私はJavaFXのを使用してビデオを再生する方法を見上げて、私のビデオは巨大であるにもかかわらず、それが即座に再生を開始することができます。

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でビデオを再生するための標準的な方法を使用しています。

アレックスBroadwin:

まず、午前0時から時間を取得する必要があります:

ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime startOfDay = now.toLocalDate().atStartOfDay();
java.time.Duration d = java.time.Duration.between(startOfDay, now);

その変換java.time.Durationにオブジェクトをjavafx.util.Durationオブジェクト。

javafx.util.Duration duration = new javafx.util.Duration( d.toMillis() ) ;

次に呼び出しますMediaPlayer::setStartTime

player.setStartTime(duration);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=192003&siteId=1