Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fix Low-Latency HLS VTT subtitle part loading#7626

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
robwalch wants to merge3 commits intomaster
base:master
Choose a base branch
Loading
frombugfix/low-latency-webvtt-part-loading

Conversation

@robwalch
Copy link
Collaborator

@robwalchrobwalch commentedNov 5, 2025
edited
Loading

This PR will...

  • Fix LL-HLS VTT subtitle part loading
  • Fix fragment selection when live subtitle playlist does not overlap with position
  • Fix subtitle selection in asset players while primary is detached
  • Remove dead code in VTT parser, and remove redundant code in subtitle-stream-controller

Why is this Pull Request needed?

These changes unify subtitle segment finding with audio and video, fixing issues with subtitle part and segment loading.

Are there any points in the code the reviewer needs to double check?

Low-latency live with VTT partshttps://llhls-demo.ovenmediaengine.com/app/stream/llhls.m3u8

Resolves issues:

Checklist

  • changes have been done against master branch, and PR does not conflict
  • new unit / functional tests have been added (whenever applicable)
  • API or design changes are documented in API.md

hongjun-bae reacted with thumbs up emoji
Fix fragment selection when live subtitle playlist does not overlap with position (#7557)Fix subtitle selection in asset players while primary is detached
Copy link
Collaborator

@hongjun-baehongjun-bae left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

This PR helps address theissue related to the previoustrack=undefined setting and the lenient subtitle controller.

);
if(!foundFrag){
this.warn('Subtitle playlist not aligned with playback');
track.details=undefined;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

The logic for streaming subtitles in LL-HLS has become much more lenient 👍

Copy link
CollaboratorAuthor

@robwalchrobwalchNov 6, 2025
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Additional changes in#7482 will help to ensure proper playlist alignment. When combined with these changes, audio and subtitle segment loading will follow more of the same logic.

hongjun-bae reacted with eyes emoji
}
if(this.waitForLive(track)){
const{ currentTrackId, levels}=this;
consttrack=levels?.[currentTrackId];
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Before there was a check to see if track is undefined, now it's removed here. I believe this may cause issues. We may need to keep what was here previously:
if (!track || !levels.length || !track.details) { return; }

Copy link
CollaboratorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

We're covered bytrack?.details and!trackDetails. No details, no track.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Got it. that's true that the original code had that:!track.details

{
privatecurrentTrackId:number=-1;
privatetracksBuffered:Array<TimeRange[]>=[];
privatetracksBuffered:Array<TimeRange[]|undefined>=[];
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I don't see anywhere where we are appending an undefined object to tracksBuffered? Do we suspect we need this?

Copy link
CollaboratorAuthor

@robwalchrobwalchNov 6, 2025
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

We don't appendundefined values, but we do not usenoUncheckedIndexedAccess either. When using (@typescript-eslint/)no-unnecessary-condition (I use this offline, but not in the project proper), typing this way helps by signaling that the result totracksBuffered[<missing-key-or-index>] may be undefined. Yes, it is bad typing, but simpler safety. I'm open to suggestions - short and long term.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Got it, I think this is fine for now. And agree maybe something to look into in the future.

@hongjun-baehongjun-bae mentioned this pull requestNov 12, 2025
5 tasks
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

2 more reviewers

@krseagerkrseagerkrseager approved these changes

@hongjun-baehongjun-baehongjun-bae approved these changes

Reviewers whose approvals may not affect merge requirements

At least 1 approving review is required to merge this pull request.

Assignees

No one assigned

Projects

Status: In progress

Milestone

1.7.0

4 participants

@robwalch@krseager@hongjun-bae

[8]ページ先頭

©2009-2025 Movatter.jp