forked from DRMTalks/devine
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:
parent
62965f8e21
commit
96aa7c1e0a
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue