Spaces:
Build error
Build error
| import cv2 | |
| import numpy as np | |
| def write_video(file_path, frames, fps, reversed=True, start_frame_dupe_amount=15, last_frame_dupe_amount=30): | |
| """ | |
| Writes frames to an mp4 video file | |
| :param file_path: Path to output video, must end with .mp4 | |
| :param frames: List of PIL.Image objects | |
| :param fps: Desired frame rate | |
| :param reversed: if order of images to be reversed (default = True) | |
| """ | |
| if reversed == True: | |
| frames.reverse() | |
| w, h = frames[0].size | |
| fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') | |
| # fourcc = cv2.VideoWriter_fourcc('h', '2', '6', '4') | |
| # fourcc = cv2.VideoWriter_fourcc(*'avc1') | |
| writer = cv2.VideoWriter(file_path, fourcc, fps, (w, h)) | |
| # start frame duplicated | |
| for x in range(start_frame_dupe_amount): | |
| np_frame = np.array(frames[0].convert('RGB')) | |
| cv_frame = cv2.cvtColor(np_frame, cv2.COLOR_RGB2BGR) | |
| writer.write(cv_frame) | |
| for frame in frames: | |
| np_frame = np.array(frame.convert('RGB')) | |
| cv_frame = cv2.cvtColor(np_frame, cv2.COLOR_RGB2BGR) | |
| writer.write(cv_frame) | |
| # last frame duplicated | |
| for x in range(last_frame_dupe_amount): | |
| np_frame = np.array(frames[len(frames) - 1].convert('RGB')) | |
| cv_frame = cv2.cvtColor(np_frame, cv2.COLOR_RGB2BGR) | |
| writer.write(cv_frame) | |
| writer.release() | |