feat(playback): stream-info popover in the player overlay (#1578)

This commit is contained in:
Lars Emig authored and GitHub committed 2026-09-10 21:33:41 +02:00
1 parent bad8a0991e
commit e76447975b
72 files changed
+4355 -163

No files matched your search

+15
View File
@@ -1090,6 +1090,21 @@ app as a real argument, so it is not an option.
external fallback only for clear transferable DASH; PWA capability and
KODIPROP DRM still suppress it. Details in
`docs/architecture/m3u-playlist-module.md` ("DASH + ClearKey Playback").
- Stream info popover: an `info` button in the top-right corner of the shared
controls overlay shows live stream data — resolution + aspect ratio, measured
frame rate, video/audio codec and bitrate, audio channels and sample rate,
container, buffer, and dropped frames. Rendered only when the engine reports
something (`capabilities.streamStats`), sampled once a second and only while
the popover is open. Web engines read the `<video>` element plus the active
HLS/Shaka/VHS rendition; embedded MPV gets the numbers from observed mpv
properties on the session snapshot (frame-copy engine only — the native-view
dock does not mount the shared controls). See
`docs/architecture/player-controls-contract.md` ("Stream info popover") and
`docs/architecture/embedded-mpv-native.md` ("Stream Stats Properties").
Web FPS excludes dropped frames and uses a fresh measurement window on open;
nominal FPS and aggregate rendition bitrate have separate rows. Unknown
video bitrate is never filled with aggregate bandwidth. MPV clears dimensions
on a new file and clears individual diagnostics on unavailable-property events.
- External players: MPV, VLC (via IPC to Electron backend)
- Display sleep during playback: `PlaybackKeepAwakeService`
(`apps/web/src/app/services/playback-keep-awake.service.ts`) watches every