Linux 在 Swing GUI 中嵌入视频的简单方法
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6525493/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
A simple way of embedding a video in my Swing GUI
提问by n0pe
I've been looking for a while now for a dead simple way of embedding a video into my Java Swing GUI. Am I chasing after the wind? Ideally, I would love to have something like:
我一直在寻找一种将视频嵌入到我的 Java Swing GUI 中的简单方法。我在追风吗?理想情况下,我希望有类似的东西:
VideoPlayer video = new VideoPlayer("filename");
frame.getContentPane().add(video);
video.play();
Am I searching for something that doesn't exist? I've developing mainly for linux but with windows in mind as I might try and make my application cross platform in the future.
我在寻找不存在的东西吗?我主要为 linux 开发,但考虑到 windows,因为我将来可能会尝试使我的应用程序跨平台。
Addtional information:
补充资料:
- I've looked at JMF before and was unpleased at the amount of code needed before a video could actually be displayed and played. I might visit it again.
- I thought of an embedded browser that would play a video using VLC, but again not the easiest thing ever.
- I have complete control on the format of the videos to be played. They are fixed in number and can be recoded if needed.
- 我以前看过 JMF,对在实际显示和播放视频之前所需的代码量感到不满。我可能会再次访问它。
- 我想到了一个可以使用 VLC 播放视频的嵌入式浏览器,但这又不是最简单的事情。
- 我可以完全控制要播放的视频的格式。它们的数量是固定的,如果需要可以重新编码。
采纳答案by user489041
I dont know why you think you need a lot of code to use JMF.
我不知道你为什么认为你需要很多代码才能使用 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);
}
}
A complete media player in like 6 lines, prob could have done it in less. If all you need is something basic, then id go with JMF.
一个完整的媒体播放器,大约有 6 行,概率本可以用更少的时间完成。如果您只需要一些基本的东西,那么就选择 JMF。
As Zemzela mentioned, Xuggle is also a good solution but will require more work.
正如 Zemzela 提到的,Xuggle 也是一个很好的解决方案,但需要更多的工作。
There are also Java bindings VLC. Click Here
还有 Java 绑定 VLC。点击这里
回答by Zemzela
you can use xuggle. This is their site http://www.xuggle.com/. I have use it to display avi(divx) and works "fine". JMF i little bit slow in comparation to xuggle. Problem in java is that you can't accurate sync every frame on windows because Thread.sleep(30) doesn't sleep precisely 30 msec, and minimum how much can sleep in windows OS is 16 msec so you can't tune it to be approximately 30 msec. On linux should work more accurately, I think minimum sleeping time is 1 msec.
你可以使用xuggle。这是他们的网站http://www.xuggle.com/。我用它来显示 avi(divx) 并且“正常”工作。与 xuggle 相比,JMF 我有点慢。Java 中的问题是您无法准确同步 Windows 上的每一帧,因为 Thread.sleep(30) 不能精确地睡眠 30 毫秒,并且 Windows 操作系统中的最小睡眠时间为 16 毫秒,因此您无法将其调整为大约是 30 毫秒。在 linux 上应该更准确地工作,我认为最小睡眠时间是 1 毫秒。