A lot of bug fixes and edge cases

This commit is contained in:
Hannes committed 2026-03-22 03:20:45 +01:00
1 parent 3e81425f84
commit 525b9d4dc6
5 files changed
+236 -105

No files matched your search

+44 -8
View File
@@ -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:
@@ -193,19 +224,24 @@ 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
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"./dubbed_source/Season 01/Example Series S01E{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"./high_quality/S01/E{i:02}*"
if os.path.isfile(quality_pattern):
Quality_Video = [quality_pattern]
else: