3

画面にアニメーションオーバーレイを表示できるプログラムをJavaでうまく書きたいと思います。

画面は、x-split と呼ばれる別のプログラムを使用して、インターネット経由でストリーミング配信されます。

これを行う良い方法は、Java で透明なウィンドウを作成し、アニメーション ファイルを (透明性を持って) 表示することです。このウィンドウの出力 (その表示) は、理想的には Webcam デバイス リストに表示される必要があります。現在放送中のゲーム画面の上に配置できるx-splitです。

このタイプのプログラムの例としては、Web カメラの画像が表示され、「仮想メガネ」が人の顔の画像の上に重ねられ、出力カムとして送信されるプログラムがあります。

透明なウィンドウを作成する Java 6u10-translucent-shapes ライブラリを見つけましたが、それをストリーミングする方法がわかりません。

JMF と FFMpeg が適している可能性があることを示唆するいくつかの記事を読みましたが、何をどのようにインストールすればよいかわかりません。

チュートリアルへのヘルプやポインタは大歓迎です。

4

3 に答える 3

2

あなたが何を達成しようとしているのか正確にはわかりませんが、画面をストリーミングする外部プログラムはどうですか? http://screen-stream.en.softonic.comのようなものですか?

于 2012-06-10T05:46:50.460 に答える
1

java.awtのRobotクラスを使用します。これには、画面の一部のBufferedImagesを取得するために使用できるgetScreenCapture(Rectangle)メソッドがあります。これらのBufferedImagesはコードで編集でき、フルスクリーンアプリケーションにそれ自体を表示させることでフラッシュさせることができます(そして消えて新しい画像を再キャプチャします)。または、上記の方法を使用して透過的なJavaフルスクリーンアプリケーションを使用し、アプレットに表示して「x-treamed」することでフィルタリングすることもできます。

しかし、私の最大の質問は、とにかくゲームをどのように制御することを期待していますか?また、簡単に解決できるものとして、なぜこれほど大きなものを期待しているのでしょうか。

スクリーンレコーディングソフトウェアを使用してムービーに変換し、Windowsムービーメーカーを使用して必要に応じて変更すると、よりシンプルで同期がとれます。コードに時間を浪費する必要はありません。=)

これがお役に立てば幸いです。

于 2012-06-14T07:34:47.157 に答える
1

装飾さJFrameれていないクラスを作成し(Java6u10で透明性AWTUtilitiesのために見つけたものだと思います)、そこですべてのアニメーションを行うことができます。xミリ秒ごとに画像をキャプチャするためにWindow使用します。タイミングを行うために使用します。java.awt.Robot.getScreenCapture(Rectangle)javax.swing.Timer

Timer timer = new Timer(x, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        arrayOfImages[imageCount] = java.awt.Robot.getScreenCapture(r);
        count++;
    }
});

使用する Java ラッパー - Jffmpeg - を見つけました ( http://jffmpeg.sourceforge.net/download.html )。JMF - http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html - と Jffmpeg ドキュメント ページに書かれているその他のものが必要です。FMJ ( http://fmj-sf.net/ffmpeg-java/getting_started.php ) も別のオプションです。

FFmpegはGitでダウンロードする必要があります

最後に、別のフォーラム ( http://www.blackhatworld.com/blackhat-seo/youtube/330165-command-line-program-convert-image-video.html ) のこのスレッドは、保存された画像をビデオに変換する方法を示しています。 . Jffmeg のステップをすべてスキップすることもできます。代わりに、すべての画像をファイルに保存し、Runtime.getRuntime().exec(String) を使用してコマンド ラインを実行してビデオに変換することができます。しかし、これを行うと、プログラムをプラットフォーム非依存にすることができなくなります

Java でのビデオは少し退屈で煩わしいので、簡単なライブラリと API を使用して別の言語に切り替えることをお勧めします。

于 2012-06-15T07:24:48.657 に答える