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