当前位置: 首页 > 知识库问答 >
问题:

使用eclipse在javafx中创建电影播放器

汤嘉平
2023-03-14

我想使用eclipse在javafx中创建一个电影播放器。我的代码编译成功,但出现运行时错误。我也尝试使用不同的文件路径。但它并没有解决这个错误。我的代码是

package Player3;

  import javafx.application.Application;
  import javafx.scene.Group;
  import javafx.scene.Scene;
  import javafx.scene.media.Media;
  import javafx.scene.media.MediaPlayer;
  import javafx.scene.media.MediaView;
  import javafx.scene.paint.Color;
  import javafx.stage.Stage;

 public class MediaPlayer3 extends Application{

    public static void main(String args[])
    {
       launch(args);
    }

   public void start(Stage stage) throws Exception {
    Group root = new Group();
    Media media =new Media("file:////‪C://Kaise.MP4");
    MediaPlayer player4=new MediaPlayer(media);
    MediaView view = new MediaView(player4);
    root.getChildren().add(view);
     Scene scene =new Scene(root,400,400,Color.BLACK);
     stage.setScene(scene);
     stage.show();
     player4.play();

    }
 }

错误是

        Exception in Application start method
        java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source) 
        java.lang.RuntimeException: Exception in Application start method
         java.lang.RuntimeException: Exception in Application start method

共有1个答案

陶福
2023-03-14

正如@Sergei Sirik提到的,这是JavaFX,而不是纯粹的java。无论如何,阅读构造函数(字符串源)的媒体类的留档,你会看到:

源必须表示有效的URI,并且是不可变的。仅支持HTTP、文件和JAR URL。如果提供的URL无效,则将引发异常

因此,我建议首先创建一个文件对象(以便能够检查文件的读写权限等),然后传递mediaFile。toURI()。toString()指向媒体类构造函数,它将打开。

编辑:我想你将来会使用一个文件选择器来加载你的视频,这样文件的创建和处理就容易多了。

我测试了下面的代码,它成功地在我的电脑上加载了我的视频。

import java.io.File;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String args[]) {
        launch(args);
    }

    public void start(Stage stage) throws Exception {
        Group root = new Group();

        FileChooser fc = new FileChooser();

        File x = fc.showOpenDialog(null);

        Media media = new Media(x.toURI().toString());
        MediaPlayer player4 = new MediaPlayer(media);
        MediaView view = new MediaView(player4);
        root.getChildren().add(view);
        Scene scene = new Scene(root, 400, 400, Color.BLACK);
        stage.setScene(scene);
        stage.show();
        player4.play();

    }
}

如果出现以下错误:MediaException:MEDIA\u不受支持:无法识别的文件签名!这可能是因为您手动更改文件签名或尝试播放不受支持的文件格式(如mkv)。

 类似资料:
  • 我正在尝试我的第一个MediaPlayer javafx应用程序。我遵循了很多操作方法,但我仍然无法在新应用程序上运行视频。 这有什么不好: 应用程序构建正确,没有触发“文件未找到异常”,但播放器卡在未知状态,凸起的窗口具有白色固定背景。既没有提供任何类型的音频。有什么建议吗?

  • 我已经安装了Ubuntu 14.04,当我实例化一个MediaPlayer时,我收到了一个错误。 问题是当我创建媒体播放器时: 异常消息: 我已经安装了ubuntu限制附加组件,以及显示mp4视频所需的所有编解码器。当我用Vlc或其他播放器播放视频时,没有问题。 这可能是 Ubuntu 14.04 中的 JavaFx 问题吗? 我试过jre-1.8

  • 我有以下雄辩的实体: 电影 表结构: 如果一部电影有多部电影,那么每部电影都有多部电影,而每部电影都属于一部电影。 我试图通过movieTheaterId获取当前在movieTheaterId上播放的所有电影,但由于这是一个长期关系,我无法检索此类收藏。 这就是我尝试过的: 调用 我错在哪里?

  • 我想在正在播放时加载视频。

  • 我正在尝试使用JME3X-JFX播放flv文件,我使用demo类,可以通过http url方法播放他们的文件。我还可以下载他们的flv并使用flv方法播放。但是我似乎不能播放我自己的flv文件(在使用一个网站如keepvid(尝试了几个)从youtube视频url(开放许可证)转换后下载)。 这听起来有点像这个问题,只有黑屏显示,但对我来说,视频声音播放。我尝试使用RichFLV编辑元数据,以类似

  • 嘿,我已经开始了一个Java项目,我想使用JavaFX。