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:
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user