Files
iptvnator/libs/ui/playback/src/lib/html-video-player/html-video-player.component.html
T
4grayandClaude Opus 5.5 3f763310e2 feat(playback): draw catch-up programmes as seek-bar segments
Catch-up / timeshift playback of a live channel now passes the EPG
programmes overlapping its archive window to the shared player controls
as timeline segments, relative to the playback start.

- buildCatchupTimelineSegments (ui/playback) clips programmes to the
  window: Xtream requests exactly [start, stop] of the programme, M3U
  runs from utc to lutc (getM3uCatchupWindowEndSeconds in m3u-utils).
- timelineSegments is plumbed like mediaTitle: WebPlayerViewComponent ->
  the four engine hosts -> app-player-controls.
- Producers: Xtream live layout, unified Favorites/Recent live tab
  (Xtream and M3U), M3U playlist player. Stalker has no archive playback.
- Unit specs per host, helper specs, Electron E2E for Xtream catch-up.
- Contract doc updated; feature release note supersedes the internal
  timeline-segments model note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 09:01:15 +02:00

30 lines
1015 B
HTML

<div #playerRoot class="html-video-player-shell">
<video
#videoPlayer
id="video-player"
autoplay
[controls]="!sharedControls"
></video>
@if (sharedControls) {
<app-player-controls
[controller]="controlsAdapter"
[playerSurface]="playerRoot"
[fullscreenTarget]="fullscreenTarget()"
[mediaTitle]="mediaTitle()"
[upNext]="upNext()"
[timelineSegments]="timelineSegments()"
[showControls]="interactionEnabled()"
[shortcutsEnabled]="interactionEnabled()"
(previousEpisodeRequested)="previousEpisodeRequested.emit()"
(nextEpisodeRequested)="nextEpisodeRequested.emit()"
/>
} @else {
<app-series-playback-navigation-controls
[navigation]="seriesNavigation"
(previousEpisodeRequested)="previousEpisodeRequested.emit()"
(nextEpisodeRequested)="nextEpisodeRequested.emit()"
/>
}
</div>