全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
媒体处理

视频播放

更新时间:2018-02-06 00:55:04

视频播放有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个步骤:

2

  • 业务授权

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

  • 播放地址

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

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

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

    • 根据用户的配置,自动添加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. }

播放器的使用

MPS播放器已和点播播放器合并,用户可以直接参考点播提供的播放器。参见 播放器SDK产品介绍及使用说明

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

本文导读目录