本文介绍播放加密视频的操作步骤及相关设置。

视频加密简介

阿里云视频点播已经拥有一套完善的内容安全保护机制,可用于保障视频内容不被盗链、非法下载和传播。安全机制包括访问限制、播放中心鉴权、业务方二次鉴权、视频加密和安全下载等。

有关访问限制、播放中心鉴权及业务方二次鉴权等安全机制的详细内容请参见视频安全概述,本文主要介绍三种视频加密方式的视频播放。三种视频加密的简介如下:
安全机制 安全手段 特点 安全等级 使用门槛
视频加密 阿里云视频加密(私有加密) 云端一体的视频加密解决方案,采用私有加密算法,并确保链路的安全传输。 较低,简单配置并集成阿里云播放器即可。
HLS标准加密 HLS通用加密方案,使用AES_128对内容加密,适配所有HLS播放器,但密钥容易被窃取。 较高 高,需自建密钥管理和令牌颁发服务,并确保链路传输安全。
商业DRM 苹果Fairplay、谷歌Widevine的原生支持,安全级别很高,满足大的版权内容提供商的要求。 高,按调用License次数收费,只需集成阿里云播放器SDK。

阿里云视频加密(私有加密)

简介

阿里云视频加密是对视频数据加密,即使下载到本地,视频本身也是被加密的,无法恶意二次分发,可有效防止视频泄露和盗链问题。有关阿里云视频加密的加密机制及核心优势等更多内容,请参见阿里云视频加密

注意 阿里云视频加密仅支持输出HLS格式,且只能使用阿里云播放器播放加密视频。

配置阿里云视频加密

阿里云视频加密的详细流程及配置,请参见配置阿里云视频加密

播放阿里云视频加密视频

目前只能使用阿里云播放器播放阿里云视频加密(私有加密)视频。

阿里云播放器将内部解密逻辑、服务端交互逻辑都封装到了SDK内部。您只需要配置加密转码,再集成播放器播放视频即可低成本使用加密播放。

Web播放器代码示例

用户可以在自己的Web页面中嵌入Web播放器并实现播放(暂不支持在iOS系统的Web播放器中播放),目前支持点播VidAuth方式(推荐)和直播UrlSource方式播放阿里云视频加密视频。代码示例如下:

经过阿里云视频加密(私有加密)的视频通过点播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/de/prismplayer/2.9.19/skins/default/aliplayer-min.css" />
       <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.9.19/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。其它情况无需设置。
              },function(player){
                console.log('The player is created.')
             });
          </script>
      </body>
  </html>

经过阿里云视频加密(私有加密)的视频通过直播UrlSource方式播放时,与播放普通视频一致,无需额外设置参数。

直播私有加密播放示例

<!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/de/prismplayer/2.9.19/skins/default/aliplayer-min.css" />
      <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.9.19/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>',//必选参数。播放地址为经过私有加密的直播流地址。
             },function(player){
               console.log('The player is created.')
            });
         </script>
     </body>
 </html>

Android播放器代码示例

