From 10a812024c7188187af7b31c4f0b7efe87da21b1 Mon Sep 17 00:00:00 2001 From: Hannes Braun Date: Sat, 10 Dec 2022 14:01:39 +0100 Subject: [PATCH] Initial commit --- main.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..8561db1 --- /dev/null +++ b/main.py @@ -0,0 +1,41 @@ +import argparse +import subprocess + +import yaml + +# Hannes' AV1 wrapper script +# Version 1.0.0 + +parser = argparse.ArgumentParser(prog="hav1w") +parser.add_argument("input") +parser.add_argument("output") +parser.add_argument("preset") +parser.add_argument("--crf") +parser.add_argument("--ba") +parser.add_argument("--alayout") +parser.add_argument("--cpu") +parser.add_argument("--mf") +args = parser.parse_args() + +with open("av1_presets.yml", "r") as stream: + presets = yaml.safe_load(stream) +preset = presets[args.preset] + +if args.crf is not None: + preset["crf"] = args.crf +if args.ba is not None: + preset["ba"] = args.ba +if args.alayout is not None: + preset["alayout"] = args.alayout +if args.cpu is not None: + preset["cpu"] = args.cpu +if args.mf is not None: + preset["mf"] = args.mf + +cmd = ["ffmpeg", "-i", args.input, "-c:v", "libaom-av1", "-c:a", "libopus", "-c:s", "copy", "-map", "0", + "-crf", preset["crf"], "-b:v", "0", "-b:a", preset["ba"], + "-af", f"aformat=channel_layouts={preset['alayout']}", "-mapping_family", preset["mf"], + "-cpu-used", preset["cpu"], "-row-mt", "1", "-tiles", "2x2", args.output] + +p = subprocess.run(cmd) +exit(p.returncode)