Un identifiant de lecture est un jeton propre à une vidéo, valable pour une durée limitée et non réutilisable. Si l'identifiant expire ou est incorrect, il est impossible de récupérer l'URL de lecture. Cette méthode convient donc aux scénarios de lecture exigeant un niveau de sécurité élevé.
Notes d'utilisation
ApsaraVideo Player prend en charge la lecture via des identifiants de lecture. Les lecteurs tiers ne prennent pas en charge cette méthode.
Par défaut, un identifiant de lecture est valide pendant 100 secondes (3 000 secondes maximum). Il permet de récupérer l'URL de lecture d'une vidéo spécifique uniquement et ne peut ni être partagé ni être réutilisé. En cas d'expiration de l'identifiant, gérez la logique d'actualisation dans votre application.
La période de validité d'un identifiant de lecture diffère de celle d'une URL de lecture (si la fonction Signature d'URL est activée). Vous pouvez personnaliser cette dernière sans limite supérieure.
Si vous utilisez le service Alibaba Cloud Video Encryption (Private Encryption), les vidéos ne peuvent être lues qu'à l'aide du kit de développement logiciel (SDK) ApsaraVideo Player.
Paramètres de validité : AuthInfoTimeout par rapport à AuthTimeout
Deux paramètres de validité s'appliquent selon l'API appelée :
Lors de l'appel à l'API GetVideoPlayAuth pour obtenir un identifiant de lecture, le paramètre AuthInfoTimeout contrôle la période de validité.
Lors de l'appel à l'API GetPlayInfo pour obtenir une URL de lecture, le paramètre AuthTimeout contrôle la période de validité.
Ne confondez pas ces deux paramètres : AuthInfoTimeout régit la durée de validité de PlayAuth, tandis qu'AuthTimeout régit la durée d'accessibilité de l'URL de lecture générée.
authTimeout côté front-end par rapport à la validité côté serveur
Le paramètre authTimeout du SDK du lecteur (front-end) contrôle uniquement le comportement d'actualisation du cache local. Il ne remplace pas la période de validité renvoyée par le serveur.
Le champ ExpireTime dans PlayAuth constitue l'horodatage d'expiration faisant autorité et détermine le comportement réel de la lecture :
Si l'identifiant côté serveur a expiré (ExpireTime est dépassé), l'authentification échoue, quel que soit le paramètre authTimeout défini côté front-end.
Si l'identifiant côté serveur est toujours valide, la lecture peut se poursuivre même si le délai authTimeout côté front-end est écoulé, à condition que les nouvelles demandes d'identifiant aboutissent.
Mécanisme de renouvellement pour les vidéos longues
La période de validité maximale d'un identifiant de lecture est de 3 000 secondes. Pour les vidéos plus longues, actualisez PlayAuth 10 à 30 secondes avant l'expiration en utilisant les méthodes d'actualisation des identifiants du SDK du lecteur (par exemple, Aliplayer propose replayByVidAndPlayAuth ou loadByUrl). N'attendez pas le moment exact de l'expiration, car la latence réseau risque d'interrompre la lecture.
Stratégie de mise en cache pour une forte concurrence
L'API GetVideoPlayAuth impose une limite de 360 requêtes par seconde (QPS) par utilisateur. Dans les scénarios à forte concurrence, mettez en œuvre une stratégie de mise en cache côté serveur :
Mettez en cache PlayAuth et réutilisez-le pendant sa période de validité afin de réduire les appels API.
L'expiration de l'identifiant affecte uniquement la récupération de l'URL de lecture. Une fois l'URL de lecture obtenue, la lecture se poursuit même si l'identifiant expire.
Compatibilité des navigateurs
Si la lecture fonctionne dans Chrome mais échoue dans Edge, vérifiez d'abord la compatibilité du format d'encodage vidéo, puis validez l'identifiant de lecture.
Gestion des erreurs d'expiration des identifiants
Lorsque le client (par exemple, le SDK Android) signale une erreur « playauth is expired », ajoutez des écouteurs d'expiration des identifiants et une logique d'actualisation automatique dans votre application. Pour connaître les étapes d'intégration détaillées, consultez la documentation de configuration avancée du SDK de chaque plateforme.
Processus global
La section suivante explique comment obtenir un identifiant de lecture et lire une vidéo, en prenant comme exemple un nom de domaine accéléré par CDN.
Le client envoie un VideoId au serveur pour demander un identifiant de lecture.
Votre serveur appelle l'opération GetVideoPlayAuth à l'aide du SDK côté serveur pour obtenir l'identifiant de lecture.
Le service VOD renvoie l'identifiant de lecture au serveur.
Le serveur renvoie l'identifiant de lecture au client.
Le lecteur client demande une URL de lecture au service VOD en utilisant l'identifiant renvoyé.
Le service VOD renvoie l'URL de lecture au client.
Le client demande la ressource de lecture au nœud CDN en utilisant l'URL de lecture.
Si le nœud CDN ne dispose pas de la ressource ou si la ressource mise en cache a expiré, il récupère la ressource depuis le bucket OSS d'origine.
Le bucket OSS renvoie la ressource au nœud CDN, qui la met en cache.
Le nœud CDN délivre la ressource multimédia au client.
Étapes suivantes
Alibaba Cloud propose des SDK de lecteur pour Web, Android, iOS, Flutter et HarmonyOS, qui prennent tous en charge la lecture basée sur des identifiants. Sélectionnez la documentation correspondant à votre plateforme :
FAQ
Le SDK du lecteur Web prend-il en charge les jetons d'authentification JWT ?
Non. Le SDK du lecteur Web prend uniquement en charge la méthode de lecture VID + PlayAuth. Si vous rencontrez des échecs de lecture avec un JWT Auth généré localement, basculez vers la méthode PlayAuth standard.
Pourquoi GetPlayInfo renvoie-t-il une erreur indiquant que l'état de la vidéo n'est pas valide ou est en cours de révision ?
Une vidéo doit remplir les deux conditions suivantes pour obtenir des informations de lecture :
L'état principal (Status) est Normal.
L'état de l'audit (AuditStatus) est Normal.
Si l'état est UploadSucc ou si l'état de l'audit est Init, attendez que le transcodage soit terminé et que la révision soit validée. Vous pouvez utiliser l'API GetVideoInfo pour interroger le dernier état de la vidéo et vérifier vos paramètres d'audit globaux.
Pourquoi dois-je spécifier le format mp4 pour la lecture ?
Ce problème est généralement dû à des problèmes de compatibilité du format HLS dans les anciennes versions du SDK du lecteur. Mettez à jour vers la dernière version du SDK du lecteur ou effectuez un test avec le code de démonstration officiel.
Comment obtenir les identifiants de résolution vidéo (LD, HD, SD) sur Android ?
Les identifiants de résolution sont renvoyés par le serveur uniquement lors de l'utilisation de la méthode d'identification de lecture (VidSts ou VidAuth). Si vous utilisez directement la méthode de lecture URLSource, les identifiants de résolution ne seront pas disponibles.
La méthode VID + PlayAuth prend-elle en charge la lecture de ressources provenant de services de stockage cloud tiers ?
Non. La méthode VID + PlayAuth prend uniquement en charge les vidéos téléchargées dans la bibliothèque de ressources multimédias Alibaba Cloud VOD. Pour lire des ressources tierces, migrez-les ou téléchargez-les d'abord dans Alibaba Cloud VOD afin de générer un VID.