Compare commits
No commits in common. "292d5923cfdbdb220ce8b5c62d37cf80410ba43d" and "89236f13b5d8cb742df57bef1dfb1c7c926fbfb9" have entirely different histories.
292d5923cf
...
89236f13b5
2 changed files with 9 additions and 22 deletions
|
|
@ -49,13 +49,13 @@ torrent. La promesa "play instantáneo cache-fast" no ocurre. Falta: source debr
|
||||||
en el path de streaming + cache-availability + **fallback torrent↔debrid mid-stream**.
|
en el path de streaming + cache-availability + **fallback torrent↔debrid mid-stream**.
|
||||||
Diseño por fases (2a direct-play / 2b HLS-desde-URL / 2c fallback) en el estado abajo.
|
Diseño por fases (2a direct-play / 2b HLS-desde-URL / 2c fallback) en el estado abajo.
|
||||||
|
|
||||||
### Hueco #3 — Device-profile + direct-play + ABR ✅ CERRADO (2026-05-31) / ver estado abajo
|
### Hueco #3 — Device-profile + direct-play + ABR 🔵 EN CURSO (ver estado abajo)
|
||||||
El path HLS re-encodaba todo (incluso mp4 h264/aac ya compatible). `DecideAction`
|
El path HLS **siempre re-encoda** (incluso mp4 h264/aac ya compatible). `DecideAction`
|
||||||
muerto. Sin negociación por capacidades. Sin adaptación de calidad.
|
(passthrough/remux) existe pero muerto en el path browser. Sin negociación por
|
||||||
|
capacidades del dispositivo. Sin ABR multi-bitrate.
|
||||||
Diseño por fases (3a direct-play / 3b remux fMP4 / 3c capability-negotiation / 3d ABR)
|
Diseño por fases (3a direct-play / 3b remux fMP4 / 3c capability-negotiation / 3d ABR)
|
||||||
en el estado abajo. **3a + 3b + 3c CERRADAS** (smoke e2e, incl. HEVC en iPhone Safari
|
en el estado abajo. **Fases 3a + 3b + 3c CERRADAS** (smoke e2e, incl. HEVC en iPhone
|
||||||
real). **3d resuelto como 3d-lite (auto-downshift)** — ABR multi-rendition real
|
Safari real); 3d (ABR) pendiente, baja prioridad.
|
||||||
descartada (N× CPU inviable single-viewer; no aplica a paths copy). Hueco COMPLETO.
|
|
||||||
|
|
||||||
### Hueco #4 — Pre-transcode (transcode-on-download) 🔵 DISEÑADO (ver estado abajo)
|
### Hueco #4 — Pre-transcode (transcode-on-download) 🔵 DISEÑADO (ver estado abajo)
|
||||||
Al completar una descarga/import, transcodificar/remuxar en background para que el
|
Al completar una descarga/import, transcodificar/remuxar en background para que el
|
||||||
|
|
@ -324,17 +324,9 @@ el orden de STREAMING (no el de descarga) prefiera debrid.
|
||||||
nativo → passthrough HEVC en vez de transcode HEVC→h264. Reemplaza el heurístico
|
nativo → passthrough HEVC en vez de transcode HEVC→h264. Reemplaza el heurístico
|
||||||
UA-burdo de `resolveAutoQuality`. Web+CLI.
|
UA-burdo de `resolveAutoQuality`. Web+CLI.
|
||||||
|
|
||||||
- **Fase 3d — ABR.** ABR multi-rendition real **DESCARTADA**: N pipelines ffmpeg
|
- **Fase 3d — ABR multi-bitrate.** Ladder de renditions en el master playlist +
|
||||||
simultáneos = N× CPU para 1 espectador (mata NAS/Pi), y no aplica a los paths
|
N pipelines ffmpeg / segmentos por rendition. Alto esfuerzo, baja prioridad;
|
||||||
copy (direct/remux = 1 bitrate). Resuelto como **3d-lite (auto-downshift)**:
|
el modelo single-viewer reduce su valor. Último.
|
||||||
el player ya tenía sondeo de ancho de banda + recomendación + selector manual;
|
|
||||||
3d-lite automatiza la bajada — buffering sostenido 10s → siguiente calidad menor
|
|
||||||
(nueva sesión a bitrate menor), progresivo hasta 480p. Reusa
|
|
||||||
`recommendLowerQuality`/`setQuality`. `setQuality(.., {persist:false})` para no
|
|
||||||
pisar la preferencia del usuario por un stall transitorio. **CERRADO (web 8bf8e416)**;
|
|
||||||
smoke en Chrome (Slow-3G + seek → consola `auto-downshift 720p → 480p`, nueva
|
|
||||||
sesión reproduce). Hallazgo: este Chrome reproduce HLS **nativo** (como Safari);
|
|
||||||
hls.js es fallback.
|
|
||||||
|
|
||||||
**Ficheros a tocar (3a):** CLI `internal/agent/types.go` (+PlayMethod),
|
**Ficheros a tocar (3a):** CLI `internal/agent/types.go` (+PlayMethod),
|
||||||
`internal/cmd/daemon.go` (branch SetFile vs HLS). WEB
|
`internal/cmd/daemon.go` (branch SetFile vs HLS). WEB
|
||||||
|
|
|
||||||
|
|
@ -36,11 +36,6 @@ var defaultCORSAllowedOrigins = []string{
|
||||||
"https://staging.torrentclaw.com",
|
"https://staging.torrentclaw.com",
|
||||||
"https://torrentclaw.to",
|
"https://torrentclaw.to",
|
||||||
"https://www.torrentclaw.to",
|
"https://www.torrentclaw.to",
|
||||||
// unarr brand (separate deployment). The web player + agent endpoints run
|
|
||||||
// under unarr.app; without these the browser drops every /hls + /stream
|
|
||||||
// response (no Access-Control-Allow-Origin) and playback fails on unarr.
|
|
||||||
"https://unarr.app",
|
|
||||||
"https://www.unarr.app",
|
|
||||||
// Tor mirror — Tor Browser sends `Origin: http://<addr>.onion` (plain
|
// Tor mirror — Tor Browser sends `Origin: http://<addr>.onion` (plain
|
||||||
// http, no port). Mirror address is the BUILT_IN_ONION constant from
|
// http, no port). Mirror address is the BUILT_IN_ONION constant from
|
||||||
// torrentclaw-web/src/lib/mirrors-config.ts; rotates rarely, kept in
|
// torrentclaw-web/src/lib/mirrors-config.ts; rotates rarely, kept in
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue