feat(stream): serve /stream from a debrid HTTPS link (hueco #2/2a)
The daemon can now stream a session straight from a server-resolved debrid direct URL instead of disk/torrent, delivering the "play instantáneo cache-fast" promise for cache-confirmed torrents the user never downloaded. - debridFileProvider: an io.ReadSeekCloser over HTTP Range — network-free Seek, lazy GET on Read, reopen-on-seek, a HEAD up front for the size, and a URL-derived name so the served Content-Type is video/mp4 (not octet-stream) when the web's name lacks an extension. - OnStreamSession branches on StreamSession.DirectURL before the filePath checks (no local path, no ffmpeg), builds the provider in a goroutine (HEAD off the sync loop) and marks the session ready. - Bump 0.10.0 -> 0.11.0 as the debrid-stream floor the web gates on. Validated e2e against a real AllDebrid account: a cached mp4 plays 1080p in Chrome through the agent, including the high-offset seek for a non-faststart file's moov atom. 2b (HLS-from-URL for mkv/HEVC) + 2c (cache-fast preference + mid-stream fallback) remain.
This commit is contained in:
parent
292d5923cf
commit
b8d2b90370
6 changed files with 573 additions and 3 deletions
|
|
@ -417,6 +417,15 @@ type StreamSession struct {
|
|||
// the raw file over /stream (HTTP Range, no ffmpeg) instead of
|
||||
// transcoding to HLS. See hueco #3 phase 3a in the roadmap.
|
||||
PlayMethod string `json:"playMethod,omitempty"`
|
||||
// DirectURL, when set, is an HTTPS link to the media resolved server-side
|
||||
// from the user's debrid account (hueco #2 / 2a). The source has no local
|
||||
// file: the daemon streams /stream from this URL via ranged GETs
|
||||
// (debridFileProvider) instead of from disk/torrent. Carries the "play
|
||||
// instantáneo cache-fast" promise — the web only sets it when the hash is
|
||||
// confirmed debrid-cached and the container is browser-native (mp4/m4v),
|
||||
// and gates it on an agent-version floor so older daemons never receive a
|
||||
// field they can't serve. Takes priority over FilePath when present.
|
||||
DirectURL string `json:"directUrl,omitempty"`
|
||||
}
|
||||
|
||||
// SyncResponse is returned by the server with all pending actions for the CLI.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue