媒體處理支持通過播放地址和通過媒體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用戶可以使用新版提供的高級播放器進行升級。