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

n0p*_*0pe 8 java linux swing media-player

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

VideoPlayer video = new VideoPlayer("filename");
frame.getContentPane().add(video);
video.play();
Run Code Online (Sandbox Code Playgroud)

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

附加信息:

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

use*_*041 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.点击这里


Zem*_*ela 5

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