Fix segmented vtt merging code

This got 'broken' after moving to my fork of pymp4 because my fork has commits by TrueDread that add support for the vttc, payl, and sttg boxes, therefore they no longer contain `data` fields but rather specifically parsed fields. I also no longer need to parse the data stream of vttc boxes, as they are already parsed as `children`.
This commit is contained in:
rlaphoenix 2023-04-04 20:15:18 +01:00
parent 62965f8e21
commit 96aa7c1e0a
1 changed files with 3 additions and 4 deletions

View File

@ -315,17 +315,16 @@ class Subtitle(Track):
layout: Optional[Layout] = None layout: Optional[Layout] = None
nodes: list[CaptionNode] = [] nodes: list[CaptionNode] = []
for cue_box in MP4.parse_stream(BytesIO(vttc_box.data)): for cue_box in vttc_box.children:
if cue_box.type == b"vsid": if cue_box.type == b"vsid":
# this is a V(?) Source ID box, we don't care # this is a V(?) Source ID box, we don't care
continue continue
cue_data = cue_box.data.decode("utf8")
if cue_box.type == b"sttg": if cue_box.type == b"sttg":
layout = Layout(webvtt_positioning=cue_data) layout = Layout(webvtt_positioning=cue_box.settings)
elif cue_box.type == b"payl": elif cue_box.type == b"payl":
nodes.extend([ nodes.extend([
node node
for line in cue_data.split("\n") for line in cue_box.cue_text.split("\n")
for node in [ for node in [
CaptionNode.create_text(WebVTTReader()._decode(line)), CaptionNode.create_text(WebVTTReader()._decode(line)),
CaptionNode.create_break() CaptionNode.create_break()