ApsaraVideo VOD et ApsaraVideo Live prennent en charge plusieurs méthodes de chiffrement vidéo. Cette rubrique explique comment utiliser le SDK ApsaraVideo Player pour lire des vidéos protégées par le chiffrement propriétaire 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é du contenu incluant le contrôle d'accès, la signature d'URL, l'authentification distante, le chiffrement vidéo et le téléchargement sécurisé.
La Présentation couvre toutes les politiques de sécurité disponibles. Le tableau ci-dessous 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 Alibaba Cloud |
ApsaraVideo VOD utilise un algorithme de cryptographie propriétaire pour fournir une solution de chiffrement vidéo intégrée cloud-appareil. Cela garantit la sécurité des liens de transmission. |
Élevé |
Relativement faible. Il vous suffit d'effectuer des configurations simples et d'intégrer le SDK ApsaraVideo Player. |
|
Chiffrement HTTP Live Streaming (HLS) |
Le chiffrement HLS utilise AES-128 pour chiffrer le contenu vidéo et prend en charge tous les lecteurs compatibles HLS. Toutefois, les clés sont susceptibles d'être volées. |
Élevé |
Élevée. Vous devez configurer un service de gestion des clés et un service d'émission de jetons. De plus, vous devez garantir la sécurité des liens de transmission. |
|
|
DRM commercial |
Prise en charge native des systèmes DRM commerciaux, notamment Apple FairPlay et Google Widevine. Cette méthode 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 est basée sur le nombre d'appels de licence (pour les DRM tiers, reportez-vous aux normes de facturation applicables). Il vous suffit d'intégrer le SDK ApsaraVideo Player. |
Compatibilité du SDK ApsaraVideo Player
Avant d'utiliser le SDK ApsaraVideo Player pour Web afin de lire des vidéos chiffrées, vérifiez la compatibilité des navigateurs et la compatibilité des fonctionnalités. Le SDK ApsaraVideo Player pour Web permet de lire les vidéos chiffrées avec la cryptographie propriétaire d'Alibaba Cloud sur les principaux navigateurs mobiles. Dans le tableau suivant, ✔️ indique une prise en charge et ❌ indique l'absence de prise en charge.
Pour garantir la compatibilité, téléchargez la dernière version du SDK ApsaraVideo Player depuis la page de présentation du SDK.
Remarque : HLS utilise le format M3U8.
|
Client |
Méthode de lecture |
Cryptographie propriétaire (HLS) |
Cryptographie basée sur une licence (HLS) |
Cryptographie basée sur une 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 |
❌ |
❌ |
❌ |
❌ |
✔️ |
✔️ |
❌ |
|
|
Streaming en direct basé sur UrlSource |
❌ |
❌ |
❌ |
❌ |
✔️ |
❌ |
✔️ |
|
|
Streaming en direct basé sur LiveStsSource |
✔️ |
✔️ |
❌ |
❌ |
❌ |
✔️ |
❌ |
|
|
Natif (iOS/Android/Flutter) |
Lecture basée sur UrlSource |
✔️ |
✔️ Requiert le SDK ApsaraVideo Player v6.17.0 ou une version ultérieure. |
✔️ Requiert le SDK ApsaraVideo Player v6.8.0 ou une version ultérieure. |
❌ |
✔️ |
❌ |
✔️ Requiert le SDK ApsaraVideo Player v7.8.0 ou une 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. |
❌ |
|
|
Streaming en direct basé sur UrlSource |
❌ |
❌ |
❌ |
❌ |
✔️ |
❌ |
✔️ Requiert le SDK ApsaraVideo Player v7.8.0 ou une version ultérieure. Non pris en charge sur Flutter. |
|
|
Streaming en direct basé 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 le téléchargement, empêchant ainsi la redistribution non autorisée et le hotlinking. Chiffrement vidéo Alibaba Cloud (chiffrement privé).
Le SDK Player d'Alibaba Cloud gère 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, mais le transcodage des médias requis pour le chiffrement entraîne des frais. Facturation du transcodage des médias.
Configurer le chiffrement privé
Pour configurer le chiffrement vidéo Alibaba Cloud, suivez le guide pratique.
Limitations
Le chiffrement vidéo Alibaba Cloud (chiffrement privé) prend en charge le chiffrement des vidéos aux formats HLS, FLV et MP4. Vous ne pouvez lire ces vidéos qu'avec le lecteur Alibaba Cloud Player. Les clients web prennent uniquement en charge la lecture HLS. Les clients natifs prennent en charge la lecture de tous ces formats.
Chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur une licence)
Le chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur une licence) s'appuie sur le chiffrement privé et permet la lecture directement à partir de l'URL de la vidéo chiffrée, ce qui améliore la vitesse de démarrage. Cette solution est idéale pour les scénarios de vidéos courtes et de dramas courts.
Le chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur une licence) est gratuit, mais le transcodage des médias requis pour le chiffrement entraîne des frais. Facturation du transcodage des médias.
Configurer le chiffrement privé basé sur une licence
Pour configurer le chiffrement vidéo Alibaba Cloud, suivez le guide pratique.
Limitations
Le chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur une licence) prend en charge le chiffrement des vidéos aux formats HLS et MP4. Vous ne pouvez lire ces vidéos chiffrées qu'avec le lecteur Alibaba Cloud Player.
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 et les solutions open source, mais sa mise en œuvre est plus complexe et il est moins sécurisé que les méthodes propriétaires. Chiffrement standard HLS.
Le chiffrement standard HLS est gratuit, mais le transcodage des médias requis pour le chiffrement entraîne des frais. Facturation du transcodage des médias.
Configurer le chiffrement standard HLS
Pour configurer le chiffrement standard HLS, suivez le guide d'intégration.
Limitations
Le chiffrement standard HLS est compatible avec divers lecteurs HLS. Cette rubrique utilise Alibaba Cloud Player à titre d'exemple. Alibaba Cloud Player prend en charge le passage de jetons : le CDN ajuste dynamiquement l'URI de déchiffrement dans le fichier manifeste HLS, en 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 normes industrielles avec les schémas Widevine et FairPlay, offrant une solution complète pour la gestion des vidéos protégées par le droit d'auteur. Chiffrement DRM.
Le chiffrement DRM est appliqué lors du transcodage (des frais de transcodage des médias s'appliquent). Des frais de licence DRM s'appliquent lorsqu'un client demande une licence de lecture. Facturation 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.
Limitations
Actuellement, vous ne pouvez lire les vidéos chiffrées avec DRM qu'avec le lecteur Alibaba Cloud Player.
Chiffrement DRM tiers
ApsaraVideo VOD prend en charge le chiffrement DRM tiers, permettant un flux de travail de bout en bout, de la production vidéo dans ApsaraVideo for Media Processing en passant par le chiffrement DRM tiers jusqu'à la lecture avec le SDK Alibaba Cloud Player.
Le chiffrement DRM est appliqué lors du transcodage (des frais de transcodage des médias s'appliquent). Des frais de licence DRM s'appliquent lorsqu'un client demande une licence de lecture. Facturation 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 le web, examinez la compatibilité des navigateurs avec le chiffrement propriétaire d'Alibaba Cloud.
Le mode H5 prend en charge les navigateurs de bureau et mobiles. Prise en charge des fonctionnalités.
Pour des raisons de sécurité, le chiffrement propriétaire d'Alibaba Cloud ne vous permet pas de déboguer avec de véritables vidéos chiffrées.
Procédure
Intégrez le lecteur web dans votre page web.
Suivez le guide Démarrage rapide pour importer le SDK ApsaraVideo Player pour le web dans votre page.
-
Sélectionnez une méthode de chiffrement et démarrez la lecture.
Le code suivant montre comment intégrer le lecteur.
Chiffrement propriétaire Alibaba Cloud
VOD (VidAuth)
Pour lire une vidéo chiffrée avec le chiffrement propriétaire d'Alibaba Cloud en utilisant la méthode VidAuth d'ApsaraVideo VOD, **vous devez également transmettre le paramètre encryptType: 1 pour activer le chiffrement propriétaire. Cela n'est pas requis pour la lecture de vidéos standard.**
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>VOD Proprietary Encryption Playback Test Case</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
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.')
});
</script>
</body>
</html>
Live (LiveStsSource)
Pour lire un flux en direct qui utilise le chiffrement propriétaire avec la méthode LiveStsSource, vous devez fournir l'URL du flux et des identifiants temporaires STS. Pour savoir comment générer les identifiants, consultez la section Obtenir un jeton STS.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>Live Proprietary Encryption Playback Test Case</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.35.6/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.35.6/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
var 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.
regionId: '<region of your video>',// Required. The service region, such as cn-shanghai, eu-central-1, or ap-southeast-1.
useHls2: false,
},function(player){
console.log('The player is created.')
});
</script>
</body>
</html>
-
Pour lire des vidéos à la demande chiffrées dans les navigateurs sur les versions iOS antérieures à 17.1, vous devez déployer un script de plugin de lecteur supplémentaire. Suivez ces étapes :
Sur les versions 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 restreignent les services 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 web de lecture vidéo est
https://www.aliyun.com/a/b.html, vous devez déployer le script vershttps://www.aliyun.com/a/aliplayer-worker-min.js, qui se trouve dans le même répertoire que la page web.-
Transmettez cette URL lorsque vous initialisez le 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 à la version du plugin.
Si votre page web s'exécute au sein d'une application iOS empaquetée personnalisée (comme uni-app), ajoutez votre domaine à
WKAppBoundDomainsdans le fichierInfo.plistde l'application pour activer Service Worker dansWKWebView. Domaines liés à l'application.
Chiffrement standard HLS
VOD (VidAuth)
Lors de la lecture d'une vidéo avec chiffrement standard HLS à l'aide de la méthode VidAuth d'ApsaraVideo VOD, **si la vidéo contient également d'autres flux non chiffrés selon le standard HLS ou des flux transcodés standard, vous pouvez définir le paramètre EncryptType sur HLSEncryption pour filtrer et lire uniquement le flux chiffré selon le standard HLS**.
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 à l'aide de la méthode VidSts d'ApsaraVideo VOD, si la vidéo contient également d'autres flux non chiffrés selon le standard HLS ou des flux transcodés standard, vous pouvez définir le paramètre EncryptType sur HLSEncryption pour filtrer et lire uniquement le flux chiffré selon le standard HLS.
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 est identique à celle de la lecture 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 à l'aide de la méthode VidSts d'ApsaraVideo VOD, **vous devez également transmettre le paramètre isDrm: true**.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>VOD DRM Encryption Test Case</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
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.')
});
</script>
</body>
</html>
Live (LiveStsSource)
Pour lire un flux en direct chiffré par DRM à l'aide de la méthode LiveStsSource, fournissez l'URL du flux et des informations d'identification temporaires STS. Pour savoir comment générer des informations d'identification temporaires STS, consultez Obtenir un jeton STS.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<title>Live DRM Encryption Test Case</title>
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.16.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script>
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.')
});
</script>
</body>
</html>
Android
Procédure
Intégrez le SDK Alibaba Cloud Player pour Android à votre application. Les sections suivantes détaillent les étapes à suivre et fournissent des exemples de code.
-
Intégrez le SDK Alibaba Cloud Player pour Android.
-
Créez un lecteur pour lire une vidéo.
Suivez les instructions relatives aux Fonctionnalités de base. Pour l'Étape 3. Créer une DataSource, choisissez l'une des méthodes suivantes en fonction de vos besoins.
Chiffrement vidéo Alibaba Cloud (chiffrement privé)
Remarques d'utilisation
Les vidéos HLS chiffrées avec le chiffrement vidéo Alibaba Cloud (chiffrement privé) peuvent être lues via une URL après le transcodage. Avant le transcodage, associez une licence au même compte (Gérer la licence), puis définissez le paramètre EncryptType lors de la création d'un groupe de modèles de transcodage. Exemple :
Après avoir créé le modèle, ne le modifiez pas et ne l'enregistrez pas depuis la console. Sinon, la méthode de chiffrement sera é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 chiffrée de manière privée à l'aide de ApsaraVideo VOD VidAuth, **si la vidéo contient également des flux avec 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 chiffré de manière privée**.
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 chiffrée de manière privée à l'aide de ApsaraVideo VOD VidSts, si la vidéo contient également des flux avec 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 chiffré de manière privée.**
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 chiffré de manière privée au format HLS ou FLV à l'aide de l'objet ApsaraVideo Live LiveSts, vous devez transmettre l'URL et un identifiant STS, **et définir le type de chiffrement vidéo sur AliEncryption.** L'exemple de code suivant illustre cette procédure :
-
Créez une source de données.
Vous devez utiliser
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 des identifiants STS.
Pendant la lecture en direct chiffrée, la clé de chiffrement peut être renouvelée. Lors d'un renouvellement de clé, le lecteur utilise l'identifiant STS pour demander la nouvelle clé. Vous devez surveiller la validité de l'identifiant STS, car un identifiant invalide interrompra 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 avec succès un nouvel identifiant STS, vous devez appeler la méthode
updateLiveStsInfopour le mettre à jour. Si vous ne parvenez pas à obtenir un nouvel identifiant, nous vous recommandons d'arrêter la lecture. Si vous ne mettez pas à jour l'identifiant STS, le lecteur continuera d'utiliser l'ancien pour demander des clés après son expiration. Si l'identifiant STS devient invalide, cela peut entraîner un échec de la lecture ou une corruption de la sortie vidéo.mAliyunVodPlayer.updateStsInfo(stsInfo);
Chiffrement vidéo Alibaba Cloud (chiffrement privé basé sur une licence)
Remarques d'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 le transcodage. Avant le transcodage, associez une licence au même compte (Gérer la licence), puis définissez le paramètre EncryptType lors de la création d'un groupe de modèles de transcodage. Exemple :
Après avoir créé le modèle, ne le modifiez pas et ne l'enregistrez pas depuis la console. Sinon, la méthode de chiffrement sera é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
Seules les versions 6.8.0 et ultérieures du SDK Alibaba Cloud Player pour Android prennent en charge la lecture de vidéos MP4 chiffrées de manière privée basées sur une licence à l'aide de UrlSource. Les versions 6.17.0 et ultérieures prennent en charge les vidéos HLS chiffrées de manière privée basées sur une licence (débit unique et débit adaptatif).
Pour lire une vidéo chiffrée de manière privée basée sur une licence au format HLS ou MP4 à l'aide de UrlSource, appelez l'opération GetPlayInfo pour 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. Vous pouvez placer ce paramètre n'importe où dans la chaîne de requête. Pour HLS, vous pouvez utiliser l'URL vidéo d'origine.** Configurez le SDK du lecteur 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
Lors de la lecture d'une vidéo utilisant le chiffrement HLS standard via ApsaraVideo VOD VidAuth, **si la vidéo contient également d'autres flux chiffrés en HLS non standard ou des flux transcodés standard, vous pouvez définir le type de chiffrement sur HLSEncryption pour lire uniquement le flux chiffré en HLS standard**. L'exemple de code ci-dessous illustre cette configuration :
Si vous avez activé l'option Réécriture des fichiers M3U8 de 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
Lors de la lecture d'une vidéo utilisant le chiffrement HLS standard via ApsaraVideo VOD VidSts, **si la vidéo contient également d'autres flux chiffrés en HLS non standard ou des flux transcodés standard, vous pouvez définir le type de chiffrement sur HLSEncryption pour lire uniquement le flux chiffré en HLS standard**. L'exemple de code ci-dessous illustre cette configuration :
Si vous avez activé l'option Réécriture des fichiers M3U8 de 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 du lecteur comme pour une vidéo standard.
Nous vous recommandons d'utiliser ApsaraVideo VOD. Appelez l'opération GetPlayInfo pour obtenir l'URL de lecture de la vidéo et transmettez-la au lecteur.
Si vous avez activé l'option Réécriture des fichiers M3U8 de 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 Alibaba Cloud
Sur Android, nous vous recommandons d'utiliser une vue SurfaceView pour garantir une lecture correcte des vidéos hautement sécurisées.
VidSts
Commencez par configurer le chiffrement DRM comme décrit dans la rubrique Configuration du chiffrement DRM pour ApsaraVideo VOD. Lors de la lecture d'une vidéo chiffrée avec 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 Configuration du chiffrement DRM pour ApsaraVideo Live. Pour lire un flux en direct chiffré avec DRM à l'aide de l'objet LiveSts, vous devez transmettre l'URL et les informations d'identification STS, **et définir le type de chiffrement vidéo sur WideVine_FairPlay**. L'exemple de code ci-dessous illustre cette procédure :
-
Créez une source de données.
Vous devez utiliser
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 des informations STS.
Pendant la lecture en direct chiffrée, la clé de chiffrement peut être renouvelée. Lors d'un renouvellement de clé, le lecteur utilise les informations d'identification STS pour demander la nouvelle clé. Vous devez surveiller la validité des informations d'identification STS, car des informations invalides interrompront 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 avec succès de nouvelles informations d'identification STS, vous devez appeler la méthode
updateLiveStsInfopour les mettre à jour. Si vous ne parvenez pas à obtenir de nouvelles informations, nous vous recommandons d'arrêter la lecture. Si vous ne mettez pas à jour les informations STS, le lecteur continuera d'utiliser les anciennes informations pour demander des clés après leur expiration. Si les informations STS deviennent invalides, cela peut entraîner un échec de la lecture ou une corruption de la sortie vidéo.mAliyunVodPlayer.updateStsInfo(stsInfo);
Chiffrement DRM tiers
Cette fonctionnalité nécessite le SDK du lecteur version 7.8.0 ou ultérieure.
UrlSource
Cette fonctionnalité prend en charge uniquement le schéma DRM Widevine pour les protocoles HLS et DASH.
Consultez d'abord la rubrique Empaquetage VOD pour configurer le chiffrement DRM. Lorsque vous lisez une vidéo chiffrée avec DRM à l'aide de la méthode UrlSource, en plus des configurations pour une vidéo normale, vous devez également implémenter l'interface DrmCallback pour 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 le SDK Player pour iOS à votre application. Voici les étapes et des exemples de code :
-
Intégrez le SDK Player pour iOS.
-
Créez un lecteur pour charger et lire les vidéos.
Suivez les instructions de la section Fonctionnalités de base. À l'étape Étape 3. Créer une source de données, utilisez l'une des méthodes suivantes en fonction de 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 à l'aide de la méthode VidAuth d'ApsaraVideo VOD, **si la vidéo contient également des flux non chiffrés ou transcodés standard, définissez le type de chiffrement sur AliyunVoDEncryption pour 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
Lorsque vous lisez une vidéo HLS ou MP4 chiffrée de manière privée à l'aide de la méthode VidSts d'ApsaraVideo VOD, **si la vidéo contient également des flux non chiffrés ou transcodés standard, définissez le type de chiffrement sur AliyunVoDEncryption pour lire uniquement 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 à l'aide de la méthode LiveStsSource, vous devez fournir l'URL du flux et un identifiant STS, et **définir le type de chiffrement vidéo sur ENCRYPTION_TYPE_ALIVODENCRYPTION**. L'exemple de code suivant illustre cette procédure :
-
Créez une source de données.
Vous devez passer
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 des identifiants STS.
Pendant la lecture d'un flux en direct chiffré, la clé de chiffrement peut être renouvelée. Dans ce cas, le lecteur utilise l'identifiant STS pour demander la nouvelle clé. Vous devez surveiller la validité de l'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; }];RemarqueAprès avoir obtenu un nouvel identifiant STS, vous devez appeler la méthode
updateLiveStsInfopour le mettre à jour. Si la tentative d'obtention d'un nouvel identifiant échoue, nous vous recommandons d'arrêter la lecture. Si vous ne mettez pas à jour 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 une licence Alibaba Cloud
UrlSource for VOD
Seul le SDK Player pour iOS version 6.8.0 et ultérieure prend en charge la lecture de vidéos MP4 chiffrées de manière privée basées sur une licence à l'aide de UrlSource. La version 6.17.0 et ultérieure prend en charge les vidéos HLS chiffrées de manière privée basées sur une licence avec des débits binaires uniques et adaptatifs.
Pour lire une vidéo HLS ou MP4 chiffrée de manière privée basée sur une licence à l'aide de la méthode UrlSource, vous pouvez appeler l'opération GetPlayInfo pour obtenir l'URL de lecture de la vidéo. Une fois que vous avez obtenu l'URL de la vidéo, vous devez ajouter le paramètre etavirp_nuyila=1 à l'URL avant de la transmettre au lecteur. Vous pouvez placer ce paramètre n'importe où dans la chaîne de requête. Ce paramètre est requis uniquement pour les vidéos MP4. Pour les vidéos HLS, vous pouvez utiliser l'URL de la vidéo d'origine. La configuration du lecteur est identique à celle de la lecture d'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
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 à l'aide du chiffrement standard HLS avec la méthode VidAuth d'ApsaraVideo VOD, **si la vidéo contient également des flux non chiffrés ou transcodés standard, définissez le type de chiffrement sur HLSEncryption pour lire uniquement le flux avec chiffrement standard HLS**. L'exemple de code suivant illustre cette procédure :
Si vous avez activé la fonctionnalité Réécriture du chiffrement standard M3U8, vous devez appeler 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
Lorsque vous lisez une vidéo chiffrée à l'aide du chiffrement standard HLS avec la méthode VidSts d'ApsaraVideo VOD, **si la vidéo contient également des flux non chiffrés ou transcodés standard, définissez le type de chiffrement sur HLSEncryption pour lire uniquement le flux avec chiffrement standard HLS**. L'exemple de code suivant illustre cette procédure :
Si vous avez activé la fonctionnalité Réécriture du chiffrement standard M3U8, vous devez appeler 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
Lors de l'utilisation de la méthode UrlSource pour lire un flux avec chiffrement standard HLS, la configuration du lecteur est identique à celle de la lecture d'une vidéo standard. Aucun paramètre supplémentaire n'est requis.
Nous vous recommandons d'utiliser ApsaraVideo VOD. Vous pouvez appeler l'opération GetPlayInfo pour obtenir l'URL de lecture de la vidéo et transmettre l'URL au lecteur.
Si vous avez activé la fonctionnalité Réécriture du chiffrement standard M3U8, **vous devez ajouter MtsHlsUriToken=<token> à l'URL de la vidéo avant de la transmettre au lecteur. Vous pouvez placer ce paramètre 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 effectuer un appel global unique à la méthode setFairPlayCertID dans AliPlayerGlobalSettings avant [self.player prepare] afin de définir l'identifiant du certificat. Vous pouvez obtenir cet identifiant dans la console ApsaraVideo VOD > Configuration Management > Media Processing Configuration > DRM Certificate Management.
[AliPlayerGlobalSettings setFairPlayCertID:@"Your certificate ID obtained from the console"];
VidSts pour VOD
Reportez-vous d'abord à la rubrique Configurer le chiffrement DRM pour VOD pour configurer le chiffrement DRM. Lorsque vous lisez une vidéo chiffrée par DRM en utilisant la méthode VidSts d'ApsaraVideo VOD, la configuration est identique à celle d'une lecture vidéo standard. Aucun paramètre supplémentaire n'est requis.
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 pour le direct
Reportez-vous d'abord à la rubrique Configurer le chiffrement DRM pour le streaming en direct pour configurer le chiffrement DRM. Pour lire un flux en direct chiffré par DRM à l'aide de la méthode LiveStsSource, vous devez fournir l'URL du flux et des informations d'identification STS, et **définir le type de chiffrement vidéo sur ENCRYPTION_TYPE_FAIRPLAY**. L'exemple de code suivant illustre cette procédure :
-
Créez une source de données.
Vous devez transmettre
AVPLiveStsSourceen tant que 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]; -
Écoutez l'invalidation des informations d'identification STS.
Lors de la lecture en direct chiffrée, la clé de chiffrement peut être renouvelée. Dans ce cas, le lecteur utilise les informations d'identification STS pour demander la nouvelle clé. Vous devez surveiller la validité de ces informations, car une invalidité 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; }];RemarqueAprès avoir obtenu de nouvelles informations d'identification STS, vous devez appeler la méthode
updateLiveStsInfopour les mettre à jour. Si la tentative d'obtention de nouvelles informations échoue, nous vous recommandons d'arrêter la lecture. Si vous ne mettez pas à jour les informations d'identification STS, le lecteur tente d'utiliser les informations expirées 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 le SDK Player version 7.8.0 ou ultérieure.
Vous devez utiliser AppleAVPlayer pour lire les vidéos chiffrées avec FairPlay. Avant le début de la lecture, appelez
[self.player setPreferPlayerName:@"AppleAVPlayer"]pour basculer vers le moteur de lecture approprié. Lorsque vous lisez des vidéos non chiffrées par DRM, vous devez appeler[self.player setPreferPlayerName:@""]pour restaurer le moteur par défaut.
UrlSource pour FairPlay
Seul le schéma FairPlay via le protocole HLS est pris en charge.
Reportez-vous d'abord à la rubrique Live Packaging pour configurer le chiffrement DRM. Lorsque vous lisez une vidéo chiffrée par DRM à l'aide de la méthode UrlSource, en plus d'utiliser la même configuration que pour une vidéo standard, vous devez également implémenter l'interface AVPDrmDelegate pour obtenir le certificat FairPlay et la clé 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 dans votre application. Les étapes et l'exemple de code sont les suivants :
-
Intégrez le SDK Player Alibaba Cloud pour Flutter.
-
Créez un lecteur pour lire les vidéos.
Suivez les instructions de la rubrique Fonctionnalités de base. À l'étape Étape 3. Créer une source de lecture, sélectionnez l'une des méthodes suivantes.
Chiffrement vidéo Alibaba Cloud (chiffrement privé)
VidAuth
Lors de la lecture d'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 standard, définissez le type de chiffrement sur AliyunVoDEncryption pour 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
Lors de la lecture d'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 standard, définissez le type de chiffrement sur AliyunVoDEncryption pour 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 une licence
UrlSource
Le SDK du lecteur Flutter prend en charge le chiffrement privé basé sur une licence avec UrlSource pour les vidéos MP4 à partir de la version 6.8.0, et pour les vidéos HLS (bitrate unique et bitrate adaptatif) à partir de la version 6.17.0.
Lorsque vous lisez une vidéo au format HLS ou MP4 chiffrée à l'aide du chiffrement privé basé sur une licence avec la lecture basée sur UrlSource, appelez l'opération Obtenir l'URL de lecture audio ou vidéo pour obtenir 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, vous pouvez utiliser directement l'URL vidéo d'origine.) La configuration du SDK du lecteur est identique à celle d'une vidéo standard et 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"
// 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
Lors de la lecture d'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 avec d'autres types de chiffrement ou des flux transcodés non chiffrés, vous pouvez définir le type de chiffrement sur HLSEncryption afin de lire uniquement le flux chiffré selon la norme HLS**. Le code suivant illustre cette configuration :
Si l'option 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
Lors de la lecture d'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 avec d'autres types de chiffrement ou des flux transcodés non chiffrés, vous pouvez définir le type de chiffrement sur HLSEncryption afin de lire uniquement le flux chiffré selon la norme HLS**. Le code suivant illustre cette configuration :
Si l'option 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 dans ApsaraVideo for VOD.
Une fois l'option 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
Problèmes courants et solutions : Video Encryption FAQ.