The*_*ell 3 java javafx javafx-8
我是JavaFX的新手,我目前正在使用在应用程序开始时播放视频(.MP4)的应用程序,但是,我似乎无法使它工作!请告诉我我的代码有什么问题:
import java.io.File;
import javafx.geometry.Pos;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.text.Text;
public class NoConnection {
private StackPane root;
public NoConnection(){
Media media = null;
try{
File video = new File("video.mp4");
String url = video.toURI().toURL().toString();
System.out.println("URL: "+url);
media = new Media(url);
}catch(Exception e){
System.err.println(e.toString());
}
MediaPlayer player = new MediaPlayer(media);
player.play();
MediaView mediaView = new MediaView(player);
root = new StackPane();
root.setAlignment(Pos.CENTER);
root.setStyle("-fx-background-color : white;");
root.getChildren().add(mediaView);
}
public StackPane getLayout(){
return root;
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我正在运行Windows XP!
这是完整的错误:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl$$Lambda$48/11461388.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291)
at com.sun.javafx.application.PlatformImpl$$Lambda$46/31501478.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$141(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda$38/29531133.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
这就是要做的事:使用以下代码创建一个java类:
public class VideoTest extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
MediaPlayer player = new MediaPlayer( new Media(getClass().getResource("video.mp4").toExternalForm()));
MediaView mediaView = new MediaView(player);
root.getChildren().add( mediaView);
Scene scene = new Scene(root, 1024, 768);
primaryStage.setScene(scene);
primaryStage.show();
player.play();
}
}
Run Code Online (Sandbox Code Playgroud)
并将video.mp4放入同一个文件夹中.启动它.视频应该播放.
顺便说一下,我使用你的代码得到了一个未找到文件的异常.并且不再支持Windows XP.既不是Oracle也不是微软.如果这个简单的代码不起作用,你会遇到另一个问题.
答案如下:
FLV 容器由 JavaFX SDK 支持的平台上的媒体堆栈支持。以这种格式编码的单个电影可在支持的平台上无缝运行。服务器端需要标准 FLV MIME 设置才能启用媒体流。
JavaFX SDK 支持的所有操作系统也支持 MPEG-4 多媒体容器。在 Mac OS X 和 Windows 7 平台上,无需额外软件即可进行播放。但是,Linux 操作系统和早于 Windows 7 的 Windows 版本需要安装随时可用的第三方软件包,如 JavaFX 系统要求中所述。AAC 和 H.264/AVC 解码具有某些平台相关的限制,如 JavaFX 发行说明中所述。
某些音频和视频压缩类型的解码依赖于操作系统特定的媒体引擎。JavaFX 媒体框架不会尝试处理这些本机引擎支持的所有多媒体容器格式和媒体编码。相反,该框架尝试在支持 JavaFX 的所有平台上提供等效且经过良好测试的功能。
归档时间: |
|
查看次数: |
11517 次 |
最近记录: |