用户可以通过快速集成Android播放器到自己的应用中并实现播放。目前支持点播VidAuth方式(推荐)、点播VidSts方式、点播VidMps方式和直播UrlSource方式播放阿里云视频加密视频。步骤及示例代码如下:

  1. 集成阿里云Android播放器SDK。
    Android播放器SDK的集成操作请参见快速集成
  2. 创建播放器播放视频。
    创建播放器的操作请参见创建播放器。其中,步骤3.创建DataSource的操作请根据实际需求选择以下任一方式创建。

    经过阿里云视频加密(私有加密)的视频通过点播VidAuth方式播放时,与播放普通视频相比,需额外设置服务器返回的视频加密类型为AliyunVodEncryption。

    VidAuth播放示例

    VidAuth vidAuth = new VidAuth();
    VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
    vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVodEncryption);
    vidAuth.setPlayConfig(vidPlayerConfigGen);
    vidAuth.setVid("Vid信息");//视频ID(VideoId)
            vidAuth.setPlayAuth("playAuth信息");//播放凭证
            vidAuth.setRegion("接入地域");//点播服务的接入地域,默认为cn-shanghai
            aliPlayer.setDataSource(vidAuth);

    经过阿里云视频加密(私有加密)的视频通过点播VidSts方式播放时,与播放普通视频相比,需额外设置服务器返回的视频加密类型为AliyunVodEncryption。

    VidSts播放示例

    VidSts vidSts = new VidSts();
    VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
    vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVodEncryption);
    vidSts.setPlayConfig(vidPlayerConfigGen);
    vidSts.setVid("Vid信息");//视频ID(VideoId)
            vidSts.setAccessKeyId("<yourAccessKeyId>");//鉴权ID
            vidSts.setAccessKeySecret("<yourAccessKeySecret>");//鉴权密钥
            vidSts.setSecurityToken("<yourSecurityToken>");//安全token
            vidSts.setRegion("接入地域");//点播服务的接入地域,默认为cn-shanghai
            aliPlayer.setDataSource(vidSts);

    VidMps播放方式是播放器为媒体处理用户(MPS用户)提供的播放方式。获取MPS媒体相关信息请参见媒体处理视频播放

    经过阿里云视频加密(私有加密)的视频通过点播VidMps方式播放时,与播放普通视频相比,需额外设置服务器返回的视频加密类型为AliyunVodEncryption。

    VidMps播放示例

    VidMps vidMps = new VidMps();
    VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
    vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVodEncryption);
    vidMps.setPlayConfig(vidPlayerConfigGen);
    vidMps.setRegion("接入地域");//媒体资源所在的地域
            vidMps.setMediaId("媒体ID");//媒体处理系统中的媒资ID
            vidMps.setAuthInfo("认证信息");//设置认证信息
            vidMps.setAccessKeyId("<yourAccessKeyId>");//随STS临时Token下发的临时AK对中的鉴权ID
            vidMps.setSecurityToken("<yourSecurityToken>");//STS临时Token
            vidMps.setPlayDomain("播放Domain信息");//设置播放Domain
            vidMps.setHlsUriToken("HlsUriToken信息");//设置HlsUriToken
            vidMps.setAccessKeySecret("<yourAccessKeySecret>");//随STS临时Token下发的临时AK对中的鉴权密钥
            aliPlayer.setDataSource(vidMps);

    经过阿里云视频加密(私有加密)的视频通过直播UrlSource方式播放时,与播放普通视频一致,无需额外设置参数。

    直播UrlSource播放示例

    UrlSource urlSource = new UrlSource();
            urlSource.setUri("播放地址");//必选参数,播放地址为经过私有加密的直播流地址。
            aliPlayer.setDataSource(urlSource);

iOS播放器代码示例

用户可以通过快速集成iOS播放器到自己的应用中并实现播放。目前支持点播UrlSource、点播VidAuth方式(推荐)、点播VidSts方式、点播VidMps方式和直播UrlSource方式播放阿里云视频加密视频。步骤及示例代码如下:

  1. 集成阿里云iOS播放器SDK。
    iOS播放器SDK的集成操作请参见快速集成
  2. 创建播放器播放视频。
    点播和直播播放阿里云加密(私有加密)视频与播放普通视频所需配置一致,无需额外设置参数,详细操作及代码示例请参见创建播放器

HLS标准加密

简介

HLS标准加密支持HTTP Live Streaming中规定的通用加密方案,使用AES-128对视频内容本身进行加密,同时能支持所有的HLS播放器,您可选择使用自研或开源的播放器。相比私有加密方案灵活性更好,但使用门槛更高、安全性更低。

有关HLS标准加密的加密机制及使用限制等更多内容,请参见HLS标准加密

配置HLS标准加密

