2

Robot クラスを使用してスクリーン キャプチャ モジュールを作成しています。アプリケーションのスクリーンショットを x ミリ秒ごとに取得し、ディスクに書き込みます。画面キャプチャが終わったら、FFMPEG でスクリーンショットをビデオにコンパイルしています。

ただし、ディスクへのイメージの書き込みは非常に遅く、アプリケーションが停止します。私は何が欠けていますか?簡単なスクリーン キャプチャ モジュールを作成するより良い方法はありますか?

編集: イメージをディスクに書き込むいくつかの方法を試しましたが、どれも非常に遅いです。使いやすさから、私は次のことに固執しています。

ImageIO.write(bufferedImage ,"jpg", file);
4

4 に答える 4

4

または、画像をキャプチャするときに画像をビデオ形式にエンコードし、大きな一時ファイルをまったく書き込まないようにします。Xugglerを使用した完全なコードはここにあります:

Xugglerスクリーンキャプチャデモコード

于 2009-11-06T05:55:59.610 に答える
3

遅いディスク IO を待つ必要がないように、書き込みを新しいスレッドに入れてみてください。

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
executor.schedule(new Runnable(){
    @Override
     public void run() {
            writeImageHere(bufferedImage, file);
     }                  
}

同時実行の問題に注意してください。

2 番目の (メモリを集中的に使用する) 解決策は、jpg をバッファリングし、それらをすべてメモリに保持し、一定の時間が経過するか、プログラムが終了したときにのみ書き込むことです。

于 2009-07-06T16:43:21.230 に答える
0
于 2009-07-06T16:47:17.307 に答える
0

この投稿の返信 6 を確認してください。これは、JAI を使用すると書き込みパフォーマンスが向上することを意味します。

于 2009-07-06T19:58:59.417 に答える