org.bytedeco.javacv.CanvasFrame showImage висит - PullRequest
0 голосов
/ 24 августа 2018

Устройство 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);
            }
        }
    }
}

Я что-то не так делаю в приведенном выше коде?

РЕДАКТИРОВАТЬ # 1: Когда я пытаюсь сохранить буферизованное изображение для кадра, действительнымизображение сохранено.

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

1 Ответ

0 голосов
/ 24 августа 2018

Также необходимо сделать следующее ...

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