Java 如何以无损格式从网络摄像头录制视频?
我正试图写一个应用程序,可以记录在一个无损格式的视频。为此,我使用网络摄像头捕获和Xuggler库。一切正常,但outout视频有以下瑕疵: 这并不是在所有的帧上都能观察到的,几乎是5帧中的1帧。我的代码: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
@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());
}
我做错了什么?需要更多关于依赖关系的信息。可能是链接?您需要什么链接?