1

所以我今天一直在做很多搜索,试图弄清楚如何在 JFrame 中播放视频。我想要这个的原因是因为,我正在制作一个游戏,并且想要添加电影剪辑的选项,就像在大多数优秀游戏中一样,例如 GW2、荣誉勋章等。

因此,在我的搜索中,我找到了 JMF,但完全无法使用它。这有点令人沮丧,但无论如何。所以,我的问题是:有没有办法在不安装任何其他 jar、exe 等的情况下播放视频?例如,运行一个简单的代码,例如new JFrame();快速简单的排序?或者那是不可能的,但是有一种方法可以做到又长又复杂?我也一直在研究其他堆栈溢出的东西,但没有一个真正符合我想要的......

另外,基于这个答案,我计划在未来制作一个游戏引擎,所以可以添加它,以获得额外的价值。

先感谢您 :)

请注意:我不是在寻找对 JMF 或其他类似内容的引用。我正在寻找诸如要调用的内置方法/类或长时间工作之类的东西,它们工作得很好,并且可以在许多环境中实现。

编辑:我正在考虑使用 JEditorPane,并使用 html 嵌入视频,但是....这对我没有用...这是我在那里尝试过的:

JEditorPane jep = new JEditorPane();
        jep.setEditable(false);   

//        jep.setContentType("text/html");
          jep.setText("<html><video id=\"sampleMovie\" src=\"C:\\users\\austin\\desktop\\test.mp4\" controls></video></html>");

        JScrollPane scrollPane = new JScrollPane(jep);     
        JFrame f = new JFrame("Test HTML");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(scrollPane);
        f.setPreferredSize(new Dimension(800,600));
        f.setVisible(true);

但这似乎不起作用......请帮忙!

4

2 回答 2

2

JMF 似乎自 1997 年就已经存在。难怪,正如您所说,大多数基于 Java 的播放器都依赖它。

所以我决定使用 Google 的搜索选项回到过去,并找到了 2001 年 2 月的结果:一个非常简单的GNU 许可的 MPEG-1 播放器,从头开始使用 Java 和 C 实现。怎么样?以下截图来自网站:

MPEG-1 播放器

我知道您强调您需要一个外部代码尽可能少的解决方案。在这种情况下,似乎不需要额外的库,但您必须进行一些编译。另外,您仅限于 MPEG-1。所以,不完全是你要找的东西,但也许值得一看。

希望能帮助到你!

于 2013-11-08T16:49:00.200 回答
-1

如果您有一个File名称“文件”:

import java.io.*;
import java.net.*;
import javax.swing.*; 
//....
//....
//....
try{
    mediaURL = file.toURI().toURL();
}
catch(Exception e){
}
if(mediaURL != null){
    JFrame mediaTest = new JFrame();
    MediaPanel m = new MediaPanel(mediaURL);
    mediatTest.add(m);
    mediaTest.setVisible(true);
}

编辑:

import javax.media.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
public class MediaPanel extend JPanel{
    public MediaPanel( URL mediaURL){
        setLayout(new BorderLayout());
        try{
            Player mp = Manager.createRealizedPlayer( mediaURL);
            Component video = mp.getVisualComponent();
            Component controls = mp.getControlPaneComponent();
            if(video != null){
                add(video, BorderLayout.CENTER);
            }
            if(controls != null){
                add(controls, BorderLayout.SOUTH);
            }
            mediaPlayer.start();
        }
        catch(Exception e){

        }
    }
}
于 2013-10-25T23:07:00.857 回答