我们使用vlcj捕获网络摄像头视频并将其显示在用户屏幕上。我们一帧一帧地捕捉它,一张 1280x720 的图像,大约 30fps。
我们的应用程序 UI 完全是 JavaFX,我们在显示所述帧时遇到问题。
使用 Swing,我们会做如下的事情:
BufferedImage image; //create compatible image
public void onDisplay(int[] rgbBuffer){
image.setRGB(0,0,width, height, rgbBuffer, 0, width);
myJPane.repaint();
}
但是JavaFX的Image类没有提供这样的方法,并且创建一个BufferedImage
只是为了将其转换为JavaFX Image
(通过使用Image.impl_fromPlatformImage()
)是非常昂贵的。
问题:如何创建一个基于RGB int[]
的JavaFX Image
,它可以设置为ImageView
?有没有更好(如"更快")的方式来显示它?
此功能还不是 JavaFX 平台的一部分 - 现在我认为您必须使用当前使用的 BufferedImage 方法。
您可以跟踪功能图像操作请求。 任何人都可以注册一个jira帐户,为问题投票/添加评论/详细说明用例/等,或者在JavaFX开发邮件列表中为设计提供输入。