Skip to content

Référence des control parts ​

Partie de SABR dans l'extracteur. Le serveur peut placer des parts de contrôle entre les parts média. SabrResponseDecoder reconnaît leurs identifiants numériques et conserve soit les champs nécessaires à YoutubeSabrSession, soit un résumé structurel borné. Le code actuel ne définit pas une classe Java par control part.

Rythme et protection ​

NEXT_REQUEST_POLICY — id 35 ​

Le décodeur conserve la policy brute et lit son champ 4 comme backoff demandé en millisecondes. YoutubeSabrSession lit aussi le champ 7 comme cookie de lecture. Un backoff supérieur à 30 000 ms est rejeté ; un délai valide diffère le prochain requestOnce sans envoyer de HTTP.

STREAM_PROTECTION_STATUS — id 58 ​

#Champ
1statut de protection brut
2nombre maximal de retries fourni par le serveur

Le statut reste volontairement un entier brut. Le statut 2 est exposé comme attestation en attente ; le statut 3 comme attestation requise. L'appelant peut définir un jeton PO lié au contenu avec YoutubeSabrSession.setPoToken(...).

SABR_REDIRECT — id 43 ​

Le champ 1 est la nouvelle URL de streaming. La session n'accepte que les URL HTTPS sur googlevideo.com ou ses sous-domaines et limite les redirections à trois par session.

SABR_SEEK — id 45 ​

La part est conservée comme résumé structurel. L'extracteur actuel n'applique pas lui-même un seek initié par le serveur ; l'application décide comment reconstruire une YoutubeSabrRequest.

RELOAD_PLAYER_RESPONSE — id 46 ​

Le décodeur positionne reloadRequested. YoutubeSabrSession remonte alors une erreur de protocole ; récupérer une nouvelle réponse player et créer un nouveau YoutubeSabrInfo est une étape de récupération applicative.

PLAYBACK_START_POLICY — id 47 ​

Conservée comme résumé structurel. Elle ne modifie pas directement le résultat de requestOnce dans l'extracteur.

Contextes et métadonnées live ​

SABR_CONTEXT_UPDATE — id 57 ​

La session parse les champs dont elle a besoin :

#Champ
1type de contexte
3octets de valeur opaque
4envoi par défaut
5politique d'écriture

Les valeurs sont stockées par type. SABR_CONTEXT_SENDING_POLICY (id 59) ajoute, retire ou supprime des types via les champs 1, 2 et 3 ; les valeurs actives sont renvoyées dans les messages streamerContext suivants.

LIVE_METADATA — id 31 ​

La session consomme actuellement :

#Signification
3séquence du live edge
4temps du live edge en millisecondes
8flag DVR post-live

La réception de la part marque la session comme live. Les valeurs sont disponibles avec isLive(), getLiveHeadSequenceNumber(), getLiveHeadTimeMs() et isPostLiveDvr().

Contrôles de formats et de média ​

  • FORMAT_INITIALIZATION_METADATA (id 42) est décodée en SabrFormatInitializationMetadata et fournit les plages d'initialisation et d'index ;
  • MEDIA_HEADER, MEDIA et MEDIA_END (ids 20–22) sont assemblées par SabrMediaSegmentCollector, comme décrit dans Médias, segments et index ;
  • FORMAT_SELECTION_CONFIG (37), SELECTABLE_FORMATS (51), les parts onesie (10–12), contrôles de requête (52–56), hints cache/bande passante (48–50, 60–66) et SNACKBAR_MESSAGE (67) sont actuellement résumés pour le diagnostic.

SABR_ERROR — id 44 ​

Les champs 1 (type texte) et 2 (code numérique) sont rendus dans le résumé de réponse et font lever une erreur de protocole à la session.

Les parts inconnues ou malformées sont conservées dans des diagnostics bornés, afin que les médias valides de la même réponse passent tout de même les contrôles d'intégrité.

Retour à la vue d'ensemble.