Skip to content

SABR extractor integration (follow-up to #66) #67

@Priveetee

Description

@Priveetee

Splitting this out of #66 (which kinda turned into the research log) to track the actual extractor implementation.

Docs (how SABR works end to end: protocol, UMP, attestation): https://priveetee.github.io/Docs-PipePipe/developer-guide/introduction

What's in it: the full SABR stack on the extractor side, gated behind a new DeliveryMethod.SABR so it only kicks in on SABR-only videos and stays out of the way otherwise:

  • UMP reader + proto codec
  • VideoPlaybackAbrRequest builder + client profile
  • session / state (request number, playback cookie, buffered ranges, player time)
  • UMP response decoder (media headers, init metadata, next-request policy, stream protection status)
  • format selection by what the device can actually decode in hardware

Status: runs end to end with the client on a real device (Pixel 8). Token, download and decode all work. Memory is bounded (no more OOM on long 4K), and the session survives transient backoff interrupts.

Known limit: sustained playback is currently gated by a client-side player issue (tracked separately on the client repo: InfinityLoop1308/PipePipeClient#42), not by the extractor or the protocol. The extractor side is player-agnostic, so it has no media3 dependency.

PoC PR: #68

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions