This commit is contained in:
Lesmiscore 2022-06-18 22:49:44 +09:00
parent 099db78935
commit cc17902c09
No known key found for this signature in database
GPG Key ID: 0EC2B52CF86236FF
1 changed files with 14 additions and 15 deletions

View File

@ -24,22 +24,7 @@ class MP4FixupTimestampPP(PostProcessor):
""" returns (baseMediaDecodeTime offset, sample duration cutoff) """ """ returns (baseMediaDecodeTime offset, sample duration cutoff) """
smallest_bmdt, known_sdur = inf, set() smallest_bmdt, known_sdur = inf, set()
with open(filepath, 'rb') as r: with open(filepath, 'rb') as r:
moov_over, in_secondary_moov = False, False
for btype, content in parse_mp4_boxes(r): 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': if btype == 'tfdt':
version, _ = unpack_ver_flags(content[0:4]) version, _ = unpack_ver_flags(content[0:4])
# baseMediaDecodeTime always comes to the first # baseMediaDecodeTime always comes to the first
@ -79,7 +64,21 @@ class MP4FixupTimestampPP(PostProcessor):
def modify_mp4(self, src, dst, bmdt_offset, sdur_cutoff): def modify_mp4(self, src, dst, bmdt_offset, sdur_cutoff):
with open(src, 'rb') as r, open(dst, 'wb') as w: with open(src, 'rb') as r, open(dst, 'wb') as w:
def converter(): def converter():
moov_over, in_secondary_moov = False, False
for btype, content in parse_mp4_boxes(r): 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': if btype == 'tfdt':
version, _ = unpack_ver_flags(content[0:4]) version, _ = unpack_ver_flags(content[0:4])
if version == 0: if version == 0: