1

そのため、今日は多くの検索を行っており、JFrame 内でビデオを再生する方法を見つけようとしています。これが必要な理由は、ゲームを作成していて、GW2、Medal of Honor などのほとんどすべての優れたゲームのように、ムービー クリップを追加するオプションが必要だからです。

というわけで、調べてみると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);

しかし、これは機能していないようです...助けてください!

4

2 に答える 2

2

JMF は1997 年から存在しているようです。あなたが言ったように、Java ベースのプレーヤーのほとんどが Java に依存しているのは当然のことです。

そこで私は、Google の検索オプションを使って時間をさかのぼることに決め、2001 年 2 月の結果を見つけました。Java と C だけを使用してゼロから実装された、非常に単純なGNU ライセンスの MPEG-1 プレーヤーです。それはどうですか? 次のキャプチャは Web サイトからのものです。

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 に答える