【问题标题】:Can't play mp4 converted file - JavaFX 2.1无法播放 mp4 转换文件 - JavaFX 2.1
【发布时间】:2012-10-05 15:13:10
【问题描述】:

我已将我的.mov 视频转换为.mp4,但是当我在我的 javafx 应用程序中播放视频时,它不起作用,我可以听到视频文件的音频但没有图片!也许 .mp4 不在正确的编解码器中!有什么想法或解决方案吗?

更新

使用相同的代码,我在相同的条件下播放了另一个 mp4 视频(plateforme、JFX 版本,...),所以我得出的结论是这个 mp4 转换文件有问题,即我的软件m 用于转换 mov 文件不会生成 JFX 2.1 支持的适当 mp4 格式。

【问题讨论】:

  • 您使用的是什么操作系统?你用的是什么编解码器?编解码器是 h.264 吗?视频可以用 JavaFX 2.2 播放吗?
  • 我用的是xp,我已经安装了divx。对于编解码器,我正在尝试将视频转换为 H264,但我不知道我是否成功地做到了这一点。对于 JavaFX 2.2,我不知道,因为我使用的是 2.1。

标签: video media-player javafx-2 converter


【解决方案1】:

以下代码示例演示了在 JavaFX 中播放 h.264 编码的 mp4 视频。

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.*;
import javafx.scene.media.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/** plays an mp4 video in JavaFX 2.1+ */
public class OnlineVideoPlayer extends Application {
  public static void main(String[] args) { launch(args); }
  @Override public void start(Stage stage) {
    final Label status = new Label("Init");
    MediaPlayer mediaPlayer = createMediaPlayer(
      "http://www.html5videoplayer.net/videos/toystory.mp4", 
      status
    );
    VBox layout = new VBox(10);
    layout.setAlignment(Pos.CENTER);
    layout.getChildren().addAll(new MediaView(mediaPlayer), status);
    stage.setScene(new Scene(layout, 500, 300, Color.CORNSILK));
    stage.show();
    if (mediaPlayer != null) {
      mediaPlayer.play();
    }  
  }

  /** 
   * creates a media player using a url to the media
   * and tracks the status of playing the media via the status label 
   */
  private MediaPlayer createMediaPlayer(final String url, final Label status) {
    Media hit = new Media(url);
    MediaPlayer mediaPlayer = new MediaPlayer(hit);
    mediaPlayer.setOnError(new Runnable() {
      @Override public void run() {
        status.setText("Error");
      }
    });
    mediaPlayer.setOnPlaying(new Runnable() {
      @Override public void run() {
        status.setText("Playing: " + url);
      }
    });
    mediaPlayer.setOnEndOfMedia(new Runnable() {
      @Override public void run() {
        status.setText("Done");
      }
    });
    return mediaPlayer;
  }
}

示例程序输出:(JavaFX 8u72,OS X 10.9.5)。

【讨论】:

  • 我尝试了代码,但不断收到媒体音频格式不受支持的错误。该示例使用的视频不再存在,因此我尝试从这里获取文件,但运气不佳:sample-videos.com
  • 我更新了我的答案以使用新的视频链接,并且播放正常。
  • @jewelsea 如果视频是 .mp4 但以 MPEG4 编码,我能做些什么吗?
【解决方案2】:

您需要确保您的 .mp4 文件采用 H264 编码。 MPEG4 不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 2013-05-17
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    相关资源
    最近更新 更多