全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
媒体转码

视频播放

更新时间:2017-11-16 20:19:10

简介

视频播放有2种方式

  • 播放地址

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

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

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

  • 媒体ID

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

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

    注:为了保证加密视频的安全性,加密视频的播放必须使用媒体ID的播放方式。WEB端播放加密视频请使用Flash播放器(HTML5不支持加密视频播放)

    注:直播客户使用工作流方式转点播,可使用RecordUrl查询出MediaID,进行播放,接口为QueryMediaListByURL,示例请看媒体转码SDK

播放流程

由于播放地址的播放方式比较简单,这里不介绍,详细参考播放器文档。

下面描述媒体ID播放的流程,包含3个步骤:

播放流程

  • 业务授权

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

  • 播放地址

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

    • 根据媒体ID从MTS服务获取对应的多格式、多清晰的播放地址
    • 如果是加密视频则获取对应的加密钥匙
    • 根据用户的配置,自动添加CDN的鉴权信息,确保安全播放
  • 播放/解密

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

安全令牌

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

授权

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

播放鉴权

播放器SDK的主要参数一览表

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

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

  • ExpireTime:鉴权过期的UTC时间(其他时区的时间要转换成UTC时间),只能在设定的过期时间之前获取播放视频的URL,否则会导致权限过期无法播放。格式示例:2017-03-25T23:59:59Z。
  • MediaId:媒体转码服务的媒体ID
  • Signature:鉴权签名,避免伪造的请求

Signature计算过程如下

  • 参数

    1. ExpireTime="2017-03-25T23:59:59Z"
    2. MediaId="5aa0276ff6204ace950f75acf9e6187b"
  • 签名字符串

    把参数按照字母顺序排序,key=value的格式,并使用”&”拼接。其中value必须采用URLEncode编码。

    1. ExpireTime=2017-03-25T23%3A59%3A59Z&MediaId=5aa0276ff6204ace950f75acf9e6187b
  • 签名算法

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

    在类Unix系统中,可以使用openssl+base64命令来生成,在类Unix系统中,可以使用openssl+base64命令来生成,假设鉴权Key=”secret”,执行如下命令:

    1. $echo -n 'ExpireTime=2017-03-25T23%3A59%3A59Z&MediaId=5aa0276ff6204ace950f75acf9e6187b' | openssl sha1 -binary -hmac 'secret' | base64
    2. z7mmSRuTXo4mydiWhRtbu8JKDpM=
  • 最终结果

    1. {
    2. "ExpireTime":"2017-03-25T23:59:59Z",
    3. "MediaId":"5aa0276ff6204ace950f75acf9e6187b",
    4. "Signature":"z7mmSRuTXo4mydiWhRtbu8JKDpM="
    5. }

播放器的使用

MTS播放器已和点播播放器合并,用户可以直接参考点播提供的播放器。详见:

播放器SDK产品介绍及使用说明

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

本文导读目录