我正在尝试为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
答案 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。