Blame server/proxy/session-capture/generate_video_from_frames.py

Packit Service 5a9772
import os
Packit Service 5a9772
import argparse
Packit Service 5a9772
import time
Packit Service 5a9772
import cv2
Packit Service 5a9772
from os.path import join, getmtime
Packit Service 5a9772
Packit Service 5a9772
def get_image_size(path):
Packit Service 5a9772
    img = cv2.imread(path)
Packit Service 5a9772
    height, width, _ = img.shape
Packit Service 5a9772
    return (width, height)
Packit Service 5a9772
Packit Service 5a9772
def generate_video(output, frames, size, fps):
Packit Service 5a9772
    out = cv2.VideoWriter(
Packit Service 5a9772
        args.output, cv2.VideoWriter_fourcc(*'DIVX'), args.fps, size)
Packit Service 5a9772
Packit Service 5a9772
    for frame in frames:
Packit Service 5a9772
        img = cv2.imread(frame)
Packit Service 5a9772
        out.write(img)
Packit Service 5a9772
Packit Service 5a9772
    out.release()
Packit Service 5a9772
Packit Service 5a9772
def main(args):
Packit Service 5a9772
    # Load input frames, sorted by creation time.
Packit Service 5a9772
    files = [join(args.input, f) for f in os.listdir(
Packit Service 5a9772
        args.input) if os.path.isfile(join(args.input, f))]
Packit Service 5a9772
    files.sort(key=lambda x: getmtime(x))
Packit Service 5a9772
Packit Service 5a9772
    print('Generating video...')
Packit Service 5a9772
    print(f'Frame count: {len(files)}')
Packit Service 5a9772
Packit Service 5a9772
    start = time.time()
Packit Service 5a9772
    generate_video(args.output, files, get_image_size(files[0]), args.fps)
Packit Service 5a9772
Packit Service 5a9772
    print(
Packit Service 5a9772
        f'Output file {args.output} generated in {time.time() - start} seconds.')
Packit Service 5a9772
Packit Service 5a9772
Packit Service 5a9772
if __name__ == "__main__":
Packit Service 5a9772
    parser = argparse.ArgumentParser()
Packit Service 5a9772
    parser.add_argument(
Packit Service 5a9772
        "-i", "--input", help="path to a directory containing all frames")
Packit Service 5a9772
    parser.add_argument(
Packit Service 5a9772
        "-o", "--output", help="avi output file path", default="video.avi")
Packit Service 5a9772
    parser.add_argument("-f", "--fps", type=int, help="frames per second", default=8)
Packit Service 5a9772
    args = parser.parse_args()
Packit Service 5a9772
Packit Service 5a9772
    main(args)