视频播放
媒体处理支持通过播放地址和通过媒体ID播放视频。本文介绍了视频播放的方式以及视频播放步骤。
播放方式
通过播放地址播放:
场景:针对提交转码作业的输出视频,有确定的输出地址。直接把需要播放的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播放加密视频的流程如下图:
请按以下指引完成视频加密:
业务方搭建令牌服务,用于颁发令牌MtsHlsUriToken。
重要令牌服务指用于派发MtsHlsUriToken的服务。
业务方调用KMS解密接口搭建解密服务,用于解密视频,同时提供数据密钥(DK)给播放终端。
重要KMS返回Base64加密后的数据密钥给业务方。业务方需要将调用KMS接口获得的数据密钥Base64 Decode之后返回给播放终端。
业务方调用MPS的QueryMediaList接口获取视频M3U8文件的OSS地址,并将地址拼接MtsHlsUriToken后返回给播放终端。
播放终端携带MtsHlsUriToken、数据密钥向阿里云CDN请求播放地址,阿里云CDN改写M3U8文件,将业务方的Key URI与信封加密密钥返回播放终端。播放终端解密播放视频。
安全令牌
播放鉴权
播放器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遵循RFC-2396(UTF-8编码,并进行URLEncode)。更多信息,请参见URL Encoding说明。
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用户可以使用新版提供的高级播放器进行升级。