本文介绍了视频播放的方式以及如何进行视频播放。

播放方式

  • 通过播放地址播放:
    • 场景:针对提交转码作业的输出视频,有确定的输出地址。直接把需要播放的URL地址(OSS URL或CDN URL)传给阿里云播放器SDK。
    • 优点:服务端负责生成最终的播放URL地址,客户端实现简单。
    • 缺点:服务端需要实现OSS、CDN的鉴权以及URL域名的拼接等,且客户端无法实现多个清晰度手动、自动切换。
  • 通过媒体ID播放
    • 优点:使用媒体工作流时,每个多媒体输入文件由媒体ID(MediaId)唯一标识,一一对应。媒体ID可以关联多个格式、多个清晰度的输出,所以使用媒体ID播放时,可以实现多清晰度自动切换。多格式支持。
    • 播放方式:使用访问控制RAM服务的安全令牌。安全令牌不使用主账号的权限,而是使用子账号的权限,并且提供了有时效的访问权限,能很好的避免权限泄露等问题。
    说明
    • 为了保证加密视频的安全性,加密视频的播放必须使用媒体ID的播放方式。Web端播放加密视频请使用Flash播放器(HTML5不支持加密视频播放)。
    • 直播客户使用工作流方式转点播,可使用RecordUrl查询出媒体ID进行播放,接口为查询媒体-使用OSS文件地址。更多信息请参见媒资转码SDK

播放地址播放

服务端实现OSS、CDN的鉴权以及URL域名的拼接后,直接把需要播放的URL地址(OSS URL或CDN URL)传给播放器SDK。鉴权详细信息请参见播放鉴权

媒体ID播放

通过媒体ID播放加密视频需要使用RAM服务的安全令牌。安全令牌详细信息请参见安全令牌

通过媒体ID播放加密视频的流程如下图:mts_hls_decrypt

请按以下指引完成视频加密:

  1. 业务方搭建令牌服务,用于颁发令牌MtsHlsUriToken。
    注意 令牌服务指用于派发MtsHlsUriToken的服务。
  2. 业务方调用KMS解密接口搭建解密服务,用于解密视频,同时提供数据密钥(DK)给播放终端。
    注意 KMS返回Base64加密后的数据密钥给业务方。业务方需要将调用KMS接口获得的数据密钥Base64 Decode之后返回给播放终端。
  3. 业务方调用MPS的QueryMediaList接口获取视频M3U8文件的OSS地址,并将地址拼接MtsHlsUriToken后返回给播放终端。
  4. 播放终端携带MtsHlsUriToken、数据密钥向阿里云CDN请求播放地址,阿里云CDN改写M3U8文件,将业务方的Key URI与信封加密密钥返回播放终端。播放终端解密播放视频。

安全令牌

  1. 安全令牌需在RAM用户授权时,增加角色授权策略,具体操作请参见设置RAM用户和授权

  2. 设置好后,获得安全令牌,参见请求安全令牌。更多语言示例请参Java示例.NET示例Python示例Node.js示例Go示例

播放鉴权

播放器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,否则会导致权限过期无法播放。格式示例:2021-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编码。

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

播放器的使用

MPS播放器已和点播播放器合并。具体使用请参见播放器SDK简介
说明 MPS用户可以使用新版提供的高级播放器进行升级。