37 lines
735 B
Python
37 lines
735 B
Python
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}") |