Generating Videos - cmu462/Scotty3D GitHub Wiki

Converting frames to video with ffmpeg

Once you've rendered all the frames of your video, you can combine them into a video by using:

ffmpeg -r 60 -f image2 -s 800x600 -i ./Video_[TIME]_%4d.png -vcodec libx264 out.mp4

Where [TIME] should be replaced by the timestamp in each frame's filename (they should all be identical). If you don't have ffmpeg installed on your system, you can get it through most package managers, or you can download it directly, or use your own video creation program

Raytracing videos

Courtesy of former TA Zach Pomper in Spring 2019:

Hey guys, if you're interested in raytracing your animations, you can try adding this line to your application.cpp. Note that this feature hasn't been tested extensively, and will therefore not be going on github in the immediate future, so use at your own peril.

void Application::raytrace_video() {
  static string videoPrefix;

  if (action == Action::Raytrace_Video) {
    if (pathtracer->is_done()) {
      char num[32];
      sprintf(num, "%04d", timeline.getCurrentFrame());
      pathtracer->save_image(videoPrefix + num + string(".png"));
      timeline.step();

      if (timeline.getCurrentFrame() == timeline.getMaxFrame()) {
        timeline.action_stop();
        timeline.action_rewind();
        cout << "Done rendering video!" << endl;
        action = Action::Object;
        return;
      }
      pathtracer->stop();
      pathtracer->clear();
      set_up_pathtracer();
      pathtracer->start_raytracing();
      scene->render_splines_at(timeline.getCurrentFrame(),                       // <- Added
                               timeline.isCurrentlyPlaying(), useCapsuleRadius); // <- Added

    }
  } else {