2012-10-05 51 views
1

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

UPDATE

用同样的代码,我再打MP4视频,在相同条件下(PLATEFORME,JFX版,...),所以我得出的结论是我有问题,这MP4转换文件,即我用来转换mov文件的软件不会生成JFX 2.1支持的approriat mp4格式。

+0

你在使用什么操作系统?你使用什么编解码器?编解码器h.264? JavaFX 2.2可以播放视频吗? – jewelsea

+0

我正在使用xp,并且我已经安装了divx。对于编解码器,我试图将视频转换为H264,我不知道我是否成功地做到了这一点。对于JavaFX 2.2,我不知道是因为我在使用2.1。 – Adil

回答

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)。 barbie woody

+0

我已更新我的问题,谢谢您的回复! – Adil

+0

我试过了代码,但不断得到媒体音频格式不支持的错误。该示例使用的视频已不再存在,因此我正在尝试从这里下载文件,但运气不佳:http://www.sample-videos.com/ – javydreamercsw

+0

我更新了我的答案以使用新的视频链接,并且播放效果良好。 – jewelsea

1

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