使用vlcj api在Java FX中播放视频 [英] Playing Video in Java FX using vlcj api

查看:1038
本文介绍了使用vlcj api在Java FX中播放视频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试播放有关Java FX组件的视频但无法播放。
我知道如何使用vlcj播放视频,但是当我尝试相同时我无法在javafx中播放

I am trying to play a video on Java FX components but not able to play. I know how to play a video in swing using vlcj but when I am trying the same I am not able to do so in javafx

    @Override
    public void start(Stage primaryStage) 
    {
        File f = new File("Video.mp4");
        new NativeDiscovery().discover();
        EmbeddedMediaPlayerComponent playerComponent = new EmbeddedMediaPlayerComponent();
        /*I dont know where to add the playerComponent as we do in swing*/
        MediaPlayer mp=playerComponent.getMediaPlayer();       
        StackPane root = new StackPane();
        Scene scene = new Scene(root, 700, 700);        
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
     //above code is for javafx where I am getting a problem
     //below code for swing
     public void playVideo()
     {
        new NativeDiscovery().discover();
        EmbeddedMediaPlayerComponent playerComponent = new EmbeddedMediaPlayerComponent();
        jif[i].setContentPane(playerComponent);
        MediaPlayer p = playerComponent.getMediaPlayer();
        ft = new FileTest();
        videoList = ft.getVideoList();
        jif[i].setVisible(true);
        frame.setVisible(true);
        p.setAspectRatio(width[i] + ":" + height[i]);
        p.playMedia(videoList[0]);
    }

我想知道我需要在javafx中为setupContentPane做什么摇摆。

I want to know what I need to do in javafx for settingContentPane we do in swing.

推荐答案

EmbeddedMediaPlayerComponent 需要一个重量级的AWT Canvas 播放视频。您无法在JavaFX中使用该方法。

EmbeddedMediaPlayerComponent requires a heavyweight AWT Canvas to play the video in. You can't use that approach in JavaFX.

对于JavaFX,您必须自己使用该视频渲染a DirectMediaPlayerComponent - direct表示直接渲染。在较高的层次上,这涉及获取视频数据(由组件为您提供),然后以某种方式呈现它,例如将视频数据复制到场景中的图像。

For JavaFX you have to render the video yourself using a DirectMediaPlayerComponent - "direct" meaning "direct rendering". At a high level this involves getting the video data (provided by the component for you) and then you rendering it in some way, like copying the video data to an image in your scene.

这里有一个完整的项目,展示了许多方法,包括一个让可调整大小的视频播放器工作的解决方案:

There is a full project here that shows a number of ways to do it, including one solution to get a resizable video player working:

https://github.com/caprica/vlcj-javafx

这篇关于使用vlcj api在Java FX中播放视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