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

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