Javafx媒体播放器/媒体对象是否支持远程文件?

时间:2016-12-23 00:22:38

标签: java javafx

我正在尝试为livestreaming制作聊天机器人。我正在尝试添加使用youtube的歌曲请求功能。我试图让它与youtube和谷歌驱动器MP3一起工作,但两者都给予MediaException:无法创建媒体播放器。它使用file:///地址。 访问媒体的代码

executeScript()

注意:我正在使用public void start(Stage stage) throws Exception { // TODO Auto-generated method stub Media media=new Media("http:///youtube.com/embed/n5O0iA--sec"); if(media.getError()!=null){ System.out.println("media error"); media.getError().printStackTrace(); } MediaPlayer player=new MediaPlayer(media); if(player.getError()!=null){ System.out.println("player error"); player.getError().printStackTrace(); } player.setAutoPlay(true); player.setOnReady(new Runnable(){ @Override public void run(){ System.out.println("Video is ready"); } }); player.setOnError(new Runnable(){ @Override public void run(){ System.out.println("videoplayer errored"); player.getError().printStackTrace(System.out); } }); player.play(); MediaView mView=new MediaView(); mView.setMediaPlayer(player); mView.setOnError(new EventHandler<MediaErrorEvent>(){ @Override public void handle(MediaErrorEvent arg0) { // TODO Auto-generated method stub System.out.println("view error"); arg0.getMediaError().printStackTrace(System.out);; } }); stage.setScene(new Scene(new StackPane(mView))); //view.getEngine().load(url); //stage.setScene(new Scene(view)); stage.sizeToScene(); stage.show(); } 在gui中运行上面的代码,但gui不是必需的。 堆栈跟踪:

javafx.application

1 个答案:

答案 0 :(得分:0)

JavaFX MediaPlayer通过HTTP支持远程文件。只需调整How to use JavaFX MediaPlayer correctly?中的代码,您就可以使用

进行验证
import javafx.application.Application;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.media.*;

public class Test extends Application {

    @Override
    public void start(Stage primaryStage) {
        Group root = new Group();
        Scene scene = new Scene(root, 500, 200);

        Media pick = new Media("http://www-eng-x.llnl.gov/documents/a_sound.aiff");
        MediaPlayer player = new MediaPlayer(pick);
        player.play();

        MediaView mediaView = new MediaView(player);
        ((Group)scene.getRoot()).getChildren().add(mediaView);

        primaryStage.setTitle("Media Player");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
         launch(args);
    }
}

这会打开一个窗口并毫无困难地播放远程aiff。