HLS标准加密的详细流程及配置,请参见配置HLS标准加密

播放HLS标准加密视频

HLS标准加密支持所有的HLS播放器,用户可选择使用自研或开源的播放器。

此处以介绍如何使用阿里云播放器播放HLS标准加密视频为例。阿里云播放器支持用户令牌传递,阿里云CDN服务会动态修改M3U8文件中的解密URI,解密URI中会带上用户的令牌,业务方可以对令牌进行验证。

Web播放器代码示例

用户可以在自己的Web页面中嵌入Web播放器并实现播放,目前支持点播UrlSource方式、点播VidAuth方式、点播VidSts方式、点播VidMps方式和直播UrlSource方式播放HLS标准加密视频。

点播和直播播放HLS标准加密视频与播放普通视频所需配置一致,无需额外设置参数,详细操作及代码示例请参见快速接入

Android播放器代码示例

用户可以通过快速集成Android播放器到自己的应用中并实现播放。目前支持点播VidAuth方式、点播VidSts方式、点播VidMps方式和直播UrlSource方式播放HLS标准加密视频。步骤及示例代码如下:

  1. 集成阿里云Android播放器SDK。
    Android播放器SDK的集成操作请参见快速集成
  2. 创建播放器播放视频。
    创建播放器的操作请参见创建播放器。其中,步骤3.创建DataSource的操作请根据实际需求选择以下任一方式创建。

    经过HLS标准加密的视频通过点播VidAuth方式播放时,配置如下。

    VidAuth播放示例

    VidAuth vidAuth = new VidAuth();
    VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
    VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);//可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流;若不设置,则会返回HLS标准视频加密视频流及普通视频流。
    playerConfig.setMtsHlsUriToken("用户令牌");//必选参数,设置用户令牌。
    vidAuth.setPlayConfig(playerConfig);
    vidAuth.setVid("Vid信息");//必选参数,视频ID(VideoId)。
    vidAuth.setPlayAuth("playAuth信息");//必选参数,播放凭证。
    vidAuth.setRegion("接入地域");//必选参数,点播服务的接入地域,默认为cn-shanghai。
    aliPlayer.setDataSource(vidAuth);

    经过HLS标准加密的视频通过点播VidSts方式播放时,配置如下。

    VidSts播放示例

    VidSts vidSts = new VidSts();
    VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
    VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);//可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流;若不设置,则会返回HLS标准视频加密视频流及普通视频流。
    playerConfig.setMtsHlsUriToken("用户令牌");//必选参数,设置用户令牌。
    vidSts.setPlayConfig(playerConfig);
    vidSts.setVid("Vid信息");//必选参数,视频ID(VideoId)。
    vidSts.setAccessKeyId("<yourAccessKeyId>");//必选参数,鉴权ID。
    vidSts.setAccessKeySecret("<yourAccessKeySecret>");//必选参数,鉴权密钥。
    vidSts.setSecurityToken("<yourSecurityToken>");//必选参数,安全token。
    vidSts.setRegion("接入地域");//必选参数,点播服务的接入地域,默认为cn-shanghai。
    aliPlayer.setDataSource(vidSts);

    VidMps播放方式是播放器为媒体处理用户(MPS用户)提供的播放方式。获取MPS媒体相关信息请参见媒体处理视频播放

    经过HLS标准加密的视频通过点播VidMps方式播放时,配置如下。

    VidMps播放示例

    VidMps vidMps = new VidMps();
    VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
    vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);//可选参数,设置加密类型为HLSEncryption时,则只会返回经过HLS标准加密的视频流;若不设置,则会返回HLS标准视频加密视频流及普通视频流。
    vidMps.setPlayConfig(vidPlayerConfigGen);
    vidMps.setRegion("接入地域");//必选参数,媒体资源所在的地域。
    vidMps.setMediaId("媒体ID");//必选参数,媒体处理系统中的媒资ID。
    vidMps.setAuthInfo("认证信息");//必选参数,设置认证信息。
    vidMps.setAccessKeyId("<yourAccessKeyId>");//必选参数,随STS临时Token下发的临时AK对中的鉴权ID。
    vidMps.setSecurityToken("<yourSecurityToken>");//必选参数,STS临时Token。
    vidMps.setPlayDomain("播放Domain信息");//必选参数,设置播放Domain。
    vidMps.setHlsUriToken("HlsUriToken信息");//必选参数,设置HlsUriToken。
    vidMps.setAccessKeySecret("<yourAccessKeySecret>");//必选参数,随STS临时Token下发的临时AK对中的鉴权密钥。
    aliPlayer.setDataSource(vidMps);

    经过HLS标准加密的视频通过直播UrlSource方式播放时,与播放普通视频一致,无需额外设置参数。

    直播UrlSource播放示例

    UrlSource urlSource = new UrlSource();
            urlSource.setUri("播放地址");//必选参数,播放地址为经过HLS标准加密的直播流地址。
            aliPlayer.setDataSource(urlSource);

