视频播放

媒体处理支持通过播放地址和通过媒体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播放加密视频的流程如下图: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遵循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用户可以使用新版提供的高级播放器进行升级。