A lot of bug fixes and edge cases
This commit is contained in:
1 parent
58e66996cc
commit
004556c4a7
5 files changed
+237
-106
No files matched your search
@@ -6,13 +6,15 @@ import glob
|
||||
import numpy as np
|
||||
import subprocess
|
||||
from utils import run
|
||||
from audio import extract_audio_segment_file, get_audio_duration, stick_together_audio, replace_with_shifted_mka
|
||||
from audio import extract_audio_segment_file, get_audio_duration, stick_together_audio, replace_with_shifted_mka, add_silence
|
||||
from video import probe_video, find_temporal_offset, corelate_videos
|
||||
from mkv import check_intro_outro_sync
|
||||
from tqdm import tqdm
|
||||
|
||||
DEBUG = False
|
||||
|
||||
MIN_END_DUR = 2.5
|
||||
|
||||
def mux_audio_into_output(Quality_Video, audio_file, output_dir):
|
||||
"""Mux trimmed audio into Quality_Video and place final file in output_dir."""
|
||||
output_dir = Path(output_dir)
|
||||
@@ -82,6 +84,8 @@ def process_one(German_Video: Path, Quality_Video: Path, output_dir: Path, offse
|
||||
|
||||
if step == "Extract pre beginning":
|
||||
german_audio_file = output_dir / f"{Path(Quality_Video).stem}_german_audio.mka"
|
||||
# german_audio_file1 = output_dir / f"{Path(Quality_Video).stem}_german_audio1.mka"
|
||||
# german_audio_file2 = output_dir / f"{Path(Quality_Video).stem}_german_audio2.mka"
|
||||
quality_audio_file1 = output_dir / f"{Path(Quality_Video).stem}_original_audio1.mka"
|
||||
quality_audio_file2 = output_dir / f"{Path(Quality_Video).stem}_original_audio2.mka"
|
||||
|
||||
@@ -94,6 +98,7 @@ def process_one(German_Video: Path, Quality_Video: Path, output_dir: Path, offse
|
||||
### Get the first part till german starts (if german does not start before file)
|
||||
start2 = vstart2
|
||||
end2 = start2 + offset0
|
||||
first_part = [start2, end2]
|
||||
if end2 - start2 > 0.05:
|
||||
if DEBUG: print(f"Cutting audio ({quality_audio_file1}) (from timestamp {start2:.6f}s) to timestamp {end2:.6f}s")
|
||||
try:
|
||||
@@ -114,6 +119,7 @@ def process_one(German_Video: Path, Quality_Video: Path, output_dir: Path, offse
|
||||
else:
|
||||
start = vstart
|
||||
end = min(vstart + duration, start + duration2)
|
||||
main_part = [start, end]
|
||||
if DEBUG: print(f"Cutting audio ({german_audio_file}) (from timestamp {start:.6f}s) to timestamp {end:.6f}s")
|
||||
try:
|
||||
extract_audio_segment_file(German_Video, start, end, german_audio_file)
|
||||
@@ -131,11 +137,12 @@ def process_one(German_Video: Path, Quality_Video: Path, output_dir: Path, offse
|
||||
start2 = vstart2 + end
|
||||
# end2 = start2 + (duration2 - duration - (n1 / fps))
|
||||
end2 = vstart2 + get_audio_duration(Quality_Video)
|
||||
last_part = [start2, end2]
|
||||
if end2 - start2 > 0.5:
|
||||
if DEBUG: print(f"Cutting audio ({quality_audio_file2}) (from timestamp {start2:.6f}s) to timestamp {end2:.6f}s")
|
||||
try:
|
||||
extract_audio_segment_file(Quality_Video, start2, end2, quality_audio_file2)
|
||||
except subprocess.CalledProcessError as e:
|
||||
except Exception as e:
|
||||
raise BrokenPipeError(
|
||||
f"{e}\n"
|
||||
f"Trying to extract Audio from {Quality_Video} {start2}-{end2} "
|
||||
@@ -147,9 +154,32 @@ def process_one(German_Video: Path, Quality_Video: Path, output_dir: Path, offse
|
||||
|
||||
# Combine the audio files
|
||||
if os.path.isfile(quality_audio_file1):
|
||||
stick_together_audio(quality_audio_file1, german_audio_file, german_audio_file)
|
||||
try:
|
||||
dur_q1 = get_audio_duration(quality_audio_file1)
|
||||
if dur_q1:
|
||||
stick_together_audio(quality_audio_file1, german_audio_file, german_audio_file)
|
||||
else: raise
|
||||
except:
|
||||
try:
|
||||
add_silence(german_audio_file, offset0)
|
||||
except Exception as e:
|
||||
raise BrokenPipeError(
|
||||
f"{e}\n"
|
||||
f"Trying to put together {quality_audio_file1} and {german_audio_file}"
|
||||
f"into {german_audio_file}. First file start, end is {first_part} and second is {main_part}"
|
||||
)
|
||||
|
||||
if os.path.isfile(quality_audio_file2):
|
||||
stick_together_audio(german_audio_file, quality_audio_file2, german_audio_file)
|
||||
try:
|
||||
dur_q2 = get_audio_duration(quality_audio_file2)
|
||||
if dur_q2 > MIN_END_DUR:
|
||||
stick_together_audio(german_audio_file, quality_audio_file2, german_audio_file)
|
||||
except:
|
||||
raise BrokenPipeError(
|
||||
f"{e}\n"
|
||||
f"Trying to put together {german_audio_file} and {quality_audio_file2}"
|
||||
f"into {german_audio_file}. First file start, end is {main_part} and second is {last_part}"
|
||||
)
|
||||
|
||||
if step == "Mux":
|
||||
|
||||
@@ -162,6 +192,7 @@ def process_one(German_Video: Path, Quality_Video: Path, output_dir: Path, offse
|
||||
os.remove(quality_audio_file1)
|
||||
if os.path.isfile(quality_audio_file2):
|
||||
os.remove(quality_audio_file2)
|
||||
# pass
|
||||
|
||||
if step == "Final check":
|
||||
try:
|
||||
@@ -192,20 +223,25 @@ def process_one(German_Video: Path, Quality_Video: Path, output_dir: Path, offse
|
||||
|
||||
|
||||
def main():
|
||||
output_dir = "./output_dir"
|
||||
start_num = 1
|
||||
episode_num = 11
|
||||
output_dir = "/home/honney/mount/Media/tmp/serien/ready/Classroom of the Elite/Season 01"
|
||||
if not os.path.isdir(output_dir):
|
||||
raise NotADirectoryError(f"Output directory is not a valid Directory: {output_dir}")
|
||||
start_num = 2
|
||||
episode_num = 24
|
||||
fault_catch = []
|
||||
|
||||
episodes = range(start_num, episode_num + 1)
|
||||
# episodes = [1]
|
||||
|
||||
for i in tqdm(episodes, desc="Episodes"):
|
||||
german_pattern = f"Folder0/S01E{i:02}*.mkv"
|
||||
# i =1
|
||||
# if i:
|
||||
german_pattern = f"/home/honney/mount/Media/tmp/serien/ger_low_quality/Classroom of the Elite (2017-2024) [imdbid-tt7263328]/Season 01/Classroom of the Elite S01E0{i:02}.mkv"
|
||||
if os.path.isfile(german_pattern):
|
||||
German_Video = [german_pattern]
|
||||
else:
|
||||
German_Video = glob.glob(german_pattern)
|
||||
quality_pattern = f"Folder1/S01E{i:02}*.mkv"
|
||||
quality_pattern = f"/home/honney/mount/Media/tmp/serien/high_quality/Classroom of the Elite/S01/E{i:02}*"
|
||||
if os.path.isfile(quality_pattern):
|
||||
Quality_Video = [quality_pattern]
|
||||
else:
|
||||
|
||||
Reference in new issue
Block a user