org.bytedeco.javacv.CanvasFrame showImage正在挂起

时间:2018-08-24 09:15:39

标签: ffmpeg javacv

IOS设备正在将h264文件(3秒的视频)上传到服务器。 VLC可以成功读取每个文件。

我使用FFMpegFrameGrabber抓取每个帧,并尝试使用CanvasFrame.showImage如下显示它们。但是,方法调用挂起。

CanvasFrame canvas = new CanvasFrame("ios");
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas.setAlwaysOnTop(true);
canvas.setResizable(true);
try(FileInputStream fis = new FileInputStream(file))
{
    try(FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(fis))
    {
        grabber.setFormat("h264");
        grabber.start();
        while(true)
        {
            Frame frame = grabber.grabImage();
            if(frame != null)
            {
                canvas.showImage(frame);
            }
        }
    }
}

我在上面的代码中做错了什么吗?

EDIT#1:当我尝试为帧保存缓冲图像时,将保存有效图像。

BufferedImage image = converter.getBufferedImage(frame);
File outputfile = new File("png_file");
ImageIO.write(image, "png", outputfile);

1 个答案:

答案 0 :(得分:0)

以下还需要完成...

    canvas.setCanvasSize(768, 1024); 
    canvas.setVisible(true);
    canvas.validate();