使用javafx媒体类播放wmv文件

使用javafx媒体类播放wmv文件,java,javafx-2,javafx,Java,Javafx 2,Javafx,我想使用媒体类在javaFX中播放.wmv,这是我尝试过的以下方法 import java.io.File; import java.io.InputStreamReader; import java.net.URI; import java.net.URL; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.media

我想使用媒体类在javaFX中播放
.wmv
,这是我尝试过的以下方法

import java.io.File;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URL;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class MoviePlayer extends Application{


public static void main (String [] args){
launch(args);
}

@Override
public void start(Stage stage) throws Exception {
    Group root = new Group();    
    try{
        //File f=new File("C:/Wildlife.wmv");
        //URI u=new URI("C:\\Wildlife.wmv");

    Media media = new Media("C:\\Wildlife.wmv");
    MediaPlayer player = new MediaPlayer(media);
    MediaView view = new MediaView(player);

    root.getChildren().add(view);
    Scene scene = new Scene(root, 400, 400, Color.BLACK);
    stage.setScene(scene);
    stage.show();

    player.play();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}}
但它抛出了以下异常

java.net.URISyntaxException: Illegal character in opaque part at index 2: C:\Wildlife.wmv
    at java.net.URI$Parser.fail(Unknown Source)
    at java.net.URI$Parser.checkChars(Unknown Source)
    at java.net.URI$Parser.parse(Unknown Source)
    at java.net.URI.<init>(Unknown Source)
    at MoviePlayer.start(MoviePlayer.java:27)
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
    at java.lang.Thread.run(Unknown Source)
这是处理异常后得到的输出

Handle asynchronous error in MediaPlayer object.
Handle asynchronous error in Media object
Handle asynchronous error in MediaPlayer object.
您可以尝试以下方法:

File f = new File("C:\\Wildlife.wmv");

URI u = f.toURI();
如果您需要url,可以执行
f.toURI().toul()

然后实例化媒体

试着告诉我们某事。

你可以试试这个:

File f = new File("C:\\Wildlife.wmv");

URI u = f.toURI();
如果您需要url,可以执行
f.toURI().toul()

然后实例化媒体


试着告诉我们一些事情。

原问题的答案

Handle asynchronous error in MediaPlayer object.
Handle asynchronous error in Media object
Handle asynchronous error in MediaPlayer object.
要解决URISyntaxException问题,您可以向媒体构造函数传递有效的URL(例如“file:///C:/Wildlife.wmv").

但是,即使这样,您也无法将您的媒体文件作为视频播放

对评论中补充问题的回答

参数接受重新显示源文件的字符串。 那么为什么需要编写
文件://

因为还指定了输入字符串上的约束:

  • 根据的要求,提供的URI必须符合RFC-2396
  • 仅支持HTTP、文件和JAR URI
file:///C:/Wildlife.wmv
,URI方案是file:,the//是权限,后面可以跟一个windows共享(如果有),下一个/是显示路径是从根目录开始的绝对路径,而不是相对路径,然后是windows驱动器说明符c:,然后是a/表示c驱动器的根目录,然后是您的实际文件名widlife.wmv。如果没有完整地址,则输入格式不正确,因为MediaPlayer不知道使用什么协议读取媒体(即file:scheme告诉它的协议),也不知道要播放的媒体的位置

还请注意,您可以通过以下方式从文件中获取URI字符串:

new File(MEDIA_PATH).toURI().toURL().toExternalForm()


我照你说的做了,现在弹出一个窗口,但视频没有播放

我确实说过,即使您使用正确的路径来定位媒体文件,媒体也不会播放,因为媒体容器格式(wmv)不受支持

这是一个全面的示例(标题为“错误处理”),用于捕获播放媒体时可能发生的潜在错误,以便您可以捕获可能发生错误的多个位置中可能发生的所有错误,并使用拉式解释和堆栈跟踪记录这些错误,从而准确地找出错误所在


我需要做什么改变


您需要将媒体转换为JavaFX2.2能够处理的格式,并在目标机器上提供相应的编解码器。如果您想让它在任何可以使用JavaFX的地方播放,那么您可以将其转换为VP6编码的FLV。但是,这不是一种常见的格式,因此您可能很难找到进行转换的工具。相反,您可以将WMV转换为MP4容器中的H.264编码视频,并确保您的平台安装了正确的编解码器(请参阅)。您可以使用它来转换wmv文件。

原始问题的答案

Handle asynchronous error in MediaPlayer object.
Handle asynchronous error in Media object
Handle asynchronous error in MediaPlayer object.
要解决URISyntaxException问题,您可以向媒体构造函数传递有效的URL(例如“file:///C:/Wildlife.wmv").

但是,即使这样,您也无法将您的媒体文件作为视频播放

对评论中补充问题的回答

参数接受重新显示源文件的字符串。 那么为什么需要编写
文件://

因为还指定了输入字符串上的约束:

  • 根据的要求,提供的URI必须符合RFC-2396
  • 仅支持HTTP、文件和JAR URI
file:///C:/Wildlife.wmv
,URI方案是file:,the//是权限,后面可以跟一个windows共享(如果有),下一个/是显示路径是从根目录开始的绝对路径,而不是相对路径,然后是windows驱动器说明符c:,然后是a/表示c驱动器的根目录,然后是您的实际文件名widlife.wmv。如果没有完整地址,则输入格式不正确,因为MediaPlayer不知道使用什么协议读取媒体(即file:scheme告诉它的协议),也不知道要播放的媒体的位置

还请注意,您可以通过以下方式从文件中获取URI字符串:

new File(MEDIA_PATH).toURI().toURL().toExternalForm()


我照你说的做了,现在弹出一个窗口,但视频没有播放

我确实说过,即使您使用正确的路径来定位媒体文件,媒体也不会播放,因为媒体容器格式(wmv)不受支持

这是一个全面的示例(标题为“错误处理”),用于捕获播放媒体时可能发生的潜在错误,以便您可以捕获可能发生错误的多个位置中可能发生的所有错误,并使用拉式解释和堆栈跟踪记录这些错误,从而准确地找出错误所在


我需要做什么改变


您需要将媒体转换为JavaFX2.2能够处理的格式,并在目标机器上提供相应的编解码器。如果您想让它在任何可以使用JavaFX的地方播放,那么您可以将其转换为VP6编码的FLV。但是,这不是一种常见的格式,因此您可能很难找到进行转换的工具。相反,您可以将WMV转换为MP4容器中的H.264编码视频,并确保您的平台安装了正确的编解码器(请参阅)。你可以用它来转换你的wmv文件。

wmv文件可以用javaFx播放吗我想可以,但我不是javaFx专家,你有一个URI语法异常..不是MediaUnsupportDexception可以用javaFx播放wmv文件我想可以,但我不是javaFx专家,您有一个URISyntaxException..不是MediaUnsupportedExceptionTanks,用于您的答案及其有用的so+1。但我有一个查询,根据参数接受一个字符串,该字符串将重新显示源文件