在Swing GUI中嵌入视频的简单方法

时间:2011-06-29 18:31:12

标签: java linux swing media-player

我一直在寻找一段将视频嵌入Java Swing GUI的简单方法。我追风吗?理想情况下,我希望有类似的东西:

VideoPlayer video = new VideoPlayer("filename");
frame.getContentPane().add(video);
video.play();

我在寻找不存在的东西吗?我主要针对Linux进行开发,但考虑到Windows,因为我可能会尝试在未来使用我的应用程序。

附加信息:

  • 我之前看过JMF,并且在视频实际显示和播放之前所需的代码数量不高兴。我可能会再次访问它。
  • 我想到了一个可以使用VLC播放视频的嵌入式浏览器,但同样不是最简单的事情。
  • 我可以完全控制要播放的视频的格式。它们的数量是固定的,如果需要可以重新编码。

2 个答案:

答案 0 :(得分:7)

我不知道您为什么认为需要大量代码才能使用JMF。


    public class mediaPlayer extends JFrame
    {
        public mediaPlayer()
        {
            setLayout(new BorderLayout());

            //file you want to play
            URL mediaURL = //Whatever
            //create the media player with the media url
            Player mediaPlayer = Manager.createRealizedPlayer(mediaURL);
            //get components for video and playback controls
            Component video = mediaPlayer.getVisualComponent();
            Component controls = mediaPlayer.getControlPanelComponent();
            add(video,BorderLayout.CENTER);
            add(controls,BorderLayout.SOUTH);
        }
    }

一个像6行一样的完整媒体播放器,prob可以用更少的东西完成它。如果你需要的只是基本的东西,那么id就是JMF。

正如Zemzela所说,Xuggle也是一个很好的解决方案,但需要更多的工作。

还有Java绑定VLC。 Click Here

答案 1 :(得分:3)

您可以使用 xuggle 。这是他们的网站http://www.xuggle.com/。我用它来显示avi(divx)并且工作“很好”。 JMF在与xuggle的比较中有点慢。 java中的问题是你不能准确地同步Windows上的每一帧因为Thread.sleep(30)没有精确地睡眠30毫秒,并且在Windows操作系统中睡眠的最小值是16毫秒所以你不能将它调到大约30毫秒。在Linux上应该更准确地工作,我认为最小睡眠时间是1毫秒。