iOS播放器代码示例

用户可以通过快速集成iOS播放器到自己的应用中并实现播放。目前支持点播VidAuth方式、点播VidSts方式、点播VidMps方式和直播UrlSource方式播放HLS标准加密视频。步骤及示例代码如下:

  1. 集成阿里云iOS播放器SDK。
    iOS播放器SDK的集成操作请参见快速集成
  2. 创建播放器播放视频。
    创建播放器的操作请参见创建播放器。其中,步骤3.创建DataSource的操作请根据实际需求选择以下任一方式创建。

    经过HLS标准加密的视频通过点播VidAuth方式播放时,配置如下。

    VidAuth播放示例

    通过AVPVidAuthSource播放来设置playConfig,playConfig中携带mtsHlsUriToken参数。

    - (instancetype)initWithVid:(NSString *)vid
            playAuth:(NSString *)playAuth
              region:(NSString *)region
              playConfig:(NSString *)playConfig;
    - (void)setAuthSource:(AVPVidAuthSource*)source;

    生成playConfig参数:通过VidPlayerConfigGenerator类的setHlsUriToken来设置令牌,最终通过generatePlayerConfig接口来生成playConfig。

    -(void) setHlsUriToken:(NSString*)MtsHlsUriToken;
    -(NSString*) generatePlayerConfig;

    经过HLS标准加密的视频通过点播VidSts方式播放时,配置如下。

    VidSts播放示例

    通过AVPVidAuthSource播放来设置playConfig,playConfig中携带mtsHlsUriToken参数。

    - (instancetype)initWithVid:(NSString *)vid
                    accessKeyId:(NSString *)accessKeyId
                accessKeySecret:(NSString *)accessKeySecret
                  securityToken:(NSString *)securityToken
                         region:(NSString *)region
                    playConfig:(NSString *)playConfig;
    - (void)setStsSource:(AVPVidStsSource*)source;

    生成playConfig参数:通过VidPlayerConfigGenerator类的setHlsUriToken来设置令牌,最终通过generatePlayerConfig接口来生成playConfig。

    -(void) setHlsUriToken:(NSString*)MtsHlsUriToken;
    -(NSString*) generatePlayerConfig;

    VidMps播放方式是播放器为媒体处理用户(MPS用户)提供的播放方式。获取MPS媒体相关信息请参见媒体处理视频播放

    经过HLS标准加密的视频通过点播VidMps方式播放时,配置如下。

    VidMps播放示例

    - (instancetype)initWithVid:(NSString*)vid
                     accId:(NSString *)accId
                 accSecret:(NSString*)accSecret
                  stsToken:(NSString*)stsToken
                  authInfo:(NSString*)authInfo
                    region:(NSString*)region
                playDomain:(NSString*)playDomain
            mtsHlsUriToken:(NSString*)mtsHlsUriToken;
    - (void)setMpsSource:(AVPVidMpsSource*)source;

    经过HLS标准加密的视频通过直播UrlSource方式播放时,与播放普通视频一致,无需额外设置参数。

    直播UrlSource播放示例

    AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:url]; //必选参数,播放地址为经过HLS标准加密的直播流地址。
    [self.player setUrlSource:urlSource];

