提问者:小点点

JavaCV FFmpegFrameRecorder视频输出红色


下面是代码片段:

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

匿名用户

有类似的问题..我的问题似乎是没有正确设置pixelFormat。我最终把它设置为

org.bytedeco.javacpp.avutil.AV_PIX_FMT_RGB32_1

它现在正确地出口!

实际上,从我在代码中看到的情况来看,我从来没有调用recorder.setPixelFormat();

相反,我设置了像素格式,同时记录如下:

recorder.record(image,org.bytedeco.javacpp.avutil.AV_PIX_FMT_RGB32_1);

如果这不起作用,我将尝试avutil类源代码中的各种格式!