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