DRM加密

简介

阿里云视频点播服务提供了行业通用的DRM(Digital Rights Management)加密方式,通过一站式添加和管理,轻松保护版权视频内容的安全。支持WideVine和Fairplay的DRM方案。

核心优势及架构等更多内容,请参见产品介绍

配置DRM加密

仅支持通过视频点播控制台开启,详细操作请参见DRM加密

播放DRM加密视频

目前只能使用阿里云播放器播放DRM加密视频。

Web播放器代码示例

用户可以在自己的Web页面中嵌入Web播放器并实现播放,目前支持点播VidSts方式和直播UrlSource方式播放DRM加密视频。代码示例如下:

经过DRM加密的视频通过点播VidSts方式播放,与播放普通视频相比,额外传入参数isDrm: true,来启用DRM加密。

点播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/de/prismplayer/2.9.19/skins/default/aliplayer-min.css" />
      <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.9.19/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>',//必选参数。可通过RAM访问控制控制台的AccessKey管理页面创建AccessKey,或者查看已有AccessKey Id的AccessKey Secret。
               securityToken: '<your STS token>',//必选参数。视频播放的临时凭证。凭证需要提前生成。生成方式请参考创建角色并进行STS临时授权。
               accessKeySecret: '<your AccessKey Secret>',//必选参数。可通过RAM访问控制控制台的AccessKey管理页面创建AccessKey,或者查看已有AccessKey Id的AccessKey Secret。
               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>

经过DRM加密的视频通过直播UrlSource方式播放,需传入URL和STS凭证。

直播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/de/prismplayer/2.9.19/skins/default/aliplayer-min.css" />
      <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.9.19/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>',//必选参数。可通过RAM访问控制控制台的AccessKey管理页面创建AccessKey,或者查看已有AccessKey Id的AccessKey Secret。
               securityToken: '<your STS token>',//必选参数。视频播放的临时凭证。凭证需要提前生成。生成方式请参考创建角色并进行STS临时授权。
               accessKeySecret: '<your AccessKey Secret>',//必选参数。可通过RAM访问控制控制台的AccessKey管理页面创建AccessKey,或者查看已有AccessKey Id的AccessKey Secret。
               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播放器到自己的应用中并实现播放。目前支持点播VidSts方式和直播UrlSource方式播放DRM加密视频。步骤及示例代码如下:

  1. 集成阿里云Android播放器SDK。
    Android播放器SDK的集成操作请参见快速集成
  2. 创建播放器播放视频。
    创建播放器的操作请参见创建播放器。其中,步骤3.创建DataSource的操作请根据实际需求选择以下任一方式创建。

    经过DRM加密的视频通过点播VidSts方式播放时,与播放普通视频配置一致,无需额外设置参数。

    点播DRM加密VidSts播放示例

    VidSts vidSts = new VidSts();
            vidSts.setVid("Vid信息");//视频ID(VideoId)
            vidSts.setAccessKeyId("<yourAccessKeyId>");//鉴权ID
            vidSts.setAccessKeySecret("<yourAccessKeySecret>");//鉴权密钥
            vidSts.setSecurityToken("<yourSecurityToken>");//安全token
            vidSts.setRegion("接入地域");//点播服务的接入地域,默认为cn-shanghai
            aliPlayer.setDataSource(vidSts);

    经过DRM加密的视频通过直播UrlSource方式播放时,需要传入URL和STS凭证,配置如下。

    直播DRM加密UrlSource播放示例

    1.创建DataSource。需传递AVPLiveStsSource作为播放源。

    //创建LiveSts
     LiveSts liveSts = new LiveSts();
     liveSts.setUrl("加密直播url");
     liveSts.setAccessKeyId("临时akId");
     liveSts.setAccessKeySecret("临时akSecret");
     liveSts.setSecurityToken("安全token");
     liveSts.setDomain("url播流域名");
     liveSts.setApp("播流应用名");
     liveSts.setStream("播流流名");
     //设置播放源
     aliyunVodPlayer.setDataSource(liveSts);
     ......
     //准备播放
     aliyunVodPlayer.prepare();

    2.监听STS是否无效。加密直播播放过程中可能会有换加密Key的过程,换Key时则会通过STS去请求到最新的Key。开发者需要监听STS是否有效。如果无效则会影响加密直播流的播放。

    mAliyunVodPlayer.setOnVerifyStsCallback(new IPlayer.OnVerifyStsCallback() {
        @Override
        public IPlayer.StsStatus onVerifySts(StsInfo info) {
            if(info 可以使用){
                return IPlayer.StsStatus.Valid;
            }
    
            if(可以获取有效的STS){
                获取STS();//异步同步均可。
                return IPlayer.StsStatus.Pending;
            }
            //如果info无效,且无法获取到最新的STS,那么建议停止播放。防止出现花屏。
            mAliyunVodPlayer.stop();
            return IPlayer.StsStatus.Invalid;
        }
    });

    说明:获取STS成功之后,需要调用 updateStsInfo方法去更新STS。如果获取失败,则建议停止播放。如果不更新STS,超时之后播放器会继续使用之前的STS去获取Key。如果STS失效,则可能会出现花屏或者播放失败。

    mAliyunVodPlayer.updateStsInfo(stsInfo);

