From 099db789358bfad6792af91a2d937b3f7ecce134 Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Sat, 11 Jun 2022 16:52:42 +0900 Subject: [PATCH] remove duplicated MOOV bpces --- yt_dlp/postprocessor/mp4direct.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/yt_dlp/postprocessor/mp4direct.py b/yt_dlp/postprocessor/mp4direct.py index b52a9c6cb..90b5500bc 100644 --- a/yt_dlp/postprocessor/mp4direct.py +++ b/yt_dlp/postprocessor/mp4direct.py @@ -24,7 +24,22 @@ def analyze_mp4(self, filepath): """ returns (baseMediaDecodeTime offset, sample duration cutoff) """ smallest_bmdt, known_sdur = inf, set() with open(filepath, 'rb') as r: + moov_over, in_secondary_moov = False, False for btype, content in parse_mp4_boxes(r): + # skip duplicate MOOV boxes + if btype == 'moov': + if moov_over: + in_secondary_moov = True + continue + elif btype is None and content == 'moov': + in_secondary_moov = False + + if moov_over: + continue + moov_over = True + elif in_secondary_moov: + continue + if btype == 'tfdt': version, _ = unpack_ver_flags(content[0:4]) # baseMediaDecodeTime always comes to the first