diff --git a/main.py b/main.py index 55209ad..47a7a65 100644 --- a/main.py +++ b/main.py @@ -169,7 +169,7 @@ def main(): prev_frame_path = None frame_count = 0 for frame_paths in video_frames_to_disk_generator(video_path, output_dir): - logging.info(f"Processing frames: {frame_paths}") + logging.info(f"Processing frames: {len(frame_paths)}") if prev_frame_path is not None: img1 = prev_frame_path[-1] @@ -193,12 +193,47 @@ def main(): def builder(): frames_dir = "output/frames" interpolated_dir = "output/interpolated" - list_path = "file_list.txt" + moved_dir = "output/moved" video_path = "source/video.mp4" output_video = "output/interpolated_video.mp4" - build_file_list('output/moved_frames', list_path) - merge_with_ffmpeg(video_path, list_path, output_video) + move_images(frames_dir, interpolated_dir, moved_dir) + cap = cv2.VideoCapture(video_path) + + if not cap.isOpened(): + raise ValueError("Cannot open original video") + + fps = cap.get(cv2.CAP_PROP_FPS) + cmd = [ + "ffmpeg", + "-y", + "-framerate", str(fps * 2), + "-i", f"{moved_dir}/img_%08d.png", + "-i", video_path, + "-c:v", "libx264", + "-c:a", "copy", + "-shortest", + output_video, + ] + logging.info("Running ffmpeg command to build final video: " + " ".join(cmd)) + subprocess.run(cmd, check=True) + + +def cleanup(): + import os + import shutil + frames_dir = "output/frames" + interpolated_dir = "output/interpolated" + moved_dir = "output/moved" + os.makedirs(frames_dir, exist_ok=True) + os.makedirs(interpolated_dir, exist_ok=True) + os.makedirs(moved_dir, exist_ok=True) + shutil.rmtree(frames_dir) + shutil.rmtree(interpolated_dir) + shutil.rmtree(moved_dir) if __name__ == "__main__": + cleanup() main() + builder() + cleanup()