简体   繁体   English

JavaFX Mediaplayer在Eclipse中播放视频,但不在可运行的jar中播放

[英]JavaFX mediaplayer playing video in eclipse but not in runnable jar

I've been having this issue for some days now and cannot find the solution. 我几天来一直遇到这个问题,无法找到解决方案。 The problem is that when i run my program in eclipse my intro video shows up and plays, but when i export it in a runnable jar the video does not load, only the jframe loads. 问题是当我在eclipse中运行程序时,我的介绍视频会显示并播放,但是当我将其导出到可运行的jar中时,视频不会加载,只有jframe可以加载。

I am using eclipse with e(fx)clipse on it. 我正在使用带有e(fx)clipse的eclipse。

in my main class I am just creating a Jframe and adding the MediaPanel object to the Jframe: 在我的主类中,我只是创建一个Jframe并将MediaPanel对象添加到Jframe中:

mediaPanel = new MediaPanel( "/videos/Composite2.avi" );
        frame.getContentPane().add(mediaPanel);

This is my MediaPanel Class 这是我的MediaPanel类别

import java.awt.BorderLayout;
import java.awt.Component;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.JPanel;

    public class MediaPanel extends JPanel
    {

        Player mediaPlayer;
         public MediaPanel( String mediaURL ) throws MalformedURLException
         {

            URL mediaURL1 = this.getClass().getResource(mediaURL);
            System.out.println(mediaURL1);
             setLayout( new BorderLayout() ); // use a BorderLayout

             // Use lightweight components for Swing compatibility
     Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );

             try
             {
             // create a player to play the media specified in the URL
                  mediaPlayer = Manager.createRealizedPlayer( mediaURL1 );
                 // get the components for the video and the playback controls
                 Component video = mediaPlayer.getVisualComponent();
                 //Component controls = mediaPlayer.getControlPanelComponent();

                 if ( video != null )
                 add( video, BorderLayout.CENTER ); // add video component

                // if ( controls != null )
                 //add( controls, BorderLayout.SOUTH ); // add controls
                 mediaPlayer.start(); // start playing the media clip

             } // end try
             catch ( NoPlayerException noPlayerException )
             {
                 System.err.println( "No media player found" );
             } // end catch
             catch ( CannotRealizeException cannotRealizeException )
     {
                 System.err.println( "Could not realize media player" );
             } // end catch
             catch ( IOException iOException )
       {
             System.err.println( "Error reading from the source" );
             } // end catch
          } // end MediaPanel constructor   

         public void stop(){
             mediaPlayer.stop();
         }
    } // end class MediaPanel

Have you installed these libs yet. 您是否已安装这些库。

dirac-libs-1.0.2-9.fc18.i686.rpm 狄拉克库,1.0.2-9.fc18.i686.rpm

libavcodec52-0.7.15-32.fc18.i686.rpm libavcodec52-0.7.15-32.fc18.i686.rpm

libavformat52-0.7.15-32.fc18.i686.rpm libavformat52-0.7.15-32.fc18.i686.rpm

libavutil50-0.7.15-32.fc18.i686.rpm libavutil50-0.7.15-32.fc18.i686.rpm

libxavs1-0.1.51-2.fc18.i686.rpm libxavs1-0.1.51-2.fc18.i686.rpm

Once these were installed, javafx plays music like a charm. 安装这些文件后,javafx会像音乐一样播放音乐。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM