使用eclipse在javafx中创建一个Movie Player

时间:2017-09-29 17:08:55

标签: eclipse javafx

我想使用eclipse在javafx中创建一个Movie Player。我的代码编译成功,但它给出了运行时错误。我尝试使用不同的文件路径。 但它没有解决错误。 我的代码是

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 个答案:

答案 0 :(得分:0)

正如@Sergei Sirik所说,这是JavaFX而不是纯粹的' java的。无论如何,阅读构造函数(String source)的Media类文档,您将看到:

源必须表示有效的URI并且是不可变的。仅支持HTTP,FILE和JAR URL。如果提供的URL无效,则会抛出异常

所以我建议先创建一个File对象(以便能够检查读写的文件权限等),之后只需将mediaFile.toURI()。toString()传递给Media类构造函数,它就会打开

修改: 我想您将来会使用FileChooser来加载您的视频,这样可以更轻松地创建和处理文件。

我测试了下面的代码,它在我的计算机上成功加载了我的视频。

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_UNSUPPORTED:无法识别的文件签名! 它可能会导致您手动更改文件签名或尝试播放不受支持的文件格式,如mkv。