我正在尝试使用FFmpegFrameRecorder作为更大程序的一部分,从一组图像中制作视频.mp4
文件,因此我设置了一个测试项目,在其中我尝试制作100个视频25fps的同一帧的实例。该计划似乎有效。但是,每次我运行它时,图像似乎都是偏红的。好像已经应用了红色过滤器。
以下是代码段:
public static void main(String[] args) {
File file = new File("C:/Users/Diego/Desktop/tc-images/image0.jpg");
BufferedImage img = null;
try {
img = ImageIO.read(file);
} catch (IOException e1) {
e1.printStackTrace();
}
IplImage image = IplImage.createFrom(img);
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("C:/Users/Diego/Desktop/tc-images/test.mp4",1920,1080);
try {
recorder.setVideoCodec(13);
recorder.setFormat("mp4");
recorder.setPixelFormat(0);
recorder.setFrameRate(25);
recorder.start();
for (int i=0;i<100;i++){
recorder.record(image);
}
recorder.stop();
}
catch (Exception e){
e.printStackTrace();
}
}
如果有人告诉我什么是错的,我会很感激的。提前感谢您的帮助。
答案 0 :(得分:1)
有类似的问题..似乎我的问题是没有正确设置pixelFormat。我最终把它设置为
org.bytedeco.javacpp.avutil.AV_PIX_FMT_RGB32_1
现在它正确出口了!
实际上,根据我在代码中看到的内容,我从不致电recorder.setPixelFormat();
相反,我在录制时设置了像素格式:
recorder.record(image,org.bytedeco.javacpp.avutil.AV_PIX_FMT_RGB32_1);
如果这不起作用,我会尝试各种格式at the source code of the avutil class!