我正在处理中创建 3D 可视化。我预计每一帧的绘制时间都会比将动画显示为程序所需的时间更长,因此我想将其导出为视频。
这可能吗?最好的方法是什么?
Video Export for Processing库允许从Processing 直接导出 mp4。不过,它要求您在系统上安装ffmpeg。
此处的 GSVideo 库在 Processing 2.0 中对此有所帮助。有一个类“GSMovieMaker”,其对象与上述非常相似。
经过一周的研究,我使用 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 并调用外部二进制文件来生成视频。享受 ;)
亲爱的可以使用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/