Remove unused variables and redundant code.

Consider using more robust mapping between ffprobe, mkvmerge, and mediainfo tracks (by language, title, or other tags if possible).
This commit is contained in:
2025-07-17 09:54:49 +02:00
parent b53e79e005
commit 583838c4f0

View File

@@ -201,31 +201,26 @@ def main(no_downmix=False):
audio_tracks_to_remux = [] audio_tracks_to_remux = []
audio_streams = [s for s in ffprobe_info.get("streams", []) if s.get("codec_type") == "audio"] audio_streams = [s for s in ffprobe_info.get("streams", []) if s.get("codec_type") == "audio"]
# Build mkvmerge track mapping by track ID # Build mkvmerge audio track list
mkv_audio_tracks = {t["id"]: t for t in mkv_info.get("tracks", []) if t.get("type") == "audio"} mkv_audio_tracks_list = [t for t in mkv_info.get("tracks", []) if t.get("type") == "audio"]
# Build mediainfo track mapping by StreamOrder # Build mediainfo track mapping by StreamOrder
media_tracks_data = media_info.get("media", {}).get("track", []) media_tracks_data = media_info.get("media", {}).get("track", [])
mediainfo_audio_tracks = {int(t.get("StreamOrder", -1)): t for t in media_tracks_data if t.get("@type") == "Audio"} mediainfo_audio_tracks = {int(t.get("StreamOrder", -1)): t for t in media_tracks_data if t.get("@type") == "Audio"}
for stream in audio_streams: for audio_idx, stream in enumerate(audio_streams):
# Extract these values once per stream for clarity
stream_index = stream["index"]
stream_index = stream["index"] stream_index = stream["index"]
codec = stream.get("codec_name") codec = stream.get("codec_name")
channels = stream.get("channels", 2) channels = stream.get("channels", 2)
language = stream.get("tags", {}).get("language", "und") language = stream.get("tags", {}).get("language", "und")
mkv_track = mkv_info.get("tracks", [])[stream_index] if stream_index < len(mkv_info.get("tracks", [])) else {} mkv_track = mkv_audio_tracks_list[audio_idx] if audio_idx < len(mkv_audio_tracks_list) else {}
track_id = mkv_track.get("id", -1) track_id = mkv_track.get("id", -1)
track_title = mkv_track.get("properties", {}).get("track_name", "") track_title = mkv_track.get("properties", {}).get("track_name", "")
track_delay = 0 track_delay = 0
media_tracks_data = media_info.get("media", {}).get("track", []) audio_track_info = mediainfo_audio_tracks.get(stream_index)
audio_track_info = next((t for t in media_tracks_data if t.get("@type") == "Audio" and int(t.get("StreamOrder", -1)) == stream_index), None)
delay_raw = audio_track_info.get("Video_Delay") if audio_track_info else None delay_raw = audio_track_info.get("Video_Delay") if audio_track_info else None
track_delay = 0
if delay_raw is not None: if delay_raw is not None:
try: try:
# If the value is a float < 1, it's seconds, so convert to ms.
delay_val = float(delay_raw) delay_val = float(delay_raw)
if delay_val < 1: if delay_val < 1:
track_delay = int(round(delay_val * 1000)) track_delay = int(round(delay_val * 1000))
@@ -238,7 +233,6 @@ def main(no_downmix=False):
if codec in REMUX_CODECS: if codec in REMUX_CODECS:
audio_tracks_to_remux.append(str(track_id)) audio_tracks_to_remux.append(str(track_id))
else: else:
# Convert any codec that is not in REMUX_CODECS
opus_file = convert_audio_track( opus_file = convert_audio_track(
stream_index, channels, language, audio_temp_dir, str(input_file_abs), not no_downmix stream_index, channels, language, audio_temp_dir, str(input_file_abs), not no_downmix
) )