アプリのスイングMP4ビデオでJavaを再生する方法

ザーナダニエル

誰もが、私はJPanelの中​​.MP4ビデオファイルを再生することができます任意の方法を知っていますか?私は.AVIファイルでJMFを試みたが、何の成功を収めていないし、今私はどのようにビデオファイルを再生するような単純なタスクはとても面倒になってきているの困惑と失望していています。

そこに誰もが、私が取ることができると私は非常に感謝だろうかパス上のいくつかの光を当てるしてください。

私はVLCJを聞いたが、問題は、私はこのアプリを実行しているすべてのマシンは、VLCプレーヤーがインストールされていることを保証することはできませんです。私は配布フォルダにVLCプレーヤーをバンドルすることができます方法はありますか?

もともと、私たちが使用しているビデオはVimeoの上ですが、それはそれはAPIのサポートの欠如により、それを埋め込み、私は大丈夫、私はちょうど今とても困難になってきていることも、ローカルにし、それを再生しますと思ったことは現実的に不可能ですが判明しました。

ザーナダニエル

私の注意にJavaFXのをもたらすため@VGRのおかげで、私はちょうど私がビデオがなりたかった場所のJPanelのにJFXPanelを統合しました。それがプレーに一つのビデオとシンプルな画面ですので、それは私の場合には完全に正常に動作しています。

ここでは、以下の完全なコードスニペットです:

private void getVideo(){
    final JFXPanel VFXPanel = new JFXPanel();

    File video_source = new File("tutorial.mp4");
    Media m = new Media(video_source.toURI().toString());
    MediaPlayer player = new MediaPlayer(m);
    MediaView viewer = new MediaView(player);

    StackPane root = new StackPane();
    Scene scene = new Scene(root);

    // center video position
    javafx.geometry.Rectangle2D screen = Screen.getPrimary().getVisualBounds();
    viewer.setX((screen.getWidth() - videoPanel.getWidth()) / 2);
    viewer.setY((screen.getHeight() - videoPanel.getHeight()) / 2);

    // resize video based on screen size
    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);

    // add video to stackpane
    root.getChildren().add(viewer);

    VFXPanel.setScene(scene);
    //player.play();
    videoPanel.setLayout(new BorderLayout());
    videoPanel.add(VFXPanel, BorderLayout.CENTER);
}

getVideo()関数が行われると、私は、アプリケーションの起動時にそれをトリガーしたJFrameのコンストラクタでそれを呼びました。

おすすめ

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