import subprocess
from src.engines.ffmpeg.ffmpeg_engine import FFMPEG


def image_sequence_to_video(source_glob_pattern, output_path, framerate=24, encoder="prores_ks", profile=4,
                            start_frame=1):
    subprocess.run([FFMPEG.default_engine_path(), "-framerate", str(framerate), "-start_number",
                    str(start_frame), "-i", f"{source_glob_pattern}", "-c:v", encoder, "-profile:v", str(profile),
                    '-pix_fmt', 'yuva444p10le', output_path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
                   check=True)


def save_first_frame(source_path, dest_path, max_width=1280):
    subprocess.run([FFMPEG.default_engine_path(), '-i', source_path, '-vf', f'scale={max_width}:-1',
                    '-vframes', '1', dest_path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True)


def generate_thumbnail(source_path, dest_path, max_width=240, fps=12):
    subprocess.run([FFMPEG.default_engine_path(), '-i', source_path, '-vf',
                    f"scale={max_width}:trunc(ow/a/2)*2,format=yuv420p", '-r', str(fps), '-c:v', 'libx264', '-preset',
                    'ultrafast', '-an', dest_path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True)
