Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以无损格式从网络摄像头录制视频?_Java_Video_Webcam_Xuggler_Xuggle - Fatal编程技术网

Java 如何以无损格式从网络摄像头录制视频?

Java 如何以无损格式从网络摄像头录制视频?,java,video,webcam,xuggler,xuggle,Java,Video,Webcam,Xuggler,Xuggle,我正试图写一个应用程序,可以记录在一个无损格式的视频。为此,我使用网络摄像头捕获和Xuggler库。一切正常,但outout视频有以下瑕疵: 这并不是在所有的帧上都能观察到的,几乎是5帧中的1帧。我的代码: @FXML public void record() { File file = new File("output.wmv"); IMediaWriter writer = ToolFactory.makeWriter(file.getNam

我正试图写一个应用程序,可以记录在一个无损格式的视频。为此,我使用网络摄像头捕获和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());

}
@FXML
公开作废记录(){
File File=新文件(“output.wmv”);
IMediaWriter=ToolFactory.makeWriter(file.getName());
维度大小=WebcamResolution.VGA.getSize();
writer.addVideoStream(0,0,ICodec.ID.CODEC\u ID\u RAWVIDEO,size.width,size.height);
Webcam Webcam=Webcam.getDefault();
网络摄像头。setViewSize(大小);
网络摄像头。打开(正确);
长启动=System.currentTimeMillis();
对于(int i=0;i<50;i++){
System.out.println(“捕获帧”+i);
BuffereImage=ConverterFactory.convertToType(webcam.getImage(),BuffereImage.TYPE_3BYTE_BGR);
IConverter converter=ConverterFactory.createConverter(image,IPixelFormat.Type.YUV420P);
IVideo画框=转换器.toPicture(图像,(System.currentTimeMillis()-start)*1000);
frame.setKeyFrame(i==0);
帧质量(100);
编写器。编码视频(0,帧);
//每秒10帧
试一试{
睡眠(40);
}捕捉(中断异常e){
e、 printStackTrace();//要更改catch语句的主体,请使用文件|设置|文件模板。
}
}
writer.close();
System.out.println(“录制在文件中的视频:+file.getAbsolutePath());
}

我做错了什么?

需要更多关于依赖关系的信息。可能是链接?

您需要什么链接?