视频播放有2种方式
  • 通过播放地址播放

    场景:针对提交转码作业的输出视频,有确定的输出地址。直接把需要播放的URL地址(OSS URL 或 CDN URL)传给阿里云播放器SDK。

    优点:服务端负责生成最终的播放URL地址,客户端的实现简单。

    缺点:服务端需要实现OSS、CDN的鉴权以及URL域名的拼接等,且客户端无法实现多个清晰度手动、自动切换。

  • 通过媒体ID播放

    使用媒体工作流时,每个多媒体输入文件由MediaId唯一标识,一一对应,这个媒体ID可以关联多个格式、多个清晰度的输出,所以使用媒体ID播放时,可以实现多清晰度自动切换、多格式支持。

    媒体ID的播放方式使用访问控制服务的安全令牌,安全令牌不使用主账号的权限,而是使用子账号的权限,且提供了有时效的访问权限,能很好的避免权限泄露等问题。

    说明
    • 为了保证加密视频的安全性,加密视频的播放必须使用媒体ID的播放方式。WEB端播放加密视频请使用Flash播放器(HTML5不支持加密视频播放)。
    • 直播客户使用工作流方式转点播,可使用RecordUrl查询出MediaID,进行播放,接口为 QueryMediaListByURL。参见 媒体转码SDK

播放流程

播放地址的播放方式参见 播放器文档

媒体ID播放流程:

  1. 业务授权

    移动端APP或者PC端Web页面的用户访问视频时,先访问您平台的API或后端页面,您可以在这里加上自己的权限控制(例如,需要登录才能播放),如果业务上允许播放,您可以继续访问阿里云的 访问控制服务 获取 安全令牌。详细的配置和示例参见如下 安全令牌 步骤。

  2. 播放地址

    移动端APP或者PC端Web页面把 安全令牌媒体ID 参数传给阿里云的播放器SDK,播放器SDK负责剩下的播放流程:

    • 根据媒体ID从MPS服务获取对应的多格式、多清晰的播放地址。

    • 如果是加密视频,则获取对应的加密钥匙。

    • 根据您的配置,自动添加CDN的鉴权信息,确保安全播放。

  3. 播放、解密

    如果是加密视频,播放SDK内核中先使用加密钥匙对内容解密,然后进行视频播放。

安全令牌

安全令牌需要先 设置子账号和授权,在 编辑角色的权限 这个步骤时,增加角色授权策略 AliyunMTSPlayerAuth,如下图:

设置好后,获得安全令牌,参见 请求安全令牌-Java示例代码。详细文档以及更多语言的示例请参见访问控制的 开发指南 >SDK参考

播放鉴权

播放器SDK的主要参数一览表:
参数 参数说明 类型 是否必须
vid 媒体ID String
source 播放地址,参考简介的播放方式 String
accId STS AccessKeyId,参考安全令牌 String
accSecret STS AccessKeySecret,参考安全令牌 String
stsToken STS SecurityToken,参考安全令牌 String
domainRegion 媒体工作流所在的区域(cn-shanghai,cn-hangzhou等) String
authInfo 鉴权信息,json字符串,组成见下面详细说明 String

authInfo是一个json对象。包含3个属性:

  • ExpireTime:鉴权过期的UTC时间(其他时区的时间要转换成UTC时间),只能在设定的过期时间之前获取播放视频的URL,否则会导致权限过期无法播放。格式示例:2017-03-25T23:59:59Z。

  • MediaId:媒体处理服务的媒体ID。

  • Signature:鉴权签名,避免伪造的请求。

Signature计算过程如下:
  • 参数
    ExpireTime="2017-03-25T23:59:59Z"
      MediaId="5aa0276ff6204ace950f75acf9e6187b"
  • 签名字符串

    把参数按照字母顺序排序,key=value的格式,并使用“&”拼接。其中value必须采用URLEncode编码。
    ExpireTime=2017-03-25T23%3A59%3A59Z&MediaId=5aa0276ff6204ace950f75acf9e6187b
  • 签名算法

    用HMAC_SHA1计算出二进制的结果后,做Base64编码。其中HMAC_SHA1的Key可以从媒体处理控制台的页面 媒体库设置 > 播放鉴权 > 鉴权Key 获取。

    在类Unix系统中,可以使用openssl+base64命令来生成,在类Unix系统中,可以使用openssl+base64命令来生成,假设鉴权Key=”secret”,执行如下命令:
    $echo -n 'ExpireTime=2017-03-25T23%3A59%3A59Z&MediaId=5aa0276ff6204ace950f75acf9e6187b' | openssl sha1 -binary -hmac 'secret' | base64
      z7mmSRuTXo4mydiWhRtbu8JKDpM=
  • 最终结果
    {
        "ExpireTime":"2017-03-25T23:59:59Z",
        "MediaId":"5aa0276ff6204ace950f75acf9e6187b",
        "Signature":"z7mmSRuTXo4mydiWhRtbu8JKDpM="
      }

播放器的使用

MPS播放器已和点播播放器合并。参见 播放器SDK产品介绍及使用说明

说明 MPS用户可以使用新版提供的高级播放器进行升级。