diff --git a/.gitignore b/.gitignore index c62fcd5..3017c73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ output/ +*.gif +*.mp4 # ---> Python diff --git a/make_mp4.py b/make_mp4.py new file mode 100644 index 0000000..b5df4d5 --- /dev/null +++ b/make_mp4.py @@ -0,0 +1,37 @@ +from PIL import Image +import imageio.v2 as imageio +import numpy as np +import os +import re + +frame_folder = "./output" +output_mp4 = "output.mp4" +fps = 4 + +def frame_number(filename): + m = re.search(r"frame_(\d+)\.png", filename) + return int(m.group(1)) + +files = sorted( + [ + f for f in os.listdir(frame_folder) + if f.startswith("frame_") and f.endswith(".png") + ], + key=frame_number, +) + +with imageio.get_writer( + output_mp4, + fps=fps, + codec="libx264", + pixelformat="yuv420p", +) as writer: + for f in files: + path = os.path.join(frame_folder, f) + + img = Image.open(path).convert("RGB") + frame = np.asarray(img) + + writer.append_data(frame) + +print(f"Saved {output_mp4}") \ No newline at end of file diff --git a/output.gif b/output.gif deleted file mode 100644 index f8be27c..0000000 Binary files a/output.gif and /dev/null differ