JavaCV FFmpegFrameRecorder 视频输出偏红
JavaCV FFmpegFrameRecorder Video output reddish color
我正在尝试使用 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();
}
}
如果有人告诉我哪里出了问题,我将不胜感激。在此先感谢您的帮助。
遇到了类似的问题。看来我的问题是没有正确设置 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!
我正在尝试使用 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();
}
}
如果有人告诉我哪里出了问题,我将不胜感激。在此先感谢您的帮助。
遇到了类似的问题。看来我的问题是没有正确设置 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!