0

ビデオをロスレス形式で記録できるアプリケーションを作成しようとしています。この目的のために、私は Webcam-Capture と Xuggler ライブラリを使用します。すべてが機能しますが、outout ビデオには次のアーティファクトがあります。ここに画像の説明を入力

そして、これはすべてのフレームではなく、ほぼ 5 つのうちの 1 つのフレームで観察されます。私のコード:

@FXML
public void record() {
            File file = new File("output.wmv");

            IMediaWriter writer = ToolFactory.makeWriter(file.getName());
            Dimension size = WebcamResolution.VGA.getSize();

            writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_RAWVIDEO, size.width, size.height);

            Webcam webcam = Webcam.getDefault();
            webcam.setViewSize(size);
            webcam.open(true);

            long start = System.currentTimeMillis();

            for (int i = 0; i < 50; i++) {

                System.out.println("Capture frame " + i);

                BufferedImage image = ConverterFactory.convertToType(webcam.getImage(), BufferedImage.TYPE_3BYTE_BGR);
                IConverter converter = ConverterFactory.createConverter(image, IPixelFormat.Type.YUV420P);

                IVideoPicture frame = converter.toPicture(image, (System.currentTimeMillis() - start) * 1000);
                frame.setKeyFrame(i == 0);
                frame.setQuality(100);

                writer.encodeVideo(0, frame);

                // 10 FPS
                try {
                    Thread.sleep(40);
                } catch (InterruptedException e) {
                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                }
            }

            writer.close();

            System.out.println("Video recorded in file: " + file.getAbsolutePath());

}

私は何を間違っていますか?

4

1 に答える 1

0

依存関係に関する詳細情報が必要です。おそらくリンク?

于 2013-09-22T15:29:45.333 に答える