From c3769086bceb3d03c9245c323d72c7188178ef50 Mon Sep 17 00:00:00 2001 From: jaydee Date: Tue, 24 Sep 2024 17:57:08 +0200 Subject: [PATCH] bitwarden --- handle_imported_video.py | 238 +++++++++++++++++++++++---------------- 1 file changed, 144 insertions(+), 94 deletions(-) diff --git a/handle_imported_video.py b/handle_imported_video.py index cf19456..4bb64e8 100644 --- a/handle_imported_video.py +++ b/handle_imported_video.py @@ -19,7 +19,7 @@ elif sys.platform == "darwin": elif sys.platform == "win32": ops = "win" try: - opts, args = getopt.getopt(sys.argv[1:], "r:fp:d:s:", ["command=", "help", "output=", "backup"]) + opts, args = getopt.getopt(sys.argv[1:], "a:r:fp:d:s:", ["command=", "help", "output=", "backup"]) except getopt.GetoptError as err: # print help information and exit: print(str(err)) # will print something like "option -a not recognized" @@ -45,6 +45,8 @@ for o, a in opts: _FLIP = True elif o in ("-r", "--source"): _SOURCE_DIR = a + elif o in ("-a", "--action"): + _ACTION = a elif o in ("-s", "--sequence"): a = a.split(",") for s in a: @@ -62,121 +64,169 @@ if ops == "win": else: _FULL_PATH = _SOURCE_DIR + "/" + _DEV + "/" + _DAY_DIR + "/" + + #print(_FULL_PATH) -video_seq = {} -if os.path.exists(_FULL_PATH): - if os.path.exists(_FULL_PATH + "100GOPRO"): - _FULL_PATH = _FULL_PATH + "100GOPRO" - for filename in os.listdir(_FULL_PATH): - if filename.endswith(".MP4"): - prefix = filename[0:2] - part = prefix + filename[2:4] - seq = filename[4:8] - if not seq in video_seq: - video_seq[seq] = [] - video_seq[seq].append(part + seq + ".MP4") - # print(filename) - # print(seq) - # print(part) - # print(json.dumps(video_seq,indent=2)) - _PROCESSED = _FULL_PATH + "processed" - if not os.path.exists(_PROCESSED): - os.mkdir(_PROCESSED) - # print(f"SEQUENCES : {_SEQUENCES}") - - for vid in video_seq: - - if len(_SEQUENCES) != 0 and vid not in _SEQUENCES: - continue - export_name = "joined_" + vid + ".MP4" - parts = video_seq[vid] - - parts.sort() - # print(parts) - if len(parts) > 1: - print("This need to be joined!") - # for p in parts: - # join_string = - # else: - # continue - # print(parts) - - # print(type(parts)) - #ffmpeg -i concat:"input1.mp4|input2.mp4" output.mp4 - - os.chdir(_FULL_PATH) - f = open("video.txt", "w") - f.write("# Files to join\n") - f.close() - f = open("video.txt", "a") - for p in parts: - f.write(f"file '{p}'\n") - - f.close() - print(_FULL_PATH) - # if _FLIP: - # if ops == "win": - # myCmd = 'ffmpeg -display_rotation 180 -f concat -i video.txt -vcodec copy -acodec copy ' + export_name - # else: - # myCmd = '/opt/ffmpeg/ffmpeg -display_rotation 180 -f concat -i video.txt -vcodec copy -acodec copy ' + export_name - # else: - # if ops == "win": - # myCmd = 'ffmpeg -f concat -i video.txt -vcodec copy -acodec copy ' + export_name - # else: - # myCmd = '/opt/ffmpeg/ffmpeg -f concat -i video.txt -vcodec copy -acodec copy ' + export_name - - - - - +if _ACTION == "join": + video_seq = {} - # print(os.getcwd()) - #status, output = subprocess.getstatusoutput(myCmd) + if os.path.exists(_FULL_PATH): + if os.path.exists(_FULL_PATH + "100GOPRO"): + _FULL_PATH = _FULL_PATH + "100GOPRO" + for filename in os.listdir(_FULL_PATH): + if filename.endswith(".MP4"): + prefix = filename[0:2] + part = prefix + filename[2:4] + seq = filename[4:8] + if not seq in video_seq: + video_seq[seq] = [] + video_seq[seq].append(part + seq + ".MP4") + # print(filename) + # print(seq) + # print(part) + # print(json.dumps(video_seq,indent=2)) + _PROCESSED = _FULL_PATH + "processed" + if not os.path.exists(_PROCESSED): + os.mkdir(_PROCESSED) + # print(f"SEQUENCES : {_SEQUENCES}") + for vid in video_seq: + + if len(_SEQUENCES) != 0 and vid not in _SEQUENCES: + continue + export_name = "joined_" + vid + ".MP4" + parts = video_seq[vid] + + parts.sort() + # print(parts) + if len(parts) > 1: + print("This need to be joined!") + # for p in parts: + # join_string = + # else: + # continue + # print(parts) + + # print(type(parts)) + #ffmpeg -i concat:"input1.mp4|input2.mp4" output.mp4 + + os.chdir(_FULL_PATH) + f = open("video.txt", "w") + f.write("# Files to join\n") + f.close() + f = open("video.txt", "a") + for p in parts: + f.write(f"file '{p}'\n") + + f.close() + print(_FULL_PATH) + # if _FLIP: + # if ops == "win": + # myCmd = 'ffmpeg -display_rotation 180 -f concat -i video.txt -vcodec copy -acodec copy ' + export_name + # else: + # myCmd = '/opt/ffmpeg/ffmpeg -display_rotation 180 -f concat -i video.txt -vcodec copy -acodec copy ' + export_name + # else: + # if ops == "win": + # myCmd = 'ffmpeg -f concat -i video.txt -vcodec copy -acodec copy ' + export_name + # else: + # myCmd = '/opt/ffmpeg/ffmpeg -f concat -i video.txt -vcodec copy -acodec copy ' + export_name + + + + + + + # print(os.getcwd()) + #status, output = subprocess.getstatusoutput(myCmd) + + if _FLIP: + if ops == "win": + myCmd = [ + "ffmpeg", "-display_rotation", "180", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name, "null", "/dev/null", + ] + else: + myCmd = [ + "/opt/ffmpeg/ffmpeg", "-display_rotation", "180", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name, "null", "/dev/null", + ] + else: + if ops == "win": + myCmd = [ + "ffmpeg", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name , "null", "/dev/null", + ] + else: + myCmd = [ + "/opt/ffmpeg/ffmpeg", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name , "null", "/dev/null", + ] + + print(myCmd) + print(f"Joining {len(parts)} files...") + ff = FfmpegProgress(myCmd) + with tqdm(total=100, position=1, desc="Convert") as pbar: + for progress in ff.run_command_with_progress(): + pbar.update(progress - pbar.n) + + # get the output + print(ff.stderr) + status = 0 + if status == 0: + print("Moving...") + for p in parts: + try: + shutil.move(p, _PROCESSED) + except: + print(f"Failed to move {p}") + try: + shutil.move(p.replace("MP4", "THM"), _PROCESSED) + except: + print(f"Failed to move {p.replace("MP4", "THM")}") + + try: + shutil.move(p.replace("MP4", "LRV").replace("GH","GL"), _PROCESSED) + except: + print(f"Failed to move {p.replace("MP4", "LRV")}") + os.remove("video.txt") + +if _ACTION == "encode": + if os.path.exists(_FULL_PATH): + if os.path.exists(_FULL_PATH + "100GOPRO"): + _FULL_PATH = _FULL_PATH + "100GOPRO" + for filename in os.listdir(_FULL_PATH): + if filename.startswith("joined_") and filename.endswith(".MP4"): + parts.append(filename) + + + + for p in parts: + export_name = "encoded_" + p if _FLIP: if ops == "win": myCmd = [ - "ffmpeg", "-display_rotation", "180", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name, "null", "/dev/null", + "ffmpeg", "-display_rotation", "180", "-i", p, "-c:v", "hevc_amf", "-rc", "cqp", "-qp_i", "42", "-qp_p", "42", "-quality", "quality", "-crf", "25", export_name, "-f", "null", "/dev/null", ] else: myCmd = [ - "/opt/ffmpeg/ffmpeg", "-display_rotation", "180", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name, "null", "/dev/null", + "/opt/ffmpeg/ffmpeg", "-display_rotation", "180", "-i", p, "-c:v", "hevc_amf", "-rc", "cqp", "-qp_i", "42", "-qp_p", "42", "-quality", "quality", "-crf", "25", export_name, "-f", "null", "/dev/null", ] else: if ops == "win": myCmd = [ - "ffmpeg", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name , "null", "/dev/null", + "ffmpeg", "-i", p, "-c:v", "hevc_amf", "-rc", "cqp", "-qp_i", "42", "-qp_p", "42", "-quality", "quality", "-crf", "25", export_name , "-f", "null", "/dev/null", ] else: myCmd = [ - "/opt/ffmpeg/ffmpeg", "-f", "concat", "-i", "video.txt ","-vcodec", "copy", "-acodec", "copy", export_name , "null", "/dev/null", + "/opt/ffmpeg/ffmpeg", "-i", p, "-c:v", "hevc_amf", "-rc", "cqp", "-qp_i", "42", "-qp_p", "42", "-quality", "quality", "-crf", "25", export_name , "-f", "null", "/dev/null", ] - print(myCmd) - print(f"Joining {len(parts)} files...") + print(f"Encoding files...") ff = FfmpegProgress(myCmd) with tqdm(total=100, position=1, desc="Convert") as pbar: for progress in ff.run_command_with_progress(): pbar.update(progress - pbar.n) # get the output - print(ff.stderr) - status = 0 - if status == 0: - print("Moving...") - for p in parts: - try: - shutil.move(p, _PROCESSED) - except: - print(f"Failed to move {p}") - try: - shutil.move(p.replace("MP4", "THM"), _PROCESSED) - except: - print(f"Failed to move {p.replace("MP4", "THM")}") - - try: - shutil.move(p.replace("MP4", "LRV").replace("GH","GL"), _PROCESSED) - except: - print(f"Failed to move {p.replace("MP4", "LRV")}") - os.remove("video.txt") \ No newline at end of file + print(ff.stderr) + #ffmpeg -i .\GH010149.MP4 -c:v hevc_amf -rc cqp -qp_i 42 -qp_p 42 -quality quality -crf 25 output7.mp4 + + + \ No newline at end of file