2

次のオプションの両方を試しました。

1.

BufferedImage Buffered_Image;
MemoryCacheImageOutputStream MemoryCache_OutputStream = 
     new MemoryCacheImageOutputStream(new FileOutputStream("C:/Test.mov",false));

while (notFinished)  // Main recording loop.
{
   Buffered_Image=robot.createScreenCapture();         // Capture Screen image.
   try { ImageIO.write(Buffered_Image,"png",MemoryCache_OutputStream); }
   catch (Exception e) { e.printStackTrace(); }
}

2.

BufferedImage Buffered_Image;
ImageWriter writer;
try
{
  ImageOutputStream ios=ImageIO.createImageOutputStream(new File("C:/Test.mov"));
  Iterator writers=ImageIO.getImageWritersByFormatName("png");
  while (writers.hasNext())
  {
    writer=(ImageWriter)writers.next();
    writer.setOutput(ios);
    Out(writer.toString()+"  canInsertImage : "+writer.canInsertImage(0));
    // Got this: com.sun.imageio.plugins.png.PNGImageWriter@19fcc69  
    // canInsertImage : false
  }
}
catch (Exception e) { }

cntPics=0;
while (notFinished)  // Main recording loop.
{
   Buffered_Image=robot.createScreenCapture();         // Capture Screen image.
   writer.write(null,new IIOImage(Buffered_Image,null,null),null);
   if (writer.canInsertImage(-1)) {
         // Append image at highest index
         writer.writeInsert(-1,new IIOImage(Buffered_Image,null,null),null); 
   } else Out("Writer can’t append image Id : "+cntPics);
   cntPics++;
}

どちらも機能しませんでした。複数の PNG 画像をファイルに保存する正しい方法は何ですか?


編集:

そうです、画面セッションを記録できるKrutという Java プログラムを見つけたのですが、JPEGImageEncoder を使用していて、画質が思うように良くないので、ImageIO を使用してシーケンスをエンコードできないかと考えています。

ImageIO でそれができない場合、次の質問は、それをエンコードするために使用できるスタンドアロンのオープン ソース PNGImageEncoder があるかどうかです。オープンソースの PNGImageEncoders があることは知っていますが、それらはプロジェクトに絡み合っており、すべてのサポート ファイルを取得するのが難しい傾向があります。何かアイデアはありますか? ありがとう!

4

2 に答える 2

2

複数の PNG ファイルを続けて書き込んで、ビデオ (MOV) ファイルを作成しようとしているようです。これはうまくいきません。おそらく、画像をビデオ ファイルにエンコードするためのサード パーティ製ライブラリを見つける必要があります (これ自体が良い SO の質問になる可能性があります)。

編集: 複数の JPG 画像を連続して書き込んでMJPEG (Motion JPEG)の形式を取得することで実際にビデオを取得できる場合もありますが、MOV などの他の形式の場合は、実際のエンコーダーが必要になることに注意してください。

于 2008-12-23T19:57:58.357 に答える
1

あなたは何をしようとしているのですか?MNGの再発明?同じファイルに複数の PNG 画像を書き込むことができたとしても、どのプログラムにも理解されない複合ファイルになります (ただし、作成する可能性のあるものを除く)。

Marc が提案したように、ムービーを作成したい場合は、QuickTime for Java (QTJava) を検討することをお勧めします。アニメーション/フレームからムービーを作成するためにProcessingで使用されるソリューションです。最悪(ただしファイルが小さい)から最高品質(結果としてファイルサイズが大きくなる)まで、いくつかの品質/フォーマットがあります。

于 2008-12-23T20:49:18.580 に答える