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);
答案 0 :(得分:0)
以下还需要完成...
canvas.setCanvasSize(768, 1024);
canvas.setVisible(true);
canvas.validate();