12

我正在处理中创建 3D 可视化。我预计每一帧的绘制时间都会比将动画显示为程序所需的时间更长,因此我想将其导出为视频。

这可能吗?最好的方法是什么?

4

5 回答 5

11

如果您不使用 Processing 2.0,您可以使用 MovieMaker 库将草图导出为视频(在处理 2.0 中,MovieMaker 将在工具中转换,但它还不能工作)。

其他选项是在您的 draw () 函数中使用 saveFrame() 方法

在这里您可以找到如何使用 MovieMaker 的示例

这里是 saveFrame() 方法的文档

于 2012-09-24T16:08:36.053 回答
7

Video Export for Processing库允许从Processing 直接导出 mp4。不过,它要求您在系统上安装ffmpeg

于 2015-10-20T16:10:18.930 回答
1

此处的 GSVideo 库在 Processing 2.0 中对此有所帮助。有一个类“GSMovieMaker”,其对象与上述非常相似。

于 2013-06-01T11:10:01.443 回答
1

经过一周的研究,我使用 ffmprg 二进制文件为自己编写了非常简单的代码:

if(frameCount<628){
    saveFrame("temp/anim_#####.png");
  }else if(frameCount == 628){
    println("Saving file!");
    processBuilder = new ProcessBuilder("G:/.../ffmpg/bin/ffmpeg.exe", "-r", "60", "-i",
        "C:/.../temp/anim_%05d.png", "-c:v", "libx264",
        "-r", "30", "-pix_fmt", "yuv420p", "C:/.../test.mp4");
    try {
      process = processBuilder.start();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

当然,您需要调整文件和 ffmpeg 二进制文件的路径(https://www.ffmpeg.org/download.html)。它应该独立于处理版本,因为它仅使用 saveFrame 并调用外部二进制文件来生成视频。享受 ;)

于 2015-11-23T22:43:58.957 回答
0

亲爱的可以使用Randel Shofer制作的程序,您只需修改8,10行代码即可在您的程序中使用它(如果您有更多时间,您可以在不修改源代码的情况下进行操作)。

程序(罐子)链接:http ://www.randelshofer.ch/cubetwister/files/QuickTimeDemo2.jar

说明:http ://www.randelshofer.ch/blog/2010/10/writing-quicktime-movies-in-pure-java/

于 2013-09-03T15:35:33.053 回答