Java 使用opengl创建视频处理
我正在创建一个Java 使用opengl创建视频处理,java,api,processing,jmf,Java,Api,Processing,Jmf,我正在创建一个restapi,根据用户输入和提供的动画类型动态生成视频。因此,我使用processing 2.2.1来实现这一点。 我想使用OPENGL生成三维动画。但是OPENGL需要窗口对象。由于我在后台使用processing来生成帧,因此如何使用processing withOPENGL来生成动画帧,而不使用交互方式,而不显示窗口 我的示例代码 import com.hamoid.VideoExport; import processing.core.*; public class
restapi
,根据用户输入和提供的动画类型动态生成视频。因此,我使用processing 2.2.1来实现这一点。
我想使用OPENGL
生成三维动画。但是OPENGL
需要窗口对象。由于我在后台使用processing来生成帧,因此如何使用processing withOPENGL
来生成动画帧,而不使用交互方式,而不显示窗口
我的示例代码
import com.hamoid.VideoExport;
import processing.core.*;
public class CircleSketch extends PApplet {
private VideoExport videoExport;
public void setup() {
size(400, 400,OPENGL);
videoExport = new VideoExport(this, "F:/work/tmp.mp4");
background(0);
}
public void draw() {
background(0);
fill(200);
rotateX(radians(50));
rectMode(CENTER);
rect(width/2,height/2, 100, 100);
videoExport.saveFrame();
}
}
DisplayFrame
Class
public class DisplayFrame extends javax.swing.JFrame {
public DisplayFrame(){
this.setSize(600, 600); //The window Dimensions
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.JPanel panel = new javax.swing.JPanel();
panel.setBounds(20, 20, 600, 600);
processing.core.PApplet sketch = new CircleSketch();
panel.add(sketch);
this.add(panel);
this.setVisible(false);
sketch.init(); //this is the function used to start the execution of the sketch
}
public static void main(String[] args) {
new DisplayFrame().setVisible(false);
}
}
有什么建议吗
如何在不显示窗口的情况下,使用OPENGL处理生成动画帧而不使用交互方式
简而言之:鉴于当前的OpenGL驱动程序模型,您不能(只要您想使用GPU进行渲染)。就是这样
如果您可以使用软件渲染(慢速),那么就有了。此外,在可预见的未来,驱动程序模型也将发生变化,从而允许在无头环境中使用OpenGL。在此之前,您需要图形环境中的某种窗口,该窗口实际上会主动提供显示输出(因此,启动X11服务器并对其进行后台处理是不够的).OpenGL与处理无关。也许情况正好相反。但在我看来,你应该问与处理框架相关的问题,而不是OpenGL。此外,你的代码与OpenGL无关。非常感谢你的回答。那么,如何在linux服务器环境中使用OPENGL运行处理呢。我是否需要安装KDE或X11服务器之类的桌面环境就可以了。这是一个非常准确的答案(+1)@SumitGupta我还将使用软件渲染器(可能是Java3D?)进行测试,或者将3d坐标转换为2d并在2d中绘制?请注意,默认情况下,PApplets将创建一个窗口(稍后可以隐藏)。如果这是一个问题,考虑使用软件3D的纯javalibrary@SumitGupta:您需要至少为您的GPU安装一个X11服务器和驱动程序。根据您的发行版,普通用户可能被允许或不被允许启动X服务器。这里描述了如何修复它:;一旦普通用户可以启动X服务器,您就可以使用
xinit--
启动在X服务器中运行的程序。如果您有多个程序需要X,您可能需要启动某种会话环境(DJB的daemontools适用于此)。@SumitGupta:请记住,X服务器提供了另一个攻击面,因此,如果您的internet服务遭到黑客攻击,它可能会从X服务器反弹以提升其权限。所以你应该有安全意识。