视频点播和视频直播提供多种视频加密方式,结合阿里云播放器SDK进行解密播放,可有效防止视频内容被盗链、非法下载和传播。本文将介绍如何使用阿里云播放器SDK播放阿里云视频加密(私有加密)、HLS标准加密以及DRM加密的视频。
阿里云视频点播具备一套完善的内容安全保护机制,旨在确保视频内容不被盗链、非法下载及传播。该安全机制包括访问限制、URL鉴权、远程鉴权、视频加密及安全下载等多项措施。
有关访问限制、URL鉴权及远程鉴权等安全机制的详细内容请参见视频安全概述,本文主要介绍三种视频加密方式的视频播放。三种视频加密的简介如下:
安全机制 | 安全手段 | 特点 | 安全等级 | 使用门槛 |
安全机制 | 安全手段 | 特点 | 安全等级 | 使用门槛 |
视频加密 | 阿里云视频加密(私有加密) | 云端一体的视频加密解决方案,采用私有加密算法,并确保链路的安全传输。 | 高 | 较低,简单配置并集成阿里云播放器即可。 |
HLS标准加密 | HLS通用加密方案,使用AES_128对内容加密,适配所有HLS播放器,但密钥容易被窃取。 | 较高 | 高,需自建密钥管理和令牌颁发服务,并确保链路传输安全。 | |
商业DRM | 苹果Fairplay、谷歌Widevine的原生支持,安全级别很高,满足大多数版权内容提供商的要求。 | 高 | 高,按调用License次数收费,只需集成阿里云播放器SDK。 |
终端 | 播放方式 | HLS(M3U8)私有加密 | HLS(M3U8)license加密 | MP4私有加密(MP4 license加密) | 直播FLV私有加密 | HLS(M3U8)标准加密 | HLS(M3U8) DRM加密 |
终端 | 播放方式 | HLS(M3U8)私有加密 | HLS(M3U8)license加密 | MP4私有加密(MP4 license加密) | 直播FLV私有加密 | HLS(M3U8)标准加密 | HLS(M3U8) DRM加密 |
Web端 | 点播UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ |
点播VidAuth | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | |
点播VidSts | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | |
直播UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | |
直播LiveStsSource | ✔️ | ✔️ | ❌ | ❌ | ❌ | ✔️ | |
Native端(iOS/Android/Flutter) | 点播UrlSource | ✔️ | SDK版本需为6.17.0及以上版本 | SDK版本需为6.8.0及以上版本 | ❌ | ✔️ | ❌ |
点播VidAuth | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | |
点播VidSts | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ flutter端不支持。 | |
直播UrlSource | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | |
直播LiveStsSource | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ flutter端不支持。 |
阿里云视频加密通过对视频数据进行加密,即使下载到本地,视频仍保持加密状态,有效防止恶意二次分发、泄露和盗链问题。详情请参见相关文档阿里云视频加密(私有加密)。
阿里云播放器SDK封装了解密逻辑与服务端交互,只需配置加密转码并集成播放器,即可低成本实现加密播放。
阿里云视频加密(私有加密)属于免费服务,但需通过视频转码实现加密功能。转码操作将产生服务费用,具体计费标准请参考媒资转码计费。
配置私有加密
阿里云视频加密的详细流程及配置,请参见如何使用。
阿里云视频加密(私有加密)功能支持对HLS(M3U8)、FLV和MP4格式的视频进行加密操作。该功能仅支持通过阿里云播放器进行播放。在Web端,仅支持HLS格式的播放,而在Native端则支持所有格式的播放。
HLS标准加密采用AES-128对视频内容加密,兼容所有HLS播放器,支持自研或开源播放器,灵活性高但门槛更高、安全性较低。详情请参见HLS标准加密。
阿里云视频加密(HLS标准加密)属于免费服务,但需通过视频转码实现加密功能。转码操作将产生服务费用,具体计费标准请参考媒资转码计费。
配置HLS标准加密
HLS标准加密的详细流程及配置,请参见接入流程。
HLS标准加密兼容各类HLS播放器,用户可自选播放器。本文以阿里云播放器为例,介绍如何播放HLS加密视频。阿里云播放器支持令牌传递,CDN会动态调整M3U8文件中的解密URI,并附带用户令牌,供业务方验证。
阿里云视频点播支持行业通用DRM加密(Digital Rights Management),一站式管理版权视频,兼容WideVine和Fairplay方案。详情请参见DRM加密。
DRM加密基于转码实现,但在转码输出视频时,仅产生转码费用,不会产生DRM加密费用;当在终端请求播放DRM加密视频时会产生DRM加密费用,播放端根据终端DRM加密视频License的请求次数,按次计算费用。计费详情请参见DRM计费。
配置DRM加密
仅支持通过视频点播控制台开启,详细操作请参见配置DRM加密。
经过DRM加密的视频,目前仅支持通过阿里云播放器播放。
使用阿里云Web播放器SDK之前,请先了解浏览器及阿里云视频加密(私有加密)视频播放功能的适配情况,具体如下:
H5 模式支持桌面端和移动端浏览器环境,具体支持情况请参见功能适配说明。
出于安全考虑,阿里云视频加密(私有加密)不支持用真实的加密视频调试。
用户可以在自己的Web页面中嵌入Web播放器并实现播放。
请先参考快速接入,将Web播放器SDK引入到自己的页面中。
选择相应的加密方式并进行播放。
用户可以在自己的Web页面中嵌入Web播放器并实现播放。代码示例如下:
经过私有加密的视频通过点播VidAuth方式播放时,与播放普通视频相比,需额外传入参数encryptType: 1,来启用私有加密。
<!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>点播私有加密播放测试用例</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>',// 必选参数,可以通过点播控制台(路径:媒资库>音/视频)查询。示例:1e067a2831b641db90d570b6480f****。
playauth : '<your PlayAuth>',// 必选参数,参数值可通过调用GetVideoPlayAuth接口获取。
encryptType: 1, // 必选参数,当播放私有加密流时需要设置本参数值为1。其它情况无需设置。
playConfig:{EncryptType:'AliyunVoDEncryption'}, // 当您输出的M3U8流中,含有其他非私有加密流时,需要指定此参数。
// authTimeout: 7200, // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值7200。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
},function(player){
console.log('The player is created.')
});
</script>
</body>
</html>
如果希望支持 iOS 17.1 以下浏览器的点播私有加密,需要您自行部署一个额外的播放器插件脚本,具体步骤如下:
原理说明:iOS 17.1 以下私有加密需要一个额外的插件,该插件使用了 Service Worker 技术,由于浏览器的安全策略限制,仅允许网站访问和当前网站同源的 service worker 脚本,因此需要您将播放器插件脚本部署到和您网站相同的域名下使用。
一、下载脚本:https://g.alicdn.com/apsara-media-box/imp-web-player/<版本号>/aliplayer-worker-min.js
二、部署脚本:假设您播放私有加密视频的网站为 https://www.aliyun.com/a/b.html,您需要将脚本部署到 https://www.aliyun.com/a/aliplayer-worker-min.js,即和当前网站同级目录。
三、初始化播放器时传入此地址:
new Aliplayer({
// ...其它参数
swScriptURL: 'https://www.aliyun.com/a/aliplayer-worker-min.js' // 请填写完整的插件脚本地址,确保此地址可以访问
})
注意:请确保播放器的版本和插件的版本完全一致。
经过私有加密的视频通过直播LiveStsSource方式播放时,需要传入URL和STS临时身份凭证等信息,STS临时身份凭证的生成请参见使用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>直播私有加密播放测试用例</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, // 直播设置为true。
source: '<your live stream url>',// 必选参数。播放地址为经过私有加密的HLS直播流地址。
accessKeyId: '<your AccessKey ID>',// 必选参数。STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
accessKeySecret: '<your AccessKey Secret>',//必选参数。STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
securityToken: '<your STS token>',// 必选参数。STS安全令牌,需要调用STS服务的AssumeRole接口生成。
domain: '<your Domain>',// 必选参数。直播流的拉流域名。
app:'<your App Name>',// 必选参数。直播流的AppName。
stream:'<your Stream Name>',// 必选参数。直播流的StreamName。
regionId: '<region of your video>',// 必选参数。服务地域。如cn-shanghai、eu-central-1, ap-southeast-1等。
},function(player){
console.log('The player is created.')
});
</script>
</body>
</html>
经过HLS标准加密的视频通过点播VidAuth方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
let player = new Aliplayer({
id:'J_prismPlayer',
vid:'<your video ID>', // 必选参数。音视频ID。示例:1e067a2831b641db90d570b6480f****。
playauth:'<your PlayAuth>', // 必选参数。音视频播放凭证。
playConfig: { // 可选参数
MtsHlsUriToken: '', // 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递。
EncryptType: 'HLSEncryption', // 可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流。
},
});
经过HLS标准加密的视频通过点播VidSts方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
let player = new Aliplayer({
id: 'J_prismPlayer',
vid : '<your video ID>', // 必选参数。音视频ID可以在音视频上传完成后通过控制台(路径:媒资库 > 音/视频。)或服务端接口(SearchMedia )获取。示例:1e067a2831b641db90d570b6480f****。
accessKeyId: '<your AccessKey ID>', // 必选参数。STS临时AK对的访问密钥ID,生成STS安全令牌时返回。
securityToken: '<your STS token>', // 必选参数。STS安全令牌,需要调用STS服务的AssumeRole接口生成。
accessKeySecret: '<your AccessKey Secret>', // 必选参数。STS临时AK对的访问密钥,生成STS安全令牌时返回。
region: '<region of your video>', // 必选参数。媒体资源所在的地域标识。如cn-shanghai、eu-central-1, ap-southeast-1等。
playConfig: { // 可选参数
MtsHlsUriToken: '', // 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递。
EncryptType: 'HLSEncryption', // 可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流。
},
};
经过HLS标准加密的视频通过直播或点播UrlSource方式播放时,与播放普通视频一致,无需额外设置参数。
let player = new Aliplayer({
id:'J_prismPlayer',
source:'<your play URL>', // 播放地址,直播或者是点播地址。
isLive: true, // 是否为直播播放。
});
经过DRM加密的视频通过点播VidSts方式播放,与播放普通视频相比,需要额外传入参数isDrm: true,来启用DRM加密。
<!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>点播DRM加密测试用例</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>',// 必选参数,可以通过点播控制台(路径:媒资库>音/视频)查询。示例:1e067a2831b641db90d570b6480f****。
accessKeyId: '<your AccessKey ID>',// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
securityToken: '<your STS token>',// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
accessKeySecret: '<your AccessKey Secret>',// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
region: '<region of your video>', // 必选参数,媒体资源所在的区域。如cn-shanghai、eu-central-1, ap-southeast-1等。
certId: '<your certificate ID>', // 苹果设备播放时此参数必选。用于请求苹果证书,可根据DRM加密的实现到视频点播或视频直播控制台获取。
// authTimeout: 7200, // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值7200。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
},function(player){
console.log('The player is created.')
});
</script>
</body>
</html>
经过DRM加密的视频通过直播LiveStsSource方式播放,需要传入URL和STS临时身份凭证等信息,STS临时身份凭证的生成请参见使用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>直播DRM加密测试用例</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, // 直播设置为true。
isDrm: true,
source: '<your live stream url>',// 必选参数,播放地址为经过DRM加密的直播流地址。
accessKeyId: '<your AccessKey ID>',// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
securityToken: '<your STS token>',// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
accessKeySecret: '<your AccessKey Secret>',// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
region: '<region of your video>', // 必选参数,媒体资源所在的服务地域。如cn-shanghai、eu-central-1, ap-southeast-1等。
certId: '<your certificate ID>', // 苹果设备播放时此参数必选,用于请求苹果证书,可根据DRM加密的实现到视频点播或视频直播控制台获取。
},function(player){
console.log('The player is created.')
});
</script>
</body>
</html>
用户可以通过快速集成Android播放器到自己的应用中并实现播放。步骤及示例代码如下:
集成阿里云Android播放器SDK。
Android播放器SDK的集成操作请参见快速集成。
创建播放器播放视频。
创建播放器的操作请参见创建播放器。其中,步骤3.创建DataSource的操作请根据实际需求选择以下任一方式创建。
注意事项
经过阿里云视频加密(私有加密)加密过的HLS格式视频,支持通过创建转码模板进行转码后通过URL进行播放。在进行转码之前,您需首先在同一账号下完成License绑定(详情参见管理License),然后使用EncryptType
参数来创建转码模板组,示例如下:
创建后,您无法通过控制台对模板进行修改或保存,否则加密方式将被覆盖。
[{
"TranscodeTemplateId": "",
"TemplateName": "740PH264HLS本地加密",
"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"
}
}]
仅6.8.0及以后版本的Android播放器SDK支持通过点播UrlSource方式播放MP4格式的私有加密视频,6.17.0及以后的版本支持HLS格式(单码率、多码率)的私有加密视频。
经过私有加密输出的HLS格式或MP4格式视频通过点播UrlSource方式播放时,可调用GetPlayInfo - 获取音视频播放地址接口获取视频的播放地址,获取到的视频URL(仅限MP4需此参数,HLS不需要)需要您按协议在URL尾部自行拼接etavirp_nuyila=1
后再传入播放器进行播放,播放器SDK的配置与播放普通视频配置一致,无需额外设置参数。
播放URL示例:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
// 播放地址
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
// 播放器
UrlSource urlSource = new UrlSource();
urlSource.setUri(playURL);// 必选参数,视频的播放地址(URL),可调用GetPlayInfo接口获取视频URL
aliPlayer.setDataSource(urlSource);
aliPlayer.prepare();
// 短视频播放器
AliListPlayer aliyunListPlayer = AliPlayerFactory.createAliListPlayer(getApplicationContext());
// 添加UrlSource播放源
aliyunListPlayer.addUrl(playURL,uid);
aliyunListPlayer.moveTo(uid);
//预加载
MediaLoader mediaLoader = MediaLoader.getInstance();
mediaLoader.load(playURL,"duration");
经过私有加密输出的HLS格式或MP4格式视频通过点播VidAuth方式播放时,若当前视频存在其他非私有加密类型的加密流或普通转码流时,可通过设置视频加密类型为AliyunVoDEncryption来筛选私有加密流进行播放。
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// 可选参数,设置加密类型为AliyunVoDEncryption时,则只会返回经过私有加密的视频流。
vidAuth.setPlayConfig(vidPlayerConfigGen);
vidAuth.setVid("Vid信息");// 必选参数,视频ID(VideoId)。
vidAuth.setPlayAuth("<yourPlayAuth>");// 必选参数,播放凭证,需要调用点播服务的GetVideoPlayAuth接口生成。
vidAuth.setRegion("接入地域");// 5.5.5.0及之后版本播放器SDK,本参数已弃用,无需设置region,播放器会自动解析region;5.5.5.0之前版本播放器SDK,本参数必选,点播服务的接入地域,默认为cn-shanghai。
// vidAuth.setAuthTimeout(3600); // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
aliPlayer.setDataSource(vidAuth);
经过私有加密输出的HLS格式或MP4格式视频通过点播VidSts方式播放时,若当前视频存在其他非私有加密类型的加密流或普通转码流时,可通过设置视频加密类型为AliyunVoDEncryption来筛选私有加密流进行播放。
VidSts vidSts = new VidSts();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// 可选参数,设置加密类型为AliyunVoDEncryption时,则只会返回经过私有加密的视频流。
vidSts.setPlayConfig(vidPlayerConfigGen);
vidSts.setVid("Vid信息");// 必选参数,视频ID(VideoId)。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
vidSts.setSecurityToken("<yourSecurityToken>");// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
vidSts.setRegion("接入地域");// 必选参数,点播服务的接入地域,默认为cn-shanghai。
// vidSts.setAuthTimeout(3600); // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
aliPlayer.setDataSource(vidSts);
经过私有加密输出的HLS格式或者FLV格式视频通过直播LiveStsSource方式播放时,需要传入URL和STS凭证,并设置视频加密类型为AliEncryption。示例代码如下:
创建DataSource。
需传递AVPLiveStsSource作为播放源。
// 创建LiveSts,EncryptionType需要设置为AliEncryption
LiveSts liveSts = new LiveSts();
liveSts.setUrl("<your live stream url>");// 必选参数,播放地址为经过私有加密的HLS直播流地址。
liveSts.setAccessKeyId("<your AccessKey ID>");// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
liveSts.setAccessKeySecret("<your AccessKey Secret>");// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
liveSts.setSecurityToken("<your STS token>");// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
liveSts.setDomain("<your Domain>");// 必选参数,直播流的播流域名。
liveSts.setApp("<your App Name>");// 必选参数,直播流的AppNam。
liveSts.setStream("<your Stream Name>");// 必选参数,直播流的StreamName。
liveSts.setEncryptionType(LiveSts.LiveEncryptionType.AliEncryption);// 必选参数,设置加密类型为AliEncryption。
liveSts.setRegion("<region of your video>");// 必选参数,服务地域。如cn-shanghai等。
// 设置播放源
aliPlayer.setDataSource(liveSts);
// 准备播放
aliPlayer.prepare();
监听STS是否无效。
加密直播播放过程中可能会有更换加密Key的过程,换Key时则会通过STS去请求到最新的Key。开发者需要监听STS是否有效。如果无效则会影响加密直播流的播放。
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() {
@Override
public AliPlayer.Status onVerifySts(StsInfo info) {
if(info 可以使用){
return IPlayer.StsStatus.Valid;
}
if(可以获取有效的STS){
获取STS();// 异步同步均可。
return IPlayer.StsStatus.Pending;
}
// 如果info无效,且无法获取到最新的STS,那么建议停止播放。防止出现花屏。
mAliyunVodPlayer.stop();
return IPlayer.StsStatus.Invalid;
}
@Override
public AliPlayer.Status onVerifyAuth(VidAuth auth) {
return AliPlayer.Status.Valid;
}
});
获取STS成功之后,需要调用updateLiveStsInfo
方法去更新STS。如果获取失败,则建议停止播放。如果不更新STS,超时之后播放器会继续使用之前的STS去获取Key。如果STS失效,则可能会出现花屏或者播放失败。
mAliyunVodPlayer.updateStsInfo(stsInfo);
经过HLS标准加密的视频通过点播VidAuth方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
playerConfig.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);// 可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流。
playerConfig.setMtsHlsUriToken("用户令牌");// 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递。
vidAuth.setPlayConfig(playerConfig);
vidAuth.setVid("Vid信息");// 必选参数,视频ID(VideoId)。
vidAuth.setPlayAuth("<yourPlayAuth>");// 必选参数,播放凭证,需要调用点播服务的GetVideoPlayAuth接口生成。
vidAuth.setRegion("接入地域");// 5.5.5.0及之后版本播放器SDK,本参数已弃用,无需设置region,播放器会自动解析region;5.5.5.0之前版本播放器SDK,本参数必选,点播服务的接入地域,默认为cn-shanghai。
// vidAuth.setAuthTimeout(3600);// 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
aliPlayer.setDataSource(vidAuth);
经过HLS标准加密的视频通过点播VidSts方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
VidSts vidSts = new VidSts();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);//可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流。
playerConfig.setMtsHlsUriToken("用户令牌");// 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递。
vidSts.setPlayConfig(playerConfig);
vidSts.setVid("Vid信息");// 必选参数,视频ID(VideoId)。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
vidSts.setSecurityToken("<yourSecurityToken>");// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
vidSts.setRegion("接入地域");// 必选参数,点播服务的接入地域,默认为cn-shanghai。
// vidSts.setAuthTimeout(3600);// 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
aliPlayer.setDataSource(vidSts);
经过HLS标准加密的视频通过直播或点播UrlSource方式播放时,与播放普通视频一致,无需额外设置参数。
UrlSource urlSource = new UrlSource();
urlSource.setUri("播放地址");// 必选参数,播放地址为经过HLS标准加密的直播流或点播流地址。
aliPlayer.setDataSource(urlSource);
Android平台,为了保证高安全等级的视频能正常播放,建议使用surfaceView进行播放。
经过DRM加密的视频通过点播VidSts方式播放时,与播放普通视频配置一致,无需额外设置参数。
VidSts vidSts = new VidSts();
vidSts.setVid("Vid信息");// 必选参数,视频ID(VideoId)。
vidSts.setAccessKeyId("<yourAccessKeyId>");// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
vidSts.setSecurityToken("<yourSecurityToken>");// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
vidSts.setRegion("接入地域");// 必选参数,点播服务的接入地域,默认为cn-shanghai。
// vidSts.setAuthTimeout(3600); // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
aliPlayer.setDataSource(vidSts);
经过DRM加密的视频通过直播LiveStsSource方式播放时,需要传入URL和STS凭证,并设置视频加密类型为WideVine_FairPlay。示例代码如下:
创建DataSource。
需传递AVPLiveStsSource作为播放源。
// 创建LiveSts,EncryptionType需要设置为WideVine_FairPlay
LiveSts liveSts = new LiveSts();
liveSts.setUrl("<your live stream url>");// 必选参数,播放地址为经过DRM加密的HLS直播流地址。
liveSts.setAccessKeyId("<your AccessKey ID>");// 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
liveSts.setAccessKeySecret("<your AccessKey Secret>");// 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
liveSts.setSecurityToken("<your STS token>");// 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
liveSts.setDomain("<your Domain>");// 必选参数,直播流的播流域名。
liveSts.setApp("<your App Name>");// 必选参数,直播流的AppNam。
liveSts.setStream("<your Stream Name>");// 必选参数,直播流的StreamName。
liveSts.setEncryptionType(LiveSts.LiveEncryptionType.WideVine_FairPlay);// 必选参数,设置加密类型为WideVine_FairPlay。
liveSts.setRegion("<region of your video>");// 必选参数,服务地域。如cn-shanghai等。
// 设置播放源
aliPlayer.setDataSource(liveSts);
// 准备播放
aliPlayer.prepare();
监听STS是否无效。
加密直播播放过程中可能会有更换加密Key的过程,换Key时则会通过STS去请求到最新的Key。开发者需要监听STS是否有效。如果无效则会影响加密直播流的播放。
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() {
@Override
public AliPlayer.Status onVerifySts(StsInfo info) {
if(info 可以使用){
return IPlayer.StsStatus.Valid;
}
if(可以获取有效的STS){
获取STS();// 异步同步均可。
return IPlayer.StsStatus.Pending;
}
// 如果info无效,且无法获取到最新的STS,那么建议停止播放。防止出现花屏。
mAliyunVodPlayer.stop();
return IPlayer.StsStatus.Invalid;
}
@Override
public AliPlayer.Status onVerifyAuth(VidAuth auth) {
return AliPlayer.Status.Valid;
}
});
获取STS成功之后,需要调用updateLiveStsInfo
方法去更新STS。如果获取失败,则建议停止播放。如果不更新STS,超时之后播放器会继续使用之前的STS去获取Key。如果STS失效,则可能会出现花屏或者播放失败。
mAliyunVodPlayer.updateStsInfo(stsInfo);
用户可以通过快速集成iOS播放器到自己的应用中并实现播放。步骤及示例代码如下:
集成阿里云iOS播放器SDK。
iOS播放器SDK的集成操作请参见快速集成。
创建播放器(预加载)播放(加载)视频。
创建播放器的操作步骤请参见创建播放器。其中,步骤3.创建DataSource的操作请根据实际需求选择以下任一方式创建。
仅6.8.0及以后版本的iOS播放器SDK支持通过点播UrlSource方式播放MP4格式的私有加密视频,6.17.0及以后版本支持HLS格式(单码率、多码率)的私有加密视频。
经过私有加密输出的HLS格式或MP4格式视频通过点播UrlSource方式播放时,可调用GetPlayInfo - 获取音视频播放地址接口获取视频的播放地址,获取到的视频URL(仅限MP4需此参数,HLS不需要)需要您按协议在URL尾部自行拼接etavirp_nuyila=1
后再传入播放器进行播放,播放器SDK的配置与播放普通视频配置一致,无需额外设置参数。
播放URL示例:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
//播放地址
NSString *playURL = @"https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
//播放器
AliPlayer *player = [[AliPlayer alloc] init];
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:playURL]; // 必选参数,视频的播放地址(URL),可调用GetPlayInfo接口获取视频URL,获取到的视频URL(仅限MP4)需要在尾部自行拼接etavirp_nuyila=1后再传入,示例:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
[player setUrlSource:urlSource];
[player prepare];
//列表播放器
AliListPlayer *listPlayer = [[AliListPlayer alloc] init];
[listPlayer addUrlSource:playURL uid:UUIDString];
[listPlayer moveTo:@"uid"];
//预加载
AliMedialoader *mediaLoader = [AliMediaLoader shareInstance];
[mediaLoader load:playURL duration:1000];
经过私有加密输出的HLS格式或MP4格式视频通过点播VidAuth方式播放时,若当前视频存在其他非私有加密类型的加密流或普通转码流时,可通过设置视频加密类型为AliyunVoDEncryption来筛选私有加密流进行播放。
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid信息"; // 必选参数,视频ID(VideoId)。
authSource.playAuth = @"<yourPlayAuth>"; // 必选参数,播放凭证,需要调用点播服务的GetVideoPlayAuth接口生成。
authSource.region = @"接入地域"; // 5.5.5.0及之后版本播放器SDK,本参数已弃用,无需设置region,播放器会自动解析region;5.5.5.0之前版本播放器SDK,本参数必选,点播服务的接入地域,默认为cn-shanghai。
// authSource.authTimeout = 3600; // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
//通过VidPlayerConfigGenerator构建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; //可选参数,设置加密类型为AliyunVoDEncryption时,则只会返回经过私有加密的视频流。
authSource.playConfig = [config generatePlayerConfig];
[self.player setAuthSource:authSource];
经过私有加密输出的HLS格式或MP4格式视频通过点播VidSts方式播放时,若当前视频存在其他非私有加密类型的加密流或普通转码流时,可通过设置视频加密类型为AliyunVoDEncryption来筛选私有加密流进行播放。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"接入地域"; // 必选参数,点播服务的接入地域,默认为cn-shanghai。
source.vid = @"Vid信息"; // 必选参数,视频ID(VideoId)。
source.securityToken = @"<yourSecurityToken>"; // 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
source.accessKeyId = @"<yourAccessKeyId>"; // 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
// source.authTimeout = 3600; // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
//通过VidPlayerConfigGenerator构建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; //可选参数,设置加密类型为AliyunVoDEncryption时,则只会返回经过私有加密的视频流。
source.playConfig = [config generatePlayerConfig];
//设置播放源
[self.player setStsSource:source];
经过私有加密输出的HLS格式或者FLV格式视频通过直播LiveStsSource方式播放时,需要传入URL和STS凭证,并设置视频加密类型为ENCRYPTION_TYPE_ALIVODENCRYPTION。示例代码如下:
创建DataSource。
需传递AVPLiveStsSource作为播放源。
// 创建LiveSts,encryptionType需要设置为ENCRYPTION_TYPE_ALIVODENCRYPTION
AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"加密直播url"
accessKeyId:@"临时akId"
accessKeySecret:@"临时akId"
securityToken:@"安全token"
region:@"region值"
domain:@"url播流域名"
app:@"播流应用名"
stream:@"播流流名"
encryptionType:ENCRYPTION_TYPE_ALIVODENCRYPTION];// 必选参数,设置加密类型为ENCRYPTION_TYPE_ALIVODENCRYPTION。
// 设置播放源
[self.aliPlayer setLiveStsSource:liveStsSource];
......
// 准备播放
[self.aliPlayer prepare];
监听STS是否无效。
加密直播播放过程中可能会有更换加密Key的过程,换Key时则会通过STS去请求到最新的Key。开发者需要监听STS是否有效。如果无效则会影响加密直播流的播放。
__weak typeof(self) weakSelf = self;
[self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) {
if (info 可以使用) {
return Valid;
}
if(可以获取有效的STS){
获取STS();// 异步同步均可。
return Pending;
}
[weakSelf.aliPlayer stop];
return Invalid;
}];
获取STS成功之后,需要调用updateLiveStsInfo
方法去更新STS。如果获取失败,则建议停止播放。如果不更新STS,超时之后播放器会继续使用之前的STS去获取Key。如果STS失效,则可能会出现花屏或者播放失败。
[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
经过HLS标准加密的视频通过点播VidAuth方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid信息"; // 必选参数,视频ID(VideoId)。
authSource.playAuth = @"<yourPlayAuth>"; // 必选参数,播放凭证,需要调用点播服务的GetVideoPlayAuth接口生成。
authSource.region = @"接入地域"; // 5.5.5.0及之后版本播放器SDK,本参数已弃用,无需设置region,播放器会自动解析region;5.5.5.0之前版本播放器SDK,本参数必选,点播服务的接入地域,默认为cn-shanghai。
// authSource.authTimeout = 3600; // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
//通过VidPlayerConfigGenerator构建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // 可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流。
[config setHlsUriToken: @"xxxxxxx"]; // 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递。
source.playConfig = [config generatePlayerConfig];
//设置播放源
[self.player setAuthSource:authSource];
经过HLS标准加密的视频通过点播VidSts方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"Vid信息"; // 必选参数,视频ID(VideoId)。
source.region = @"接入地域"; // 必选参数,点播服务的接入地域,默认为cn-shanghai。
source.securityToken = @"<yourSecurityToken>"; // 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
source.accessKeyId = @"<yourAccessKeyId>"; // 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
// source.authTimeout = 3600; // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
//通过VidPlayerConfigGenerator构建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // 可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流。
[config setHlsUriToken: @"xxxxxxx"]; // 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递。
source.playConfig = [config generatePlayerConfig];
// 设置播放源
[self.player setStsSource:source];
经过HLS标准加密的视频通过直播或点播UrlSource方式播放时,与播放普通视频一致,无需额外设置参数。
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:url]; // 必选参数,播放地址为经过HLS标准加密的直播流或点播流地址。
[self.player setUrlSource:urlSource];
iOS平台,需要在[self.player prepare]
之前全局调用一次AliPlayerGlobalSettings
中的setFairPlayCertID
方法来设置证书ID。证书ID可以在视频点播控制台 > 配置管理 > 媒体处理配置 > DRM证书管理中获取。
[AliPlayerGlobalSettings setFairPlayCertID:@"控制台获取的证书ID"];
经过DRM加密的视频通过点播VidSts方式播放时,与播放普通视频配置一致,无需额外设置参数。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"接入地域"; // 必选参数,点播服务的接入地域,默认为cn-shanghai。
source.vid = @"Vid信息"; // 必选参数,视频ID(VideoId)。
source.securityToken = @"<yourSecurityToken>"; // 必选参数,STS安全令牌,需要调用STS服务的AssumeRole接口生成。
source.accessKeySecret = @"<yourAccessKeySecret>"; // 必选参数,STS临时AK对的访问密钥,需要调用STS服务的AssumeRole接口生成。
source.accessKeyId = @"<yourAccessKeyId>"; // 必选参数,STS临时AK对的访问密钥ID,需要调用STS服务的AssumeRole接口生成。
// source.authTimeout = 3600; // 可选参数,播放地址的有效时长,单位:秒。该时长会覆盖在视频点播控制台设置的URL鉴权的有效时长。如果不传,则取默认值3600。如需设置此参数,请确保该时间大于视频的实际时长,防止播放地址在播放完成前过期。
//设置播放源
[self.player setStsSource:source]
经过DRM加密的视频通过直播LiveStsSource方式播放时,需要传入URL和STS凭证,并设置视频加密类型为ENCRYPTION_TYPE_FAIRPLAY。示例代码如下:
创建DataSource。
需传递AVPLiveStsSource作为播放源。
// 创建LiveSts,encryptionType需要设置为ENCRYPTION_TYPE_FAIRPLAY
AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"加密直播url"
accessKeyId:@"临时akId"
accessKeySecret:@"临时akId"
securityToken:@"安全token"
region:@"region值"
domain:@"url播流域名"
app:@"播流应用名"
stream:@"播流流名"
encryptionType:ENCRYPTION_TYPE_FAIRPLAY];// 必选参数,设置加密类型为ENCRYPTION_TYPE_FAIRPLAY。
// 设置播放源
[self.aliPlayer setLiveStsSource:liveStsSource];
......
// 准备播放
[self.aliPlayer prepare];
监听STS是否无效。
加密直播播放过程中可能会有更换加密Key的过程,换Key时则会通过STS去请求到最新的Key。开发者需要监听STS是否有效。如果无效则会影响加密直播流的播放。
__weak typeof(self) weakSelf = self;
[self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) {
if (info 可以使用){
return Valid;
}
if(可以获取有效的STS){
获取STS();// 异步同步均可。
return Pending;
}
[weakSelf.aliPlayer stop];
return Invalid;
}];
获取STS成功之后,需要调用updateLiveStsInfo
方法去更新STS。如果获取失败,则建议停止播放。如果不更新STS,超时之后播放器会继续使用之前的STS去获取Key。如果STS失效,则可能会出现花屏或者播放失败。
[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];
Flutter端不支持DRM加密。
用户可以通过快速集成Flutter播放器到自己的应用中并实现播放。步骤及示例代码如下:
集成阿里云Flutter播放器SDK。
Flutter播放器SDK的集成操作请参见快速集成。
创建播放器播放视频。
仅6.8.0及以后版本的Flutter播放器SDK支持通过点播UrlSource方式播放MP4格式的私有加密视频,6.17.0及以后版本支持HLS格式(单码率、多码率)的私有加密视频。
经过私有加密输出的HLS格式或MP4格式视频通过点播UrlSource方式播放时,可调用GetPlayInfo - 获取音视频播放地址接口获取视频的播放地址,获取到的视频URL(仅限MP4需此参数,HLS不需要)需要您按协议在URL尾部自行拼接etavirp_nuyila=1
后再传入播放器进行播放,播放器SDK的配置与播放普通视频配置一致,无需额外设置参数。
播放URL示例:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
//播放地址
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1"
//创建播放器实例
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
fAliplayer.setUrl(playURL);
fAliplayer.prepare();
//列表播放器
FlutterAliListPlayer fAliListPlayer = FlutterAliPlayerFactory.createAliListPlayer();
fAliListPlayer.addUrlSource(playURL,uid);
fAliListPlayer.moveTo("uid");
//预加载
FlutterAliPlayerMediaLoader fAliPlayerMediaLoader = FlutterAliPlayerMediaLoader();
fAliPlayerMediaLoader.load(playURL,"duration");
经过私有加密输出的HLS格式或MP4格式视频通过点播VidAuth方式播放时,若当前视频存在其他非私有加密类型的加密流或普通转码流时,可通过设置视频加密类型为AliyunVoDEncryption来筛选私有加密流进行播放。
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// 可选参数,设置加密类型为AliyunVoDEncryption时,则只会返回经过私有加密的视频流。
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "Vid信息",
region: "接入地域",// 必选参数,点播服务的接入地域,默认为cn-shanghai。
playAuth: "<yourPlayAuth>",// 必选参数,播放凭证,需要调用点播服务的GetVideoPlayAuth接口生成。
playConfig: value);
});
经过私有加密输出的HLS格式或MP4格式视频通过点播VidSts方式播放时,若当前视频存在其他非私有加密类型的加密流或普通转码流时,可通过设置视频加密类型为AliyunVoDEncryption来筛选私有加密流进行播放。
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// 可选参数,设置加密类型为AliyunVoDEncryption时,则只会返回经过私有加密的视频流。
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid信息",
region: "接入地域",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});
经过HLS标准加密的视频通过点播VidAuth方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption);// 可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流。
FlutterAliplayer.setHlsUriToken("mtsHlsUriToken");// 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "Vid信息",
region: "接入地域",// 必选参数,点播服务的接入地域,默认为cn-shanghai。
playAuth: "<yourPlayAuth>",// 必选参数,播放凭证,需要调用点播服务的GetVideoPlayAuth接口生成。
playConfig: value);
});
经过HLS标准加密的视频通过点播VidSts方式播放时,若当前视频存在其他非HLS标准加密类型的加密流或普通转码流时,可通过设置视频加密类型为HLSEncryption来筛选HLS标准加密流进行播放,示例代码如下:
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption);// 可选参数,设置加密类型为AliyunVoDEncryption时,则只会返回经过私有加密的视频流。
FlutterAliplayer.setHlsUriToken("mtsHlsUriToken");// 可选参数,如需校验MtsHlsUriToken(用户令牌),可使用此参数传递
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid信息",
region: "接入地域",
accessKeyId: "<yourAccessKeyId>",
accessKeySecret: "<yourAccessKeySecret>",
securityToken: "<yourSecurityToken>",
playConfig: value);
});
使用加密过程中的常见问题及解决方案,请参见视频加密常见问题。