iOS播放器代码示例

用户可以通过快速集成iOS播放器到自己的应用中并实现播放。目前支持点播VidSts方式和直播UrlSource方式播放DRM加密视频。步骤及示例代码如下:

  1. 集成阿里云iOS播放器SDK。
    iOS播放器SDK的集成操作请参见快速集成
  2. 创建播放器播放视频。
    创建播放器的操作请参见创建播放器。其中,步骤3.创建DataSource的操作请根据实际需求选择以下任一方式创建。
    说明 需要在[self.player prepare]之前全局调用一次AliPlayerGlobalSettings中的setFairPlayCertID方法来设置证书ID。证书ID可以在视频点播控制台 > 配置管理 > 媒体处理配置 > DRM证书管理中获取。
     [AliPlayerGlobalSettings setFairPlayCertID:@"控制台获取的证书ID"];

    经过DRM加密的视频通过点播VidSts方式播放时,与播放普通视频配置一致,无需额外设置参数。

    点播DRM加密VidSts播放示例

    AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
        source.region = self."region"; //接入地域
        source.vid = self."Vid"; //视频ID(VideoId)
        source.securityToken = self."<yourSecurityToken>"; //安全token
        source.accessKeySecret = self."<yourAccessKeySecret>"; //鉴权密钥
        source.accessKeyId = self."<yourAccessKeyId>"; //鉴权ID
         //设置播放源
        [self.player setStsSource:source]

    经过DRM加密的视频通过直播UrlSource方式播放时,需要传入URL和STS凭证,配置如下。

    直播DRM加密UrlSource播放示例

    1.创建DataSource。需传递AVPLiveStsSource作为播放源。

    //创建LiveSts
    AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"加密直播url" accessKeyId:@“临时akId”accessKeySecret:@"临时akId" securityToken:@"安全token" region:@"region值" domain:@"url播流域名" app:@"播流应用名" stream:@"播流流名"];
     //设置播放源
     [self.aliPlayer setLiveStsSource:liveStsSource];
     ......
     //准备播放
     [self.aliPlayer prepare];

    2.监听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];