如何播放我自己的视频?

时间:2013-10-25 22:13:14

标签: java swing jframe media game-engine

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

所以,在我的搜索中,我找到了JMF,但完全无法使用它。这有点令人沮丧,但无论如何。所以,我的问题是:有没有办法播放视频而不安装任何其他jar,exe等?例如,运行一个简单的代码,如new JFrame();快速简单?或者这是不可能的,但有一种方法可以做到漫长而复杂吗? 我一直在寻找其他堆栈溢出的东西,并没有一个真正适合我想要的......如果最坏的情况发生,我会使用Xuggler,但我宁愿不这样做。

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

提前谢谢你:)

请注意:我不是在寻找对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);

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

2 个答案:

答案 0 :(得分:2)

JMF似乎已经在since 1997左右。难怪,正如你所说,大多数基于Java的玩家都依赖它。

所以我决定使用谷歌的搜索选项回到过去,并从2001年2月找到了一个结果:一个非常简单的GNU-licensed MPEG-1 player从头开始使用Java和C实现。那怎么样?以下捕获来自网站:

MPEG-1 player

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

希望它有所帮助!

答案 1 :(得分:-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){

        }
    }
}