ApsaraVideo VOD et ApsaraVideo Live prennent en charge plusieurs méthodes de chiffrement vidéo. Cette rubrique explique comment utiliser ApsaraVideo Player SDK pour lire des vidéos chiffrées avec le chiffrement propriétaire d'Alibaba Cloud, le chiffrement standard HLS et le chiffrement DRM.
Présentation du chiffrement vidéo
ApsaraVideo VOD propose un mécanisme complet de sécurité des contenus. Celui-ci comprend le contrôle d'accès, la signature d'URL, l'authentification à distance, le chiffrement vidéo et le téléchargement sécurisé.
La rubrique Présentation détaille l'ensemble des politiques de sécurité disponibles. Le tableau suivant compare les trois méthodes de chiffrement vidéo.
Politique de sécurité | Méthode | Avantage | Niveau de sécurité | Complexité de déploiement |
Chiffrement vidéo | Cryptographie propriétaire d'Alibaba Cloud | ApsaraVideo VOD s'appuie sur un algorithme de cryptographie propriétaire pour offrir une solution de chiffrement vidéo intégrée entre le cloud et les terminaux. La sécurité des liaisons de transmission est ainsi garantie. | Élevé | Relativement faible. Il suffit d'appliquer quelques configurations simples et d'intégrer ApsaraVideo Player SDK. |
Chiffrement HTTP Live Streaming (HLS) | Le chiffrement HLS utilise AES-128 pour chiffrer le contenu vidéo et fonctionne avec tous les lecteurs compatible HLS. Les clés restent toutefois vulnérables au vol. | Élevé | Élevée. Vous devez déployer un service de gestion des clés ainsi qu'un service d'émission de jetons, tout en garantissant la sécurité des liaisons de transmission. | |
DRM commercial | Cette méthode prend nativement en charge les systèmes DRM commerciaux tels qu'Apple FairPlay et Google Widevine. Elle offre un niveau de sécurité élevé et répond aux exigences de la plupart des détenteurs de droits d'auteur. | Élevé | Élevée. La facturation dépend du nombre d'appels de licences (pour les DRM tiers, reportez-vous aux normes de facturation applicables). Seule l'intégration d'ApsaraVideo Player SDK est nécessaire. |
Compatibilité d'ApsaraVideo Player SDK
Avant d'utiliser ApsaraVideo Player SDK for Web pour lire des vidéos chiffrées, vérifiez la compatibilité des navigateurs et la compatibilité des fonctionnalités. ApsaraVideo Player SDK for Web peut lire des vidéos chiffrées avec la cryptographie propriétaire d'Alibaba Cloud sur les principaux navigateurs mobiles. Dans le tableau ci-dessous, ✔️ indique une prise en charge et ❌ une absence de prise en charge.
Pour garantir cette compatibilité, téléchargez la dernière version d'ApsaraVideo Player SDK depuis la page Présentation du SDK.
Remarque : HLS utilise le format M3U8.
Client | Méthode de lecture | Cryptographie propriétaire (HLS) | Cryptographie basée sur licence (HLS) | Cryptographie basée sur licence (MP4) | Cryptographie propriétaire (FLV en direct) | Chiffrement HLS | DRM Alibaba Cloud | DRM tiers |
Web | Lecture basée sur UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
Lecture basée sur VidAuth | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
Lecture basée sur VidSts | ✔️ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ | |
Diffusion en direct basée sur UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | |
Diffusion en direct basée sur LiveStsSource | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | |
Natif (iOS/Android/Flutter/Harmony) Natif (iOS/Android/Flutter) | Lecture basée sur UrlSource | ✔️ | ✔️ Nécessite ApsaraVideo Player SDK v6.17.0 ou version ultérieure. | ✔️ Nécessite ApsaraVideo Player SDK v6.8.0 ou version ultérieure. | ❌ | ✔️ | ❌ | ✔️ Nécessite ApsaraVideo Player SDK v7.8.0 ou version ultérieure. Non pris en charge sur Flutter. |
Lecture basée sur VidAuth | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ | |
Lecture basée sur VidSts | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ Non pris en charge sur Flutter. | ❌ | |
Diffusion en direct basée sur UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ Nécessite ApsaraVideo Player SDK v7.8.0 ou version ultérieure. Non pris en charge sur Flutter. | |
Diffusion en direct basée sur LiveStsSource | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ Non pris en charge sur Flutter. | ❌ |
Présentation du chiffrement
Chiffrement vidéo Alibaba Cloud (chiffrement privé)
Le chiffrement vidéo Alibaba Cloud (chiffrement privé) chiffre les données vidéo afin qu'elles restent chiffrées même après leur téléchargement. Cette approche empêche toute redistribution non autorisée ainsi que le hotlinking. Chiffrement vidéo Alibaba Cloud (chiffrement privé).
Le SDK Player d'Alibaba Cloud prend en charge le déchiffrement et les interactions côté serveur. Il vous suffit de configurer le transcodage chiffré et d'intégrer le SDK.
Le chiffrement vidéo Alibaba Cloud (chiffrement privé) est gratuit. Toutefois, le chiffrement nécessite un transcodage multimédia, qui génère des frais. Facturation du transcodage multimédia.
Configurer le chiffrement privé
Pour configurer le chiffrement vidéo Alibaba Cloud, suivez le guide pratique.
Limites
Le chiffrement vidéo Alibaba Cloud (chiffrement privé) prend en charge le chiffrement des vidéos aux formats HLS, FLV et MP4. La lecture de ces vidéos s'effectue exclusivement avec Alibaba Cloud Player. Les clients web ne permettent la lecture qu'en HLS, tandis que les clients natifs gèrent l'ensemble de ces formats.
Chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur licence)
Le chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur licence) s'appuie sur le chiffrement privé et permet une lecture directe depuis l'URL de la vidéo chiffrée, ce qui accélère le démarrage. Cette solution convient particulièrement aux scénarios de vidéos courtes et de mini-séries.
Le chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur licence) est gratuit. Cependant, le chiffrement requiert un transcodage multimédia, qui entraîne des frais. Facturation du transcodage multimédia.
Configurer le chiffrement privé basé sur licence
Pour configurer le chiffrement vidéo Alibaba Cloud, suivez le guide pratique.
Limites
Le chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur licence) prend en charge le chiffrement des vidéos aux formats HLS et MP4. Seul Alibaba Cloud Player permet de lire ces vidéos chiffrées.
Chiffrement standard HLS
Le chiffrement standard HLS utilise AES-128 pour chiffrer le contenu vidéo. Il est compatible avec tous les lecteurs HLS, y compris ceux développés en interne ou open source. Sa mise en œuvre reste toutefois plus complexe et son niveau de sécurité inférieur à celui des méthodes propriétaires. Chiffrement standard HLS.
Le chiffrement standard HLS est gratuit. Néanmoins, le chiffrement exige un transcodage multimédia, qui engendre des frais. Facturation du transcodage multimédia.
Configurer le chiffrement standard HLS
Pour configurer le chiffrement standard HLS, suivez le guide d'intégration.
Limites
Le chiffrement standard HLS fonctionne avec différents lecteurs HLS. Cette rubrique prend Alibaba Cloud Player comme exemple. Ce dernier prend en charge la transmission de jetons : le CDN ajuste dynamiquement l'URI de déchiffrement dans le fichier manifeste HLS en y ajoutant un jeton utilisateur que votre application peut vérifier.
Chiffrement DRM Alibaba Cloud
ApsaraVideo VOD prend en charge le chiffrement DRM (Digital Rights Management) conforme aux standards du secteur, via les systèmes Widevine et FairPlay. Il offre ainsi une solution complète pour gérer les vidéos protégées par des droits d'auteur. Chiffrement DRM.
Le chiffrement DRM s'applique lors du transcodage (des frais de transcodage multimédia s'appliquent). Des frais de licence DRM sont également facturés lorsqu'un client demande une licence de lecture. Facturation du DRM.
Configurer le chiffrement DRM
Activez cette fonctionnalité sur les consoles ApsaraVideo Live et ApsaraVideo VOD : Configurer le chiffrement DRM pour ApsaraVideo Live et Configurer le chiffrement DRM pour ApsaraVideo VOD.
Limites
Actuellement, seul Alibaba Cloud Player permet de lire les vidéos chiffrées par DRM.
Chiffrement DRM tiers
ApsaraVideo VOD prend en charge le chiffrement DRM tiers. Il permet ainsi de mettre en place un flux de travail de bout en bout, allant de la production vidéo dans ApsaraVideo for Media Processing jusqu'à la lecture avec le SDK Player d'Alibaba Cloud, en passant par le chiffrement DRM tiers.
Le chiffrement DRM s'applique lors du transcodage (des frais de transcodage multimédia s'appliquent). Des frais de licence DRM sont également facturés lorsqu'un client demande une licence de lecture. Facturation du DRM.
Configurer le chiffrement DRM
Activez cette fonctionnalité sur la console ApsaraVideo for Media Processing. Packaging en direct et Packaging VOD.
Client web
-
Avant d'utiliser le SDK ApsaraVideo Player pour Web, vérifiez la compatibilité des navigateurs avec le chiffrement propriétaire d'Alibaba Cloud.
Le mode H5 fonctionne aussi bien sur les navigateurs de bureau que mobiles. Prise en charge des fonctionnalités.
Pour des raisons de sécurité, le chiffrement propriétaire d'Alibaba Cloud interdit le débogage avec de véritables vidéos chiffrées.
Procédure
Intégrez le lecteur web à votre page web.
Suivez le guide de démarrage rapide pour importer le SDK ApsaraVideo Player pour Web dans votre page.
-
Sélectionnez une méthode de chiffrement et lancez la lecture.
Le code suivant illustre l'intégration du lecteur.
Chiffrement propriétaire Alibaba Cloud
VOD (VidAuth)
Pour lire une vidéo chiffrée avec le chiffrement propriétaire d'Alibaba Cloud via la méthode VidAuth d'ApsaraVideo VOD, vous devez également transmettre le paramètre encryptType: 1 afin d'activer le chiffrement propriétaire. Cette étape n'est pas nécessaire pour la lecture de vidéos standard.
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
vid : '<your video ID>',// Required. The video ID. You can find this in the ApsaraVideo VOD console by choosing media library > Audio/Video. Example: 1e067a2831b641db90d570b6480f****.
playauth : '<your PlayAuth>',// Required. The playback credential. You can obtain this by calling the GetVideoPlayAuth operation.
encryptType: 1, // Required. Set this to 1 when playing streams with proprietary encryption. This parameter is not needed for other cases.
playConfig:{EncryptType:'AliyunVoDEncryption'}, // Required if your M3U8 stream also contains other streams that do not use proprietary encryption.
// authTimeout: 7200, // Optional. The validity period of the playback URL, in seconds. This value overrides the URL signing validity period set in the ApsaraVideo VOD console. If not specified, the default value is 7200. If set, ensure this value exceeds the video's duration to prevent the URL from expiring mid-playback.
},function(player){
console.log('The player is created.')
});
Live (LiveStsSource)
Pour lire un flux en direct utilisant le chiffrement propriétaire avec la méthode LiveStsSource, vous devez fournir l'URL du flux ainsi qu'un identifiant temporaire STS. Pour savoir comment générer cet identifiant, consultez la rubrique Obtenir un jeton STS.
let player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isLive: true, // Set to true for live streaming.
source: '<your live stream url>',// Required. The playback URL of the HLS live stream with proprietary encryption.
accessKeyId: '<your AccessKey ID>',// Required. The AccessKey ID of the STS temporary credential pair. Generate this by calling the STS AssumeRole operation.
accessKeySecret: '<your AccessKey Secret>',// Required. The AccessKey secret of the STS temporary credential pair. Generate this by calling the STS AssumeRole operation.
securityToken: '<your STS token>',// Required. The STS security token. Generate this by calling the STS AssumeRole operation.
domain: '<your Domain>',// Required. The streaming domain for the live stream.
app:'<your App Name>',// Required. The AppName of the live stream.
stream:'<your Stream Name>',// Required. The StreamName of the original live stream, not a transcoded stream.If the stream name is mystream_lhd.m3u8, enter the mystream.
regionId: '<region of your video>',// Required. The service region, such as cn-shanghai, eu-central-1, or ap-southeast-1.
},function(player){
console.log('The player is created.')
});
Le chiffrement privé dépend de la prise en charge de MSE par le navigateur. Pour les navigateurs incompatibles avec MSE, activez le paramètre encryptionFallback: true afin de basculer automatiquement vers une lecture chiffrée standard. Pour utiliser cette fonctionnalité, générez au préalable une vidéo transcodée avec un chiffrement standard pour votre contenu.
-
Pour lire des vidéos à la demande chiffrées dans les navigateurs sur les versions d'iOS antérieures à 17,1, déployez un script de plugin de lecteur supplémentaire. Suivez ces étapes :
Sur les versions d'iOS antérieures à 17,1, le chiffrement propriétaire nécessite un plugin basé sur la technologie Service Worker. Les politiques de sécurité des navigateurs limitent les service workers aux scripts de même origine. Vous devez donc déployer le plugin sur le même domaine que votre site web.
Téléchargez le script : https://g.alicdn.com/apsara-media-box/imp-web-player/<version_number>/aliplayer-worker-min.js
Déployez le script : par exemple, si votre site de lecture vidéo est
https://www.aliyun.com/a/b.html, déployez le script à l'adressehttps://www.aliyun.com/a/aliplayer-worker-min.js, c'est-à-dire dans le même répertoire que la page web.-
Transmettez cette URL lors de l'initialisation du lecteur :
new Aliplayer({ // ...other parameters swScriptURL: 'https://www.aliyun.com/a/aliplayer-worker-min.js' // Provide the full URL of the plugin script and ensure it is accessible. })
Remarque : assurez-vous que la version du lecteur correspond exactement à celle du plugin.
Si votre page web s'exécute au sein d'une application iOS packagée sur mesure (comme uni-app), ajoutez votre domaine à
WKAppBoundDomainsdans le fichierInfo.plistde l'application afin d'activer Service Worker dansWKWebView. App-Bound Domains.
Chiffrement standard HLS
VOD (VidAuth)
Lors de la lecture d'une vidéo avec chiffrement standard HLS via la méthode VidAuth d'ApsaraVideo VOD, si la vidéo contient également d'autres flux non chiffrés selon la norme HLS ou des flux transcodés standard, définissez le paramètre EncryptType sur HLSEncryption pour filtrer et lire uniquement le flux chiffré en HLS standard.
let player = new Aliplayer({
id:'J_prismPlayer',
vid:'<your video ID>', // Required. The video ID. Example: 1e067a2831b641db90d570b6480f****.
playauth:'<your PlayAuth>', // Required. The video playback credential.
playConfig: { // Optional.
MtsHlsUriToken: '', // Optional. If you need to validate MtsHlsUriToken (user token), pass it in this parameter.
EncryptType: 'HLSEncryption', // Optional. If you set this parameter to HLSEncryption, only streams with HLS standard encryption are returned.
},
});
VOD (VidSts)
Lors de la lecture d'une vidéo avec chiffrement standard HLS via la méthode VidSts d'ApsaraVideo VOD, si la vidéo contient également d'autres flux non chiffrés selon la norme HLS ou des flux transcodés standard, définissez le paramètre EncryptType sur HLSEncryption pour filtrer et lire uniquement le flux chiffré en HLS standard.
let player = new Aliplayer({
id: 'J_prismPlayer',
vid : '<your video ID>', // Required. The video ID. You can obtain the ID from the ApsaraVideo VOD console (media library > Audio/Video) or by calling the SearchMedia API operation after the video is uploaded. Example: 1e067a2831b641db90d570b6480f****.
accessKeyId: '<your AccessKey ID>', // Required. The AccessKey ID of the STS temporary credential pair, returned when you generate the STS security token.
securityToken: '<your STS token>', // Required. The STS security token. Generate this by calling the STS AssumeRole operation.
accessKeySecret: '<your AccessKey Secret>', // Required. The AccessKey secret of the STS temporary credential pair, returned when you generate the STS security token.
region: '<region of your video>', // Required. The service region, such as cn-shanghai, eu-central-1, or ap-southeast-1.
playConfig: { // Optional.
MtsHlsUriToken: '', // Optional. If you need to validate MtsHlsUriToken (user token), pass it in this parameter.
EncryptType: 'HLSEncryption', // Optional. If you set this parameter to HLSEncryption, only streams with HLS standard encryption are returned.
},
};
UrlSource
Lorsque vous lisez un flux en direct ou à la demande utilisant le chiffrement standard HLS avec la méthode UrlSource, aucun paramètre supplémentaire n'est requis. La configuration reste identique à celle d'une vidéo standard.
let player = new Aliplayer({
id:'J_prismPlayer',
source:'<your play URL>', // The playback URL, which can be for a live or on-demand stream.
isLive: true, // Set to true for live streaming.
});
Chiffrement DRM
VOD (VidSts)
Pour lire une vidéo chiffrée par DRM via la méthode VidSts d'ApsaraVideo VOD, vous devez également transmettre le paramètre isDrm: true .
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isDrm: true,
vid: '<your video ID>',// Required. The video ID. You can find this in the ApsaraVideo VOD console by choosing media library > Audio/Video. Example: 1e067a2831b641db90d570b6480f****.
accessKeyId: '<your AccessKey ID>',// Required. The AccessKey ID of the STS temporary credential pair. Generate this by calling the STS AssumeRole operation.
securityToken: '<your STS token>',// Required. The STS security token. Generate this by calling the STS AssumeRole operation.
accessKeySecret: '<your AccessKey Secret>',// Required. The AccessKey secret of the STS temporary credential pair. Generate this by calling the STS AssumeRole operation.
region: '<region of your video>', // Required. The service region, such as cn-shanghai, eu-central-1, or ap-southeast-1.
certId: '<your certificate ID>', // Required for playback on Apple devices. Use this parameter to request the Apple certificate. Obtain it from the ApsaraVideo VOD or ApsaraVideo Live console, depending on your DRM implementation.
// authTimeout: 7200, // Optional. The validity period of the playback URL, in seconds. This value overrides the URL signing validity period set in the ApsaraVideo VOD console. If not specified, the default value is 7200. If set, ensure this value exceeds the video's duration to prevent the URL from expiring mid-playback.
},function(player){
console.log('The player is created.')
});
Live (LiveStsSource)
Pour lire un flux en direct chiffré par DRM avec la méthode LiveStsSource, fournissez l'URL du flux ainsi qu'un identifiant temporaire STS. Pour savoir comment générer un identifiant temporaire STS, consultez la rubrique Obtenir un jeton STS.
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isLive: true, // Set to true for live streaming.
isDrm: true,
source: '<your live stream url>',// Required. The playback URL of the DRM-encrypted live stream.
accessKeyId: '<your AccessKey ID>',// Required. The AccessKey ID of the STS temporary credential pair. Generate this by calling the STS AssumeRole operation.
securityToken: '<your STS token>',// Required. The STS security token. Generate this by calling the STS AssumeRole operation.
accessKeySecret: '<your AccessKey Secret>',// Required. The AccessKey secret of the STS temporary credential pair. Generate this by calling the STS AssumeRole operation.
region: '<region of your video>', // Required. The service region, such as cn-shanghai, eu-central-1, or ap-southeast-1.
certId: '<your certificate ID>', // Required for playback on Apple devices. Use this parameter to request the Apple certificate. Obtain it from the ApsaraVideo VOD or ApsaraVideo Live console, depending on your DRM implementation.
},function(player){
console.log('The player is created.')
});
Android
Procédure
Intégrez le SDK Player d'Alibaba Cloud pour Android dans votre application. Les sections suivantes détaillent les étapes et fournissent des exemples de code.
-
Intégrez le SDK Player d'Alibaba Cloud pour Android.
-
Créez un lecteur pour lire une vidéo.
Suivez la procédure décrite dans la rubrique Fonctionnalités de base. Pour l'Étape 3. Créer un DataSource, choisissez l'une des méthodes suivantes selon vos besoins.
Chiffrement vidéo Alibaba Cloud (chiffrement privé)
Remarques sur l'utilisation
Les vidéos HLS chiffrées avec le chiffrement vidéo Alibaba Cloud (chiffrement privé) peuvent être lues via une URL après transcodage. Avant le transcodage, associez une licence sous le même compte (Gérer les licences), puis définissez le paramètre EncryptType lorsque vous créez un groupe de modèles de transcodage. Exemple :
Une fois le modèle créé, ne le modifiez pas et ne l'enregistrez pas dans la console. Dans le cas contraire, la méthode de chiffrement serait écrasée.
[{
"TranscodeTemplateId": "",
"TemplateName": "740P H.264 HLS local encryption",
"Type": "Normal",
"Container": {
"Format": "m3u8"
},
"TransConfig": {
"IsCheckReso": false,
"IsCheckResoFail": false,
"IsCheckVideoBitrate": false,
"IsCheckVideoBitrateFail": false,
"IsCheckAudioBitrate": false,
"IsCheckAudioBitrateFail": false
},
"Definition": "HD",
"MuxConfig": {
"Segment": {
"Duration": 5
}
},
"EncryptSetting": {
"EncryptType": "AliyunVoDLicenseEncryption"
},
"Video": {
"Height": 720,
"Bitrate": 400,
"Codec": "H.264",
"Fps": 25,
"Gop": 250,
"Profile": "high"
},
"Audio": {
"Bitrate": 64,
"Codec": "AAC",
"Channels": 2,
"Samplerate": "44100"
}
}]
VidAuth
Lorsque vous lisez une vidéo HLS ou MP4 à chiffrement privé via ApsaraVideo VOD VidAuth, si la vidéo contient également des flux utilisant d'autres types de chiffrement ou des flux transcodés non chiffrés, vous pouvez définir le type de chiffrement vidéo sur AliyunVoDEncryption afin de lire uniquement le flux à chiffrement privé.
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// Optional. If you set this parameter to AliyunVoDEncryption, only privately encrypted video streams are returned.
vidAuth.setPlayConfig(vidPlayerConfigGen);
vidAuth.setVid("your_video_id");// Required. The video ID.
vidAuth.setPlayAuth("<yourPlayAuth>");// Required. The PlayAuth, generated by calling the ApsaraVideo VOD GetVideoPlayAuth operation.
vidAuth.setRegion("your_region");// This parameter is deprecated in player SDK V5.5.5.0 and later. You do not need to set the region because the player automatically resolves it. For earlier versions, this parameter is required. It specifies the region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
// vidAuth.setAuthTimeout(3600); // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is set on the ApsaraVideo VOD console. The default value is 3600. If you set this parameter, ensure its value is greater than the video's duration to prevent the URL from expiring before playback is complete.
aliPlayer.setDataSource(vidAuth);
VidSts
Lorsque vous lisez une vidéo HLS ou MP4 à chiffrement privé via ApsaraVideo VOD VidSts, si la vidéo contient également des flux utilisant d'autres types de chiffrement ou des flux transcodés non chiffrés, vous pouvez définir le type de chiffrement vidéo sur AliyunVoDEncryption afin de lire uniquement le flux à chiffrement privé.
VidSts vidSts = new VidSts();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// Optional. If you set this parameter to AliyunVoDEncryption, only privately encrypted video streams are returned.
vidSts.setPlayConfig(vidPlayerConfigGen);
vidSts.setVid("your_video_id");// Required. The video ID.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Required. The AccessKey ID of the temporary STS credential. To obtain this, call the STS AssumeRole operation.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Required. The AccessKey Secret of the temporary STS credential. To obtain this, call the STS AssumeRole operation.
vidSts.setSecurityToken("<yourSecurityToken>");// Required. The security token. To obtain this, call the STS AssumeRole operation.
vidSts.setRegion("your_region");// Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
// vidSts.setAuthTimeout(3600); // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is set on the ApsaraVideo VOD console. The default value is 3600. If you set this parameter, ensure its value is greater than the video's duration to prevent the URL from expiring before playback is complete.
aliPlayer.setDataSource(vidSts);
LiveSts
Pour lire un flux en direct à chiffrement privé au format HLS ou FLV à l'aide de l'objet ApsaraVideo Live LiveSts, vous devez transmettre l'URL et un identifiant STS, puis définir le type de chiffrement vidéo sur AliEncryption. L'exemple de code suivant illustre cette opération :
-
Créez une source de données.
Vous devez transmettre
LiveStscomme source de lecture.// Create a LiveSts object and set EncryptionType to AliEncryption. LiveSts liveSts = new LiveSts(); liveSts.setUrl("<your live stream url>");// Required. The playback URL of the privately encrypted HLS live stream. liveSts.setAccessKeyId("<your AccessKey ID>");// Required. The AccessKey ID of the temporary STS credential. To obtain this, call the STS AssumeRole operation. liveSts.setAccessKeySecret("<your AccessKey Secret>");// Required. The AccessKey Secret of the temporary STS credential. To obtain this, call the STS AssumeRole operation. liveSts.setSecurityToken("<your STS token>");// Required. The security token. To obtain this, call the STS AssumeRole operation. liveSts.setDomain("<your Domain>");// Required. The streaming domain of the live stream. liveSts.setApp("<your App Name>");// Required. The AppName of the live stream. liveSts.setStream("<your Stream Name>");// Required. The StreamName of the live stream. liveSts.setEncryptionType(LiveSts.LiveEncryptionType.AliEncryption);// Required. Set the encryption type to AliEncryption. liveSts.setRegion("<region of your video>");// Required. The service region, such as cn-shanghai. // Set the playback source. aliPlayer.setDataSource(liveSts); // Prepare for playback. aliPlayer.prepare(); -
Surveillez l'invalidation du jeton STS.
Pendant la lecture d'un flux en direct chiffré, la clé de chiffrement peut faire l'objet d'une rotation. Lorsqu'une rotation se produit, le lecteur utilise l'identifiant STS pour demander la nouvelle clé. Vous devez surveiller la validité de cet identifiant, car un identifiant invalide interrompt la lecture.
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { if(info is valid){ return IPlayer.StsStatus.Valid; } if(a valid STS credential can be obtained){ getSTS(); // This can be asynchronous or synchronous. return IPlayer.StsStatus.Pending; } // If the info is invalid and a new STS credential cannot be obtained, we recommend stopping playback to prevent corrupted video output. mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });RemarqueAprès avoir obtenu un nouvel identifiant STS, appelez la méthode
updateLiveStsInfopour le mettre à jour. Si l'obtention d'un nouvel identifiant échoue, il est recommandé d'arrêter la lecture. Sans mise à jour, le lecteur continue d'utiliser l'ancien identifiant pour demander des clés après son expiration. Un identifiant STS invalide peut entraîner un échec de lecture ou une altération de l'image.mAliyunVodPlayer.updateStsInfo(stsInfo);
Chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur une licence)
Remarques sur l'utilisation
Les vidéos HLS chiffrées avec le chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur une licence) peuvent être lues via une URL après transcodage. Avant le transcodage, associez une licence sous le même compte (Gérer les licences), puis définissez le paramètre EncryptType lorsque vous créez un groupe de modèles de transcodage. Exemple :
Une fois le modèle créé, ne le modifiez pas et ne l'enregistrez pas dans la console. Dans le cas contraire, la méthode de chiffrement serait écrasée.
[{
"TranscodeTemplateId": "",
"TemplateName": "740P H.264 HLS local encryption",
"Type": "Normal",
"Container": {
"Format": "m3u8"
},
"TransConfig": {
"IsCheckReso": false,
"IsCheckResoFail": false,
"IsCheckVideoBitrate": false,
"IsCheckVideoBitrateFail": false,
"IsCheckAudioBitrate": false,
"IsCheckAudioBitrateFail": false
},
"Definition": "HD",
"MuxConfig": {
"Segment": {
"Duration": 5
}
},
"EncryptSetting": {
"EncryptType": "AliyunVoDLicenseEncryption"
},
"Video": {
"Height": 720,
"Bitrate": 400,
"Codec": "H.264",
"Fps": 25,
"Gop": 250,
"Profile": "high"
},
"Audio": {
"Bitrate": 64,
"Codec": "AAC",
"Channels": 2,
"Samplerate": "44100"
}
}]
UrlSource
Seul le SDK Player d'Alibaba Cloud pour Android version 6.8.0 et ultérieure prend en charge la lecture de vidéos MP4 à chiffrement privé basé sur une licence via UrlSource. La version 6.17.0 et les versions ultérieures prennent en charge les vidéos HLS à chiffrement privé basé sur une licence (débit unique et débit adaptatif).
Pour lire une vidéo à chiffrement privé basé sur une licence au format HLS ou MP4 avec UrlSource, appelez l'opération GetPlayInfo afin d'obtenir l'URL de lecture de la vidéo. Pour une URL MP4, ajoutez etavirp_nuyila=1 à l'URL avant de la transmettre au lecteur. Ce paramètre peut être placé n'importe où dans la chaîne de requête. Pour le format HLS, utilisez directement l'URL de la vidéo d'origine. Configurez le SDK Player comme pour une vidéo standard ; aucun paramètre supplémentaire n'est requis.
Exemple d'URL de lecture 1 : https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
Exemple d'URL de lecture 2 : https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
// Playback URL
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
// Player
UrlSource urlSource = new UrlSource();
urlSource.setUri(playURL);// Required. The playback URL of the video. You can call the GetPlayInfo operation to obtain the URL.
aliPlayer.setDataSource(urlSource);
aliPlayer.prepare();
// Short video player
AliListPlayer aliyunListPlayer = AliPlayerFactory.createAliListPlayer(getApplicationContext());
// Add a UrlSource
aliyunListPlayer.addUrl(playURL,uid);
aliyunListPlayer.moveTo(uid);
// Preload
MediaLoader mediaLoader = MediaLoader.getInstance();
mediaLoader.load(playURL,"duration");
Chiffrement HLS standard
VidAuth
Lorsque vous lisez une vidéo utilisant le chiffrement HLS standard via ApsaraVideo VOD VidAuth, si la vidéo contient également d'autres flux chiffrés non conformes au standard HLS ou des flux transcodés standards, vous pouvez définir le type de chiffrement sur HLSEncryption afin de lire uniquement le flux chiffré HLS standard. L'exemple de code suivant illustre cette opération :
Si vous avez activé l'option Réécrire les fichiers M3U8 du chiffrement HLS standard, vous devez appeler setMtsHlsUriToken pour définir le jeton utilisateur.
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
playerConfig.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);// Optional. If you set this parameter to HLSEncryption, only standard HLS encrypted video streams are returned.
playerConfig.setMtsHlsUriToken("token");// Optional. Pass this parameter if you want to validate the MtsHlsUriToken (user token).
vidAuth.setPlayConfig(playerConfig);
vidAuth.setVid("your_video_id");// Required. The video ID.
vidAuth.setPlayAuth("<yourPlayAuth>");// Required. The PlayAuth, generated by calling the ApsaraVideo VOD GetVideoPlayAuth operation.
vidAuth.setRegion("your_region");// This parameter is deprecated in player SDK V5.5.5.0 and later. You do not need to set the region because the player automatically resolves it. For earlier versions, this parameter is required. It specifies the region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
// vidAuth.setAuthTimeout(3600);// Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is set on the ApsaraVideo VOD console. The default value is 3600. If you set this parameter, ensure its value is greater than the video's duration to prevent the URL from expiring before playback is complete.
aliPlayer.setDataSource(vidAuth);
VidSts
Lorsque vous lisez une vidéo utilisant le chiffrement HLS standard via ApsaraVideo VOD VidSts, si la vidéo contient également d'autres flux chiffrés non conformes au standard HLS ou des flux transcodés standards, vous pouvez définir le type de chiffrement sur HLSEncryption afin de lire uniquement le flux chiffré HLS standard. L'exemple de code suivant illustre cette opération :
Si vous avez activé l'option Réécrire les fichiers M3U8 du chiffrement HLS standard, vous devez appeler setMtsHlsUriToken pour définir le jeton utilisateur.
VidSts vidSts = new VidSts();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);//Optional. If you set this parameter to HLSEncryption, only standard HLS encrypted video streams are returned.
playerConfig.setMtsHlsUriToken("token");// Optional. Pass this parameter if you want to validate the MtsHlsUriToken (user token).
vidSts.setPlayConfig(playerConfig);
vidSts.setVid("your_video_id");// Required. The video ID.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Required. The AccessKey ID of the temporary STS credential. To obtain this, call the STS AssumeRole operation.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Required. The AccessKey Secret of the temporary STS credential. To obtain this, call the STS AssumeRole operation.
vidSts.setSecurityToken("<yourSecurityToken>");// Required. The security token. To obtain this, call the STS AssumeRole operation.
vidSts.setRegion("your_region");// Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
// vidSts.setAuthTimeout(3600);// Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is set on the ApsaraVideo VOD console. The default value is 3600. If you set this parameter, ensure its value is greater than the video's duration to prevent the URL from expiring before playback is complete.
aliPlayer.setDataSource(vidSts);
UrlSource
Pour lire un flux utilisant le chiffrement HLS standard avec UrlSource, configurez le SDK Player comme pour une vidéo classique.
Nous recommandons d'utiliser ApsaraVideo VOD. Appelez l'opération GetPlayInfo pour obtenir l'URL de lecture de la vidéo, puis transmettez-la au lecteur.
Si vous avez activé l'option Réécrire les fichiers M3U8 du chiffrement HLS standard, vous devez ajouter MtsHlsUriToken=<token> à l'URL de la vidéo avant de la transmettre au lecteur. Ce paramètre peut être placé n'importe où dans la chaîne de requête.
Exemple d'URL de lecture d'origine : https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Exemple d'URL à transmettre au lecteur : https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
UrlSource urlSource = new UrlSource();
urlSource.setUri("playback_url");// The playback URL of the live or on-demand stream that uses standard HLS encryption.
aliPlayer.setDataSource(urlSource);
Chiffrement DRM d'Alibaba Cloud
Sur Android, nous recommandons d'utiliser un SurfaceView pour garantir une lecture correcte des vidéos présentant un niveau de sécurité élevé.
VidSts
Commencez par configurer le chiffrement DRM comme décrit dans la rubrique Configurer le chiffrement DRM pour ApsaraVideo VOD. Lorsque vous lisez une vidéo chiffrée par DRM via ApsaraVideo VOD VidSts, la configuration est identique à celle d'une vidéo non chiffrée. Aucun paramètre supplémentaire n'est requis.
VidSts vidSts = new VidSts();
vidSts.setVid("your_video_id");// Required. The video ID.
vidSts.setAccessKeyId("<yourAccessKeyId>");// Required. The AccessKey ID of the temporary STS credential. To obtain this, call the STS AssumeRole operation.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Required. The AccessKey Secret of the temporary STS credential. To obtain this, call the STS AssumeRole operation.
vidSts.setSecurityToken("<yourSecurityToken>");// Required. The security token. To obtain this, call the STS AssumeRole operation.
vidSts.setRegion("your_region");// Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
// vidSts.setAuthTimeout(3600); // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is set on the ApsaraVideo VOD console. The default value is 3600. If you set this parameter, ensure its value is greater than the video's duration to prevent the URL from expiring before playback is complete.
aliPlayer.setDataSource(vidSts);
LiveSts
Commencez par configurer le chiffrement DRM comme décrit dans la rubrique Configurer le chiffrement DRM pour ApsaraVideo Live. Pour lire un flux en direct chiffré par DRM à l'aide de l'objet LiveSts, vous devez transmettre l'URL et un identifiant STS, puis définir le type de chiffrement vidéo sur WideVine_FairPlay. L'exemple de code suivant illustre cette opération :
-
Créez une source de données.
Vous devez transmettre
LiveStscomme source de lecture.// Create a LiveSts object and set EncryptionType to WideVine_FairPlay. LiveSts liveSts = new LiveSts(); liveSts.setUrl("<your live stream url>");// Required. The playback URL of the DRM-encrypted HLS live stream. liveSts.setAccessKeyId("<your AccessKey ID>");// Required. The AccessKey ID of the temporary STS credential. To obtain this, call the STS AssumeRole operation. liveSts.setAccessKeySecret("<your AccessKey Secret>");// Required. The AccessKey Secret of the temporary STS credential. To obtain this, call the STS AssumeRole operation. liveSts.setSecurityToken("<your STS token>");// Required. The security token. To obtain this, call the STS AssumeRole operation. liveSts.setDomain("<your Domain>");// Required. The streaming domain of the live stream. liveSts.setApp("<your App Name>");// Required. The AppName of the live stream. liveSts.setStream("<your Stream Name>");// Required. The StreamName of the live stream. liveSts.setEncryptionType(LiveSts.LiveEncryptionType.WideVine_FairPlay);// Required. Set the encryption type to WideVine_FairPlay. liveSts.setRegion("<region of your video>");// Required. The service region, such as cn-shanghai. // Set the playback source. aliPlayer.setDataSource(liveSts); // Prepare for playback. aliPlayer.prepare(); -
Surveillez l'invalidation du jeton STS.
Pendant la lecture d'un flux en direct chiffré, la clé de chiffrement peut faire l'objet d'une rotation. Lorsqu'une rotation se produit, le lecteur utilise l'identifiant STS pour demander la nouvelle clé. Vous devez surveiller la validité de cet identifiant, car un identifiant invalide interrompt la lecture.
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() { @Override public AliPlayer.Status onVerifySts(StsInfo info) { if(info is valid){ return IPlayer.StsStatus.Valid; } if(a valid STS credential can be obtained){ getSTS(); // This can be asynchronous or synchronous. return IPlayer.StsStatus.Pending; } // If the info is invalid and a new STS credential cannot be obtained, we recommend stopping playback to prevent corrupted video output. mAliyunVodPlayer.stop(); return IPlayer.StsStatus.Invalid; } @Override public AliPlayer.Status onVerifyAuth(VidAuth auth) { return AliPlayer.Status.Valid; } });RemarqueAprès avoir obtenu un nouvel identifiant STS, appelez la méthode
updateLiveStsInfopour le mettre à jour. Si l'obtention d'un nouvel identifiant échoue, il est recommandé d'arrêter la lecture. Sans mise à jour, le lecteur continue d'utiliser l'ancien identifiant pour demander des clés après son expiration. Un identifiant STS invalide peut entraîner un échec de lecture ou une altération de l'image.mAliyunVodPlayer.updateStsInfo(stsInfo);
Chiffrement DRM tiers
Cette fonctionnalité nécessite le SDK Player version 7.8.0 ou ultérieure.
UrlSource
Cette fonctionnalité prend uniquement en charge le schéma DRM Widevine pour les protocoles HLS et DASH.
Consultez d'abord la rubrique Packaging VOD pour configurer le chiffrement DRM. Lorsque vous lisez une vidéo chiffrée par DRM avec la méthode UrlSource, outre les configurations d'une vidéo classique, vous devez implémenter l'interface DrmCallback afin d'obtenir les informations de clé de la vidéo.
// Implement the DrmCallback.requestKey interface to obtain the key by following the documentation of your third-party DRM provider.
// The following example shows how to retrieve a key from PallyCon. For more information, see https://pallycon.com/docs/en/multidrm.
player.setDrmCallback(new DrmCallback() {
@Override
public byte[] requestKey(byte[] data) {
// Request the key information by using an HTTP POST request, as required by the DRM provider.
String licenseUrl = "https://license-global.pallycon.com/ri/licenseManager.do";
String[] header = {
// Replace TOKEN_ID with your own.
"pallycon-customdata-v2: TOKEN_ID"
};
// Avoid blocking this thread for too long.
byte[] response = async_http_post(licenseUrl, header, data);
if (response != null) {
// If the response_format of the token is set to 'original', return the response directly. Otherwise, you must parse the response before returning it.
// For more information, see https://pallycon.com/docs/en/multidrm/license/license-token/#token-json.
// The format and structure of the response can vary significantly between providers. Review it carefully. If the response cannot be used for decryption, the player reports an error through the onError callback.
return response;
} else {
// Handle exceptions. The player calls onError and reports the relevant error.
return null;
}
}
});
iOS
Procédure
Intégrez Player SDK for iOS dans votre application. Voici les étapes et l'exemple de code correspondants :
-
Intégrez Player SDK for iOS.
Reportez-vous à la rubrique Intégrer le SDK.
-
Créez un lecteur pour charger et lire les vidéos.
Suivez les instructions de la section Fonctionnalités de base. À l'étape 3. Créer une source de données, utilisez l'une des méthodes suivantes selon vos besoins.
Chiffrement privé Alibaba Cloud
VidAuth for VOD
Lorsque vous lisez une vidéo HLS ou MP4 chiffrée de manière privée via la méthode VidAuth d'ApsaraVideo VOD, si cette vidéo possède également des flux non chiffrés ou transcodés de façon standard, définissez le type de chiffrement sur AliyunVoDEncryption afin de lire uniquement le flux chiffré de manière privée.
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Your video ID"; // Required. The video ID.
authSource.playAuth = @"<yourPlayAuth>"; // Required. The playback credential. You can obtain this credential by calling the GetVideoPlayAuth operation of ApsaraVideo VOD.
authSource.region = @"Your region"; // This parameter is deprecated in Player SDK V5.5.5.0 and later. You do not need to set the region because the player automatically parses it. For SDK versions earlier than 5.5.5.0, this parameter is required. It specifies the region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
// authSource.authTimeout = 3600; // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is configured in the ApsaraVideo VOD console. If you do not set this parameter, the default value 3600 is used. If you set this parameter, make sure that its value is greater than the actual video duration to prevent the playback URL from expiring before the playback is complete.
// Build the config by using VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // Optional. If you set the encryption type to AliyunVoDEncryption, only privately encrypted video streams are returned.
authSource.playConfig = [config generatePlayerConfig];
[self.player setAuthSource:authSource];
VidSts for VOD
Si vous lisez une vidéo HLS ou MP4 chiffrée de manière privée avec la méthode VidSts d'ApsaraVideo VOD, et que celle-ci contient aussi des flux non chiffrés ou transcodés de façon standard, définissez le type de chiffrement sur AliyunVoDEncryption pour ne lire que le flux chiffré de manière privée.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Your region"; // Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
source.vid = @"Your video ID"; // Required. The video ID.
source.securityToken = @"<yourSecurityToken>"; // Required. The security token. You can obtain this token by calling the AssumeRole operation of STS.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Required. The AccessKey secret of the temporary STS credential. You can obtain this credential by calling the AssumeRole operation of STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Required. The AccessKey ID of the temporary STS credential. You can obtain this credential by calling the AssumeRole operation of STS.
// source.authTimeout = 3600; // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is configured in the ApsaraVideo VOD console. If you do not set this parameter, the default value 3600 is used. If you set this parameter, make sure that its value is greater than the actual video duration to prevent the playback URL from expiring before the playback is complete.
// Build the config by using VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; // Optional. If you set the encryption type to AliyunVoDEncryption, only privately encrypted video streams are returned.
source.playConfig = [config generatePlayerConfig];
// Set the playback source.
[self.player setStsSource:source];
LiveStsSource for live
Pour lire un flux en direct chiffré de manière privée au format HLS ou FLV via la méthode LiveStsSource, fournissez l'URL du flux ainsi qu'un identifiant STS, puis définissez le type de chiffrement de la vidéo sur ENCRYPTION_TYPE_ALIVODENCRYPTION. L'exemple de code suivant illustre cette opération :
-
Créez une source de données.
Vous devez transmettre
AVPLiveStsSourcecomme source de lecture.// Create a LiveSts object and set encryptionType to ENCRYPTION_TYPE_ALIVODENCRYPTION. AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"Encrypted live stream URL" accessKeyId:@"Temporary AccessKey ID" accessKeySecret:@"Temporary AccessKey secret" securityToken:@"Security token" region:@"Region value" domain:@"Streaming domain for the URL" app:@"Application name for streaming" stream:@"Stream name for streaming" encryptionType:ENCRYPTION_TYPE_ALIVODENCRYPTION];// Required. Set the encryption type to ENCRYPTION_TYPE_ALIVODENCRYPTION. // Set the playback source. [self.aliPlayer setLiveStsSource:liveStsSource]; ...... // Prepare for playback. [self.aliPlayer prepare]; -
Surveillez l'invalidation de l'identifiant STS.
Pendant la lecture d'un flux en direct chiffré, la clé de chiffrement peut faire l'objet d'une rotation. Le cas échéant, le lecteur utilise l'identifiant STS pour demander la nouvelle clé. Vous devez donc surveiller la validité de cet identifiant, car un identifiant invalide interrompt la lecture.
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info is valid) { return Valid; } if (a valid STS credential can be obtained) { getSTS(); // This can be an asynchronous or synchronous operation. return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];RemarqueUne fois le nouvel identifiant STS obtenu, appelez la méthode
updateLiveStsInfopour le mettre à jour. Si l'obtention d'un nouvel identifiant échoue, il est recommandé d'arrêter la lecture. Sans mise à jour de l'identifiant STS, le lecteur tente d'utiliser l'identifiant expiré pour demander la clé, ce qui peut provoquer des artefacts visuels ou un échec de la lecture.[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
Chiffrement privé basé sur licence Alibaba Cloud
UrlSource for VOD
Seul Player SDK for iOS version 6.8.0 et ultérieure prend en charge la lecture de vidéos MP4 chiffrées de manière privée par licence via UrlSource. Les versions 6.17.0 et ultérieures prennent en charge les vidéos HLS chiffrées de manière privée par licence, à débit binaire unique ou adaptatif.
Pour lire une vidéo HLS ou MP4 chiffrée de manière privée par licence avec la méthode UrlSource, appelez l'opération GetPlayInfo afin d'obtenir l'URL de lecture de la vidéo. Après avoir récupéré cette URL, ajoutez-y le paramètre etavirp_nuyila=1 avant de la transmettre au lecteur. Ce paramètre peut être placé n'importe où dans la chaîne de requête. Il est obligatoire uniquement pour les vidéos MP4 ; pour les vidéos HLS, l'URL d'origine suffit. La configuration du lecteur reste identique à celle d'une vidéo standard. Aucun paramètre supplémentaire n'est nécessaire.
Exemple d'URL de lecture 1 : https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
Exemple d'URL de lecture 2 : https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
// Playback URL
NSString *playURL = @"https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
// Player
AliPlayer *player = [[AliPlayer alloc] init];
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:playURL]; // Required. The playback URL of the video. You can call the GetPlayInfo operation to obtain the URL. For MP4 videos, you must append `etavirp_nuyila=1` to the URL. Example: https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
[player setUrlSource:urlSource];
[player prepare];
// List player
AliListPlayer *listPlayer = [[AliListPlayer alloc] init];
[listPlayer addUrlSource:playURL uid:UUIDString];
[listPlayer moveTo:@"uid"];
// Preload
AliMedialoader *mediaLoader = [AliMediaLoader shareInstance];
[mediaLoader load:playURL duration:1000];
Chiffrement standard HLS
VidAuth for VOD
Lorsque vous lisez une vidéo chiffrée avec le chiffrement standard HLS via la méthode VidAuth d'ApsaraVideo VOD, si elle comporte également des flux non chiffrés ou transcodés de façon standard, définissez le type de chiffrement sur HLSEncryption pour lire uniquement le flux chiffré selon la norme HLS. L'exemple de code suivant illustre cette opération :
Si vous avez activé la fonctionnalité de réécriture du chiffrement standard M3U8, appelez setHlsUriToken pour définir le jeton utilisateur.
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Your video ID"; // Required. The video ID.
authSource.playAuth = @"<yourPlayAuth>"; // Required. The playback credential. You can obtain this credential by calling the GetVideoPlayAuth operation of ApsaraVideo VOD.
authSource.region = @"Your region"; // This parameter is deprecated in Player SDK V5.5.5.0 and later. You do not need to set the region because the player automatically parses it. For SDK versions earlier than 5.5.5.0, this parameter is required. It specifies the region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
// authSource.authTimeout = 3600; // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is configured in the ApsaraVideo VOD console. If you do not set this parameter, the default value 3600 is used. If you set this parameter, make sure that its value is greater than the actual video duration to prevent the playback URL from expiring before the playback is complete.
// Build the config by using VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // Optional. If you set this parameter to HLSEncryption, only video streams that are encrypted by using HLS standard encryption are returned.
[config setHlsUriToken: @"token"]; // Optional. Use this parameter to pass the MtsHlsUriToken (user token) for verification.
source.playConfig = [config generatePlayerConfig];
// Set the playback source.
[self.player setAuthSource:authSource];
VidSts for VOD
Si vous lisez une vidéo chiffrée avec le chiffrement standard HLS via la méthode VidSts d'ApsaraVideo VOD, et que celle-ci contient aussi des flux non chiffrés ou transcodés de façon standard, définissez le type de chiffrement sur HLSEncryption afin de ne lire que le flux chiffré selon la norme HLS. L'exemple de code suivant illustre cette opération :
Si vous avez activé la fonctionnalité de réécriture du chiffrement standard M3U8, appelez setHlsUriToken pour définir le jeton utilisateur.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"Your video ID"; // Required. The video ID.
source.region = @"Your region"; // Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
source.securityToken = @"<yourSecurityToken>"; // Required. The security token. You can obtain this token by calling the AssumeRole operation of STS.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Required. The AccessKey secret of the temporary STS credential. You can obtain this credential by calling the AssumeRole operation of STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Required. The AccessKey ID of the temporary STS credential. You can obtain this credential by calling the AssumeRole operation of STS.
// source.authTimeout = 3600; // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is configured in the ApsaraVideo VOD console. If you do not set this parameter, the default value 3600 is used. If you set this parameter, make sure that its value is greater than the actual video duration to prevent the playback URL from expiring before the playback is complete.
// Build the config by using VidPlayerConfigGenerator.
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // Optional. If you set this parameter to HLSEncryption, only video streams that are encrypted by using HLS standard encryption are returned.
[config setHlsUriToken: @"token"]; // Optional. Use this parameter to pass the MtsHlsUriToken (user token) for verification.
source.playConfig = [config generatePlayerConfig];
// Set the playback source.
[self.player setStsSource:source];
UrlSource
Avec la méthode UrlSource pour lire un flux chiffré selon la norme HLS, la configuration du lecteur reste identique à celle d'une vidéo standard. Aucun paramètre supplémentaire n'est requis.
Nous vous recommandons d'utiliser ApsaraVideo VOD. Appelez l'opération GetPlayInfo pour obtenir l'URL de lecture de la vidéo, puis transmettez-la au lecteur.
Si vous avez activé la fonctionnalité de réécriture du chiffrement standard M3U8, ajoutez le paramètre MtsHlsUriToken=<token> à l'URL de la vidéo avant de la transmettre au lecteur. Ce paramètre peut être placé n'importe où dans la chaîne de requête.
Exemple d'URL de lecture d'origine : https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Exemple d'URL à saisir dans le lecteur : https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:url]; // The playback URL of the live or on-demand stream with HLS standard encryption.
[self.player setUrlSource:urlSource];
Chiffrement DRM Alibaba Cloud
Sur la plateforme iOS, vous devez appeler une seule fois et de manière globale la méthode setFairPlayCertID de AliPlayerGlobalSettings avant [self.player prepare] afin de définir l'ID du certificat. Cet ID est disponible dans ApsaraVideo VOD console > Configuration Management > Media Processing Configuration > DRM Certificate Management.
[AliPlayerGlobalSettings setFairPlayCertID:@"Your certificate ID obtained from the console"];
VidSts for VOD
Commencez par configurer le chiffrement DRM en suivant la procédure décrite dans la rubrique Configurer le chiffrement DRM pour VOD. Lors de la lecture d'une vidéo chiffrée par DRM avec la méthode VidSts d'ApsaraVideo VOD, la configuration est identique à celle d'une vidéo standard. Aucun paramètre supplémentaire n'est nécessaire.
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"Your region"; // Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
source.vid = @"Your video ID"; // Required. The video ID.
source.securityToken = @"<yourSecurityToken>"; // Required. The security token. You can obtain this token by calling the AssumeRole operation of STS.
source.accessKeySecret = @"<yourAccessKeySecret>"; // Required. The AccessKey secret of the temporary STS credential. You can obtain this credential by calling the AssumeRole operation of STS.
source.accessKeyId = @"<yourAccessKeyId>"; // Required. The AccessKey ID of the temporary STS credential. You can obtain this credential by calling the AssumeRole operation of STS.
// source.authTimeout = 3600; // Optional. The validity period of the playback URL in seconds. This value overrides the validity period of URL authentication that is configured in the ApsaraVideo VOD console. If you do not set this parameter, the default value 3600 is used. If you set this parameter, make sure that its value is greater than the actual video duration to prevent the playback URL from expiring before the playback is complete.
// Set the playback source.
[self.player setStsSource:source]
LiveStsSource for live
Commencez par configurer le chiffrement DRM en suivant la procédure décrite dans la rubrique Configurer le chiffrement DRM pour la diffusion en direct. Pour lire un flux en direct chiffré par DRM via la méthode LiveStsSource, fournissez l'URL du flux ainsi qu'un identifiant STS, puis définissez le type de chiffrement de la vidéo sur ENCRYPTION_TYPE_FAIRPLAY. L'exemple de code suivant illustre cette opération :
-
Créez une source de données.
Vous devez transmettre
AVPLiveStsSourcecomme source de lecture.// Create a LiveSts object and set encryptionType to ENCRYPTION_TYPE_FAIRPLAY. AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"Encrypted live stream URL" accessKeyId:@"Temporary AccessKey ID" accessKeySecret:@"Temporary AccessKey secret" securityToken:@"Security token" region:@"Region value" domain:@"Streaming domain for the URL" app:@"Application name for streaming" stream:@"Stream name for streaming" encryptionType:ENCRYPTION_TYPE_FAIRPLAY];// Required. Set the encryption type to ENCRYPTION_TYPE_FAIRPLAY. // Set the playback source. [self.aliPlayer setLiveStsSource:liveStsSource]; ...... // Prepare for playback. [self.aliPlayer prepare]; -
Surveillez l'invalidation de l'identifiant STS.
Pendant la lecture d'un flux en direct chiffré, la clé de chiffrement peut faire l'objet d'une rotation. Le cas échéant, le lecteur utilise l'identifiant STS pour demander la nouvelle clé. Vous devez donc surveiller la validité de cet identifiant, car un identifiant invalide interrompt la lecture.
__weak typeof(self) weakSelf = self; [self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) { if (info is valid){ return Valid; } if(a valid STS credential can be obtained){ getSTS(); // This can be an asynchronous or synchronous operation. return Pending; } [weakSelf.aliPlayer stop]; return Invalid; }];RemarqueUne fois le nouvel identifiant STS obtenu, appelez la méthode
updateLiveStsInfopour le mettre à jour. Si l'obtention d'un nouvel identifiant échoue, il est recommandé d'arrêter la lecture. Sans mise à jour de l'identifiant STS, le lecteur tente d'utiliser l'identifiant expiré pour demander la clé, ce qui peut provoquer des artefacts visuels ou un échec de la lecture.[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
Chiffrement DRM tiers
Cette fonctionnalité nécessite Player SDK version 7.8.0 ou ultérieure.
La lecture de vidéos chiffrées avec FairPlay requiert AppleAVPlayer. Avant de lancer la lecture, appelez
[self.player setPreferPlayerName:@"AppleAVPlayer"]pour changer le moteur du lecteur. Pour les vidéos non chiffrées par DRM, appelez ensuite[self.player setPreferPlayerName:@""]afin de rétablir le moteur par défaut.
UrlSource for FairPlay
Seul le schéma FairPlay sur le protocole HLS est pris en charge.
Commencez par configurer le chiffrement DRM en suivant la procédure décrite dans la rubrique Conditionnement en direct. Lors de la lecture d'une vidéo chiffrée par DRM avec la méthode UrlSource, outre la configuration habituelle d'une vidéo classique, implémentez l'interface AVPDrmDelegate pour récupérer le certificat FairPlay et la clé de la vidéo.
@interface SimplePlayerViewController()<AVPDrmDelegate>
@end
- (void)viewDidLoad {
self.player = [[AliPlayer alloc] init];
self.player.playerView = self.avpPlayerView.playerView;
self.player.drmDelegate = self;
if(the current URL is for a third-party DRM video){
[self.player setPreferPlayerName:@"AppleAVPlayer"];
}
//...
}
// Implement the AVPDrmDelegate.requestCert and requestKey interfaces. Obtain the certificate and key by following the documentation from your third-party DRM provider.
// The following example shows how to obtain a certificate and key from PallyCon. For more information, see https://pallycon.com/docs/en/multidrm.
#pragma mark AVPDrmDelegate
- (NSData *)requestCert:(AliPlayer *)player {
// You can also pre-fetch and cache the certificate to reduce startup latency. If you do, return the cached certificate here.
// If the certificate data is invalid, the player reports an error. You can also check the console for more error information.
// Replace SITE_ID with your own site ID.
const char* url = "https://license.pallycon.com/ri/fpsKeyManager.do?siteId=SITE_ID";
// Request the FairPlay certificate by using an HTTP GET request as required by the DRM provider.
// Avoid blocking this thread for an extended period.
NSData* responseData = [self performAsyncHttpGet:url];
if (!responseData) {
// Handle the exception. The player will report an error.
return nil;
}
// The response data must be Base64-decoded before being returned to the player.
NSString *base64String = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
return [self decodeBase64String:base64String];
}
- (NSData *)requestKey:(AliPlayer *)player data:(NSData *)data {
// Request the key information by using an HTTP POST request as required by the DRM provider.
NSString *urlString = [NSString stringWithFormat:@"https://license-global.pallycon.com/ri/licenseManager.do"];
const char *url = [urlString UTF8String];
// Replace TOKEN_ID with your own token ID.
NSString *headerString = [NSString stringWithFormat:@"pallycon-customdata-v2: TOKEN_ID"];
const char* headers[] = {
[headerString UTF8String]
};
int headerCount = sizeof(headers) / sizeof(headers[0]);
// Avoid blocking this thread for an extended period.
NSData* responseData = [self performAsyncHttpPost:url
headers:headers
headerCount:headerCount
data:data];
if (!responseData) {
// Handle the exception. The player will report an error.
return nil;
}
// If your token's response_format is set to `original`, return the response directly. Otherwise, you must parse the response before returning it.
// For more information, see https://pallycon.com/docs/en/multidrm/license/license-token/#token-json.
// The format and structure of the response can vary significantly among providers. Check the response carefully. If the response cannot be used for decryption, the player reports an error.
return [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}
Client Flutter
Le client Flutter ne prend pas en charge le chiffrement DRM.
Procédure
Intégrez le lecteur Flutter à votre application. Voici les étapes et un exemple de code :
-
Intégrez le SDK Player d'Alibaba Cloud pour Flutter.
-
Créez un lecteur pour diffuser les vidéos.
Suivez la procédure décrite dans la rubrique Fonctionnalités de base. À l'étape 3. Créer une source de lecture, sélectionnez l'une des méthodes suivantes.
Chiffrement vidéo Alibaba Cloud (chiffrement privé)
VidAuth
Lorsque vous lisez une vidéo HLS ou MP4 chiffrée de manière privée avec la méthode VidAuth pour ApsaraVideo for VOD, si la vidéo contient également des flux non chiffrés ou transcodés de manière standard, définissez le type de chiffrement sur AliyunVoDEncryption afin de lire uniquement le flux chiffré de manière privée.
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption); // Optional. If you set this to AliyunVoDEncryption, only privately encrypted video streams are returned.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "The video ID",
region: "The region ID", // Required. The region where ApsaraVideo for VOD is activated. Default: cn-shanghai.
playAuth: "<yourPlayAuth>", // Required. The PlayAuth. Obtain it by calling the GetVideoPlayAuth operation for ApsaraVideo for VOD.
playConfig: value);
});
VidSts
Lorsque vous lisez une vidéo HLS ou MP4 chiffrée de manière privée avec la méthode VidSts pour ApsaraVideo for VOD, si la vidéo contient également des flux non chiffrés ou transcodés de manière standard, définissez le type de chiffrement sur AliyunVoDEncryption afin de lire uniquement le flux chiffré de manière privée.
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption); // Optional. If you set this to AliyunVoDEncryption, only privately encrypted video streams are returned.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "The video ID",
region: "The region ID",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});
Chiffrement privé basé sur licence
UrlSource
Le SDK du lecteur Flutter prend en charge le chiffrement privé basé sur licence avec UrlSource pour les vidéos MP4 à partir de la version 6.8.0, et pour les vidéos HLS (débit unique et débit adaptatif) à partir de la version 6.17.0.
Pour lire une vidéo au format HLS ou MP4 chiffrée via le chiffrement privé basé sur licence avec la lecture UrlSource, appelez l'opération Obtenir l'URL de lecture audio ou vidéo afin de récupérer l'URL de lecture. Vous devez ajouter etavirp_nuyila=1 à l'URL obtenue avant de la transmettre au lecteur. (Ce paramètre est requis uniquement pour les fichiers MP4. Pour les fichiers HLS, utilisez directement l'URL vidéo d'origine.) La configuration du SDK du lecteur reste identique à celle d'une vidéo standard ; aucun paramètre supplémentaire n'est nécessaire.
Exemple d'URL de lecture 1 : https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
Exemple d'URL de lecture 2 : https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
// Playback URL.
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1"
// Create a player instance.
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
fAliplayer.setUrl(playURL);
fAliplayer.prepare();
// List player.
FlutterAliListPlayer fAliListPlayer = FlutterAliPlayerFactory.createAliListPlayer();
fAliListPlayer.addUrlSource(playURL,uid);
fAliListPlayer.moveTo("uid");
// Preload.
FlutterAliPlayerMediaLoader fAliPlayerMediaLoader = FlutterAliPlayerMediaLoader();
fAliPlayerMediaLoader.load(playURL,"duration");
Chiffrement standard HLS
VidAuth
Lorsque vous lisez une vidéo chiffrée selon la norme HLS avec la méthode VidAuth pour ApsaraVideo for VOD, si la vidéo contient également des flux utilisant d'autres types de chiffrement ou des flux transcodés non chiffrés, définissez le type de chiffrement sur HLSEncryption afin de lire uniquement le flux chiffré selon la norme HLS. L'exemple de code suivant illustre cette opération :
Si la fonctionnalité Réécriture du chiffrement standard M3U8 est activée, vous devez appeler setHlsUriToken pour transmettre le jeton utilisateur.
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption); // Optional. Set to HLSEncryption to return only HLS standard encrypted video streams.
FlutterAliplayer.setHlsUriToken("token"); // Optional. If you need to validate the MtsHlsUriToken, use this parameter to pass the token.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "The video ID",
region: "The region ID", // Required. The region where ApsaraVideo for VOD is activated. Default: cn-shanghai.
playAuth: "<yourPlayAuth>", // Required. The PlayAuth. Obtain it by calling the GetVideoPlayAuth operation for ApsaraVideo for VOD.
playConfig: value);
});
VidSts
Lorsque vous lisez une vidéo chiffrée selon la norme HLS avec la méthode VidSts pour ApsaraVideo for VOD, si la vidéo contient également des flux utilisant d'autres types de chiffrement ou des flux transcodés non chiffrés, définissez le type de chiffrement sur HLSEncryption afin de lire uniquement le flux chiffré selon la norme HLS. L'exemple de code suivant illustre cette opération :
Si la fonctionnalité Réécriture du chiffrement standard M3U8 est activée, vous devez appeler setHlsUriToken pour transmettre le jeton utilisateur.
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption); // Optional. If you set this to AliyunVoDEncryption, only privately encrypted video streams are returned.
FlutterAliplayer.setHlsUriToken("token"); // Optional. If you need to validate the MtsHlsUriToken, use this parameter to pass the token.
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "The video ID",
region: "The region ID",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});
UrlSource
Lorsque vous utilisez la méthode UrlSource pour lire un flux en direct ou à la demande chiffré selon la norme HLS, la configuration du SDK du lecteur reste identique à celle d'une vidéo standard.
Pour obtenir l'URL de lecture, nous vous recommandons d'appeler l'opération GetPlayInfo d'ApsaraVideo for VOD.
Une fois la fonctionnalité Réécriture du chiffrement standard M3U8 activée, vous devez ajouter le paramètre MtsHlsUriToken=<token> à l'URL de lecture avant de la transmettre au lecteur. Ce paramètre peut être placé n'importe où dans la chaîne de requête de l'URL.
Exemple d'URL de lecture d'origine : https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8.
Exemple d'URL à transmettre au lecteur : https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=<token>.
// Create a player instance.
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
// The playback URL is for an HLS standard encrypted live or on-demand stream.
fAliplayer.setUrl("The playback URL");
fAliplayer.prepare();
FAQ
Pour consulter les problèmes courants et leurs solutions, reportez-vous à la rubrique FAQ sur le chiffrement vidéo.