DASH HD playback — WIP behind TORTTUBE_DASH=1 + upstream notes
Sidecar resolve_dash op shipped — returns rustypipe's full video_only_streams + audio_streams (16+ representations for NGGYU, from 360p H.264 through 4K AV1). Addon _build_dash_mpd assembles a valid on-demand MPEG-DASH manifest filtered to H.264 ≤1080p + best AAC audio. Two unblocked-by-WIP issues surfaced during integration: - inputstream.adaptive's libcurl can't open file:// URLs (logged in docs/upstream.md as an enhancement-target). - Rapid Player.Open retries can trigger Kodi's 'two concurrent busydialogs' fatal exit; need lifecycle hardening before re-enabling. Pivoted to localhost HTTP-server serving (ThreadingHTTPServer on a port-0 socket, MPD bytes captured in a per-instance handler subclass). Lifecycle: server.shutdown() runs in a finally block after the SponsorBlockMonitor watcher exits. Works in isolation but Kodi crashed under rapid retry conditions — needs more testing. For v0.0.5: DASH path is gated behind TORTTUBE_DASH=1 env var; default falls through to the stable yt-dlp progressive 360p path that's been verified live. M7 milestone added to track the remaining work; PRs to inputstream.adaptive + Kodi candidates logged in docs/upstream.md.
This commit is contained in:
parent
6d07ed16fa
commit
d0316ba311
6 changed files with 329 additions and 14 deletions
|
|
@ -71,8 +71,25 @@
|
|||
picked format 18, 360p H.264+AAC progressive)
|
||||
- [ ] armv7 build for older Pis (deferred — current TV is aarch64-capable
|
||||
and my static sidecar runs on it even though userspace is armhf)
|
||||
- [ ] 720p+ playback (deferred to M5+) — itag 22 (720p progressive) is
|
||||
deprecated by YouTube; higher quality needs DASH manifest generation
|
||||
- [ ] 720p+ playback (DASH WIP — see "M7 — DASH/HD" below) — itag 22 (720p
|
||||
progressive) is deprecated by YouTube; higher quality needs DASH
|
||||
manifest generation. Code path exists, gated behind `TORTTUBE_DASH=1`.
|
||||
|
||||
## M7 — DASH / HD playback [WIP]
|
||||
|
||||
- [x] sidecar `resolve_dash` op returns rustypipe's full
|
||||
`video_only_streams` + `audio_streams` arrays (16+ representations)
|
||||
- [x] addon `_build_dash_mpd` constructs valid on-demand MPD with H.264
|
||||
video reps from 360p → 1080p + best AAC audio rep (XML-escaped URLs,
|
||||
proper `SegmentBase indexRange` + `Initialization range`)
|
||||
- [ ] **serve MPD over localhost HTTP** — inputstream.adaptive's libcurl
|
||||
can't open `file://` URLs. ThreadingHTTPServer + Player monitor
|
||||
lifecycle is sketched but caused Kodi's "two concurrent busydialogs"
|
||||
fatal during rapid retries. Needs more work on lifecycle + retry
|
||||
backoff before re-enabling.
|
||||
- [ ] handle session-cookie / poToken inheritance — googlevideo URLs may
|
||||
need the same client signature across MPD + segment fetches
|
||||
- [ ] graceful fallback to progressive if MPD load fails mid-playback
|
||||
|
||||
## Upstream PR work (parallel lane — every bug evaluated for "fix it upstream?")
|
||||
|
||||
|
|
|
|||
Reference in a new issue