【问题标题】:javafx mediaview only the audio is playingjavafx mediaview 仅播放音频
【发布时间】:2015-09-27 06:55:15
【问题描述】:

我试图将网站中的视频嵌入到一个简单 javafx 应用程序的 mediaview 中。我有一个示例代码,用作我的 javafx 代码。它打开场景并播放音频但不会播放视频。我怎样才能让它播放音频?我正在使用 netbeans IDE 8.0.2、JavaFx 8 和场景生成器 2.0 我试过的代码如下。 非常感谢。

@FXML MediaView mdv;
Media media;
public static MediaPlayer mpl;
@Override
public void initialize(URL url, ResourceBundle rb) {
    media=new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv");
    mpl=new MediaPlayer(media);
    mpl.setAutoPlay(true);
    mdv=new MediaView(mpl);
    mpl.play();
    mpl.setOnError(new Runnable() {
        @Override public void run() {
            System.out.println("Current Error: " + mpl.getError());
        }
    });
}   

这就是我将孩子加载到舞台上的方式

public class Production extends Application {

@Override
public void start(Stage stage) throws Exception {

    Parent root = FXMLLoader.load(getClass().getResource("Vdo.fxml"));
    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

我从场景构建器创建 GUI 后得到的 FXML 如下

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.media.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0"
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="production.VdoController">
   <children>
      <MediaView fx:id="mdv" fitHeight="300.0" fitWidth="300.0" layoutX="125.0"  layoutY="85.0" />
      <Button layoutX="235.0" layoutY="51.0" mnemonicParsing="false" text="Button" />
   </children>
</AnchorPane>

【问题讨论】:

  • 如何将MediView 添加到场景中?
  • 我使用 FXML Loader 将这个 fxml 作为场景加载到主类中。
  • FXML 不包含场景,我问你如何将 FXML 的内容添加到场景中。
  • 我已经用main方法编辑了代码来加载fxml
  • 您能否也将 FXML 添加到问题中。我可以看到你哪里出错了,但我想用你的 FXML 给出一个完整的解决方案。

标签: java video javafx


【解决方案1】:

您正在重新初始化由 FXMLoader 初始化的 MediaView。永远不要这样做,因为你会失去对原始节点的引用。

您应该只将 MediaPlayer 设置为 MediaView,而不是使用 setMediaPlayer() 重新初始化它。

@Override
public void initialize(URL url, ResourceBundle rb) {
    media=new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv");
    mpl=new MediaPlayer(media);
    mpl.setAutoPlay(true);
    mdv.setMediaPlayer(mpl);
    mpl.play();
} 

【讨论】:

  • 嘿@AchalaWeerasooriya,如果他们解决了您的问题,请接受您对问题的回答。
猜你喜欢
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多