Skip to content

Rangos almacenados y seeks ​

Parte de SABR en el extractor. El PipePipeExtractor actual no posee buffer de reproducción ni YoutubeSabrStreamState; esas políticas viven en la capa de aplicación que construye YoutubeSabrRequest.

Lo que proporciona el extractor ​

YoutubeSabrRequest.Track puede llevar dos datos de estado controlados por el llamador:

  • un YoutubeSabrFormatTimeline, analizado desde los datos de inicialización;
  • bufferedThrough, la última secuencia contigua que el llamador quiere declarar.

Cuando ambos están presentes y bufferedThrough > 0, YoutubeSabrRequestHelper escribe un bufferedRange desde el tiempo cero hasta el final del timeline de esa secuencia. Los índices empiezan en uno y la timescale es 1000. Sin timeline no se emite rango para esa pista.

Es una política conservadora: no se debe anunciar un rango que pase un hueco. Declarar una secuencia posterior mientras falta un segmento anterior puede hacer que el servidor lo omita y dejar el lector bloqueado.

Seeks ​

Para un seek, la aplicación puede obtener la secuencia con YoutubeSabrFormatTimeline.getSequenceAt(timeMs), gestionar su propia caché y crear un nuevo YoutubeSabrRequest.playback con el tiempo objetivo y rangos contiguos honestos. SABR no ofrece una API de caché del cliente en el extractor.

La búsqueda devuelve la secuencia 1 para tiempos no positivos, la primera entrada cuyo final queda después del tiempo solicitado o una secuencia posterior a la última si el tiempo supera el índice. Los índices MP4 y WebM se analizan de los bytes de inicialización; espera un timeline válido antes de declarar una cobertura precisa.

Siguiente: El driver de sesión.

Creado por Priveetee para el proyecto de código abierto PipePipe