我正在尝试使用java构建一个小型视频播放器我遇到了一些错误,请帮我修复它们。
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Player player = new Player("/Users/name/Desktop/play.mp4");
Scene scene = new Scene(player, 720,480,Color.BLACK);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}

package sample;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
/**
* Created by akanksh on 03/11/17.
*/
public class Player extends BorderPane {
Media media;
MediaPlayer player;
MediaView view;
Pane mpane;
public Player(String file){
media = new Media(file);
player = new MediaPlayer(media);
view = new MediaView(player);
mpane = new Pane();
mpane.getChildren().add(view);
setCenter(mpane);
player.play();
}
}

无论我多少次尝试使用不同的视频和不同的路径,它都不起作用......需要帮助...
答案 0 :(得分:1)
媒体类需要有效的URI
因此你需要一个"架构"对于您的文件,例如file:///Users/...
或者您可以使用new File("/Users/name/Desktop/play.mp4").toURI()
答案 1 :(得分:0)
媒体构造函数正在寻找URI,而不是文件路径。如果您确实为媒体指定了一个文件(即用户在文件系统上指定的内容,例如通过FileChooser
),您应该将路径转换为有效 URI,一个方案并正确编码路径中的任何无效字符,例如空格。
如果您有File
个对象,只需使用
File file = ... ;
Media media = new Media(file.toURI().toString());
如果文件被指定为字符串,则首先创建一个文件对象(尽管在任何实际情况下,您应该首先使用File
):
public Player(String file){
media = new Media(new File(file).toURI().toString());
player = new MediaPlayer(media);
view = new MediaView(player);
mpane = new Pane();
mpane.getChildren().add(view);
setCenter(mpane);
player.play();
}
请注意,如果媒体是应用程序的一部分(而不是在运行时在用户的文件系统上提供),则应完全使用不同的技术并将其视为资源。例如,请参阅How to reference javafx fxml files in resource folder?以访问JavaFX中的资源。