在Javafx(Ubuntu)播放视频

时间:2013-01-10 05:10:16

标签: javafx

我的代码ID

public class Video1 extends Application {

private static String arg1;

@Override public void start(Stage stage) {
    stage.setTitle("Media Player");

// Create media player

    Media media = new Media("/home/ubuntu/NetBeansProjects/VideoPaly/src/videopaly/vid.flv");

    javafx.scene.media.MediaPlayer mediaPlayer = new javafx.scene.media.MediaPlayer(media);
    mediaPlayer.setAutoPlay(true);
    mediaPlayer.setCycleCount(javafx.scene.media.MediaPlayer.INDEFINITE);

// Print track and metadata information
    media.getTracks().addListener(new ListChangeListener<Track>() {
public void onChanged(Change<? extends Track> change) {
            System.out.println("Track> "+change.getList());
        }
    });
    media.getMetadata().addListener(new MapChangeListener<String,Object>() {
public void onChanged(MapChangeListener.Change<? extends String, ? extends Object>   change) {
            System.out.println("Metadata> "+change.getKey()+" -> "+change.getValueAdded());
        }
    });

 // Add media display node to the scene graph
    MediaView mediaView = new MediaView(mediaPlayer);
    Group root = new Group();
    Scene scene = new Scene(root,800,600);
    root.getChildren().add(mediaView);
    stage.setScene(scene);
    stage.show();
}

public static void main(String[] args) {
if (args.length > 0) {
        arg1 = args[0];
    }
    Application.launch(args);
}
}

我想在Ubuntu的资源上播放视频,当我运行上面的代码时,它会给出错误,例如java.lang.IllegalArgumentException:uri.getScheme()== null!在线

Media media = new Media("/home/ubuntu/NetBeansProjects/VideoPaly/src/videopaly/vid.flv");

对此有何看法?

1 个答案:

答案 0 :(得分:1)

来自JavafX2 Media类构造函数doc:

  

构造一个Media实例。这是指定媒体的唯一方法   资源。源必须表示有效的URI并且是不可变的。的只有   支持HTTP,FILE和JAR URL 。如果提供的URL无效   然后会抛出异常

     

<强>抛出:        java.lang.IllegalArgumentException - 如果 URI字符串不符合RFC-2396 ,或者(如果适用)Jar URL   规范,或者是不符合要求的形式,不能修改   符合标准的表格。

所以你的源uri应该是这样的:

  

file://媒体路径