ApsaraVideo for Media Processing支援通過播放地址和通過媒體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:ApsaraVideo for Media Processing服務的媒體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使用者可以使用新版提供的進階播放器進行升級。