JavaCV FFmpegFrameRecorder视频输出偏红色

时间:2016-06-09 06:04:16

标签: java video colors ffmpeg javacv

我正在尝试使用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(); 
    } 
}

如果有人告诉我什么是错的,我会很感激的。提前感谢您的帮助。

1 个答案:

答案 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