【視頻點播最佳實踐】視頻點播播放異常排查
阿裏雲視頻點播是集音視頻采集、編輯、上傳、自動化轉碼處理、媒體資源管理、分發加速、視頻播放於一體的一站式音視頻點播解決方案。但是對於使用者來說經常遇到的問題即是視頻點播中的視頻如何對外提供服務,並且當播放出現異常時如何進行排查呢?本文主要從該方麵為大家介紹視頻點播的播放方式和異常排查。
播放方式
視頻點播提供了三種方式進行播放分別適用於不同的場景。用戶可以根據自己的使用場景選擇合適的方法進行播流,下麵依次介紹該三種播放方式:
1. 使用播放URL進行播放
視頻點播的使用是存儲在產品統一的 Bucket 中,因此與 OSS 中的視頻都可以直接簡單獲取 URL 進行訪問方式不同。產品統一的並不屬於用戶自己,因此用戶是無法通過自己賬號的 AccessKeyId 和 AccessKeySecret 獲取播放的權限。
用戶獲取視頻播放 URL 是需要通過視頻點播提供的 GetPlayInfo 接口獲取播放信息,具體接口信息請參考獲取視頻播放地址,該接口會根據用戶在視頻點播配置的轉碼規則分別提供所有的轉碼後的資源的 URL 以及對應的視頻的基本信息。
注意:
1. 對於所有狀態不是“正常”狀態的視頻資源將無法調用該接口(例如:轉碼中、審核中等執行狀態),否則將直接拋出錯誤:Forbidden.IllegalStatus : Status of the video is illegal。
2. 對於內容加密的視頻通過該接口獲取得到的播放 URL 是不需要解密播放並且可以直接下載得到該視頻,因此對於內容加密的視頻並不適合與使用 URL 的方式進行播放。
3. 由於後續的兩種方案都僅能夠支持視頻點播官方提供的播放器,如果需要使用第三方的播放器插件的話隻能夠使用本方法播放。
4. 播放 URL 在沒有開啟 URL 鑒權的情況下獲取的 URL 是永久可以訪問的,但是在開啟鑒權後獲取的 URL 是帶有 auth_key 參數的,對應的 URL地址也是存在有效時間的,超過有效時間將出現 403 的錯誤。
2. 使用播放鑒權播放
播放鑒權是視頻點播在阿裏雲 AK 安全認證基礎上的二次鑒權機製。播放鑒權的機製是根據使用不同的終端設備播放器的 SDK 提供了不同的鑒權 Key,然後用戶可以使用賬號的 AccessKeyId 和 AccessKeySecret 結合對應客戶端播放鑒權進行播放即可。我們分別提供了html5、flash、android和IOS不同平台的鑒權,查看方法如圖1所示。
圖 1. 點播播放鑒權示意圖
對應的web端實例代碼請參考如下demo:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/1.6.3/skins/default/index.css" />
<script type="text/javascript" src="https://g.alicdn.com/de/prismplayer/1.6.3/prism.js"></script>
</head>
<body>
<div ></div>
<script>
var player = new prismplayer( {
id: "J_prismPlayer",
autoplay: true,
width: "1920px",
height: "1280px",
//播放方式二
prismType:2,
//固定參數
vid : '視頻ID',
accId : '用戶AK id,推薦子賬號',
accSecret : '用戶AK secret,推薦子賬號',
apiKey : 'H5播放器對應的播放密鑰',
flashApiKey : 'Flash播放器對應的播放密鑰',
});
</script>
</body>
</html>
注意:
1. 上述的 AccessKeyId 和 AccessKeySecret 推薦使用 RAM 子賬號進行設置,因為該頁麵是展示在前端的應用或者頁麵中,需要進行更細粒度的安全控製,僅需要給該子賬號賦權 AliyunMTSPlayerAuth 即可。
2. 上述方式由於多個參數均是固定參數並且沒有時間限製導致可能出現安全風險,因此建議盡量避免使用本方法。
3. 上述的方法可以同時配置 apiKey 和 flashApiKey 的話將可以使用兼容模式同時在 html5 和 flash 模式下播放。
3. 使用播放憑證播放
播放憑證方式播放是通過 vid 和臨時播放憑證(playAuth)進行播放的,由於 playAuth 是服務器端根據AccessKeyId 和 AccessKeySecret 獲取的,並且是有 100 秒的有效時間的,因此較為有效的保護資源的安全性的。具體的 web 端播放的 demo 如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
<title>用戶測試用例</title>
<link rel="stylesheet" href="//g.alicdn.com/de/prismplayer/1.9.9/skins/default/index.css" />
<script type="text/javascript" src="//g.alicdn.com/de/prismplayer/1.9.9/prism-min.js"></script>
</head>
<body>
<div ></div>
<script>
var player = new prismplayer({
id: 'J_prismPlayer',
width: '100%',
autoplay: false,
vid : '',
playauth : '',
});
</script>
</body>
</html>
注意:
1. playAuth 我們提供的 SDK 均是服務器端的 SDK,包括有Java、.net、php和 python 的版本,其主要原因是因為 playAuth 生成由於涉及到 AccessKeyId 和 AccessKeySecret 因此不建議在客戶端直接生成,而建議客戶端向服務器端發請求獲取 playAuth 後直接播放,如果用戶一定需要在客戶端獲取的話是需要使用我們提供的 api 接口實現的,其文檔請參考:獲取視頻播放憑證;
2. playAuth 可以通過有效時間保護視頻資源,但是其並不能完全避免盜鏈的情況發生,建議如果是 flash 播放器 hls 資源可以考慮使用視頻點播提供的內容加密功能,詳細請參考:內容加密
播放異常排查
使用上述播放方式播放點播中的資源時經常會出現無法正常播放的情況,建議我們可以考慮如下的步驟逐個排查其無法播放的詳細原因並修改。
1. 域名解析導致播放異常
視頻點播在開通服務時即需要用戶綁定自己的域名到視頻點播服務中。而視頻點播中所有的視頻都是需要通過該域名提供鏈接進行播放的,因此該域名的解析配置正確將是能夠正確播放的第一步。
視頻點播的域名管理截圖如圖 2 所示。視頻點播是可以添加多個域名在視頻點播服務中的,但是同一時間啟用的僅能夠有一個域名。在配置完域名後需要用戶到 DNS 提供商出配置該域名解析到視頻點播提供的 CNAME 地址上才可以正常訪問的。
圖 2. 點播域名管理示意圖
注意:
1. CNAME 記錄和其他的 A 記錄是相衝突的,因此某個域名解析到視頻點播的話是無法再解析到其他的服務器的,因此這裏建議使用還沒有使用的子域名後添加並設置解析,而不要使用綁定在站點上的主域名。
2、DNS 解析配置截圖請參考圖 3,其中記錄類型是需要選擇“CNAME”,主機記錄填寫子域名的記錄值,例如圖 2 中的子域名為 vod ,那麼這裏我們應該填寫的即是 vod 。記錄值填寫視頻點播提供的完整的 CNAME 域名,如圖 2 中的 vod.xxxx.com.danuoyi.tbcache.com。
圖 3. DNS解析示意圖
2. 防盜鏈設置導致播放異常
在設置完成上述解析後會可以通過視頻點播控製台的播放功能測試是否正常的。當出現控製台播放正常,但是通過上述方法播放測試仍然有問題時刻查看安全防護設置是否禁止了訪問。
防盜鏈是通過 HTTP 請求頭中的 Referer 字段來控製訪問來源是否允許,具體的設置請參考圖 4,可以分別選擇 Referer 白名單或者 Referer 黑名單,兩者僅能夠同一時間生效一種。當設置了之後就會僅允許或者限製某些 Referer 頭訪問。
圖 4. 點播防盜鏈示意圖
圖5的示例即是被Referer防盜鏈限製的結果。
圖 5. 防盜鏈攔截示意圖
3. 播放憑證選擇錯誤導致播放異常
當使用上述第二種播放方式時需要根據對應的播放器終端設備選擇對應的播放憑證,如果設置錯誤的話將會導致無法播放,用戶需要根據客戶端選擇正確的播放憑證。另外針對於 web 播放器的兼容模式可以同時設置 apiKey 和flashApiKey 參數保證同時在 flash 和 html5 播放正常。
4)playAuth 超時導致播放異常
當采用上述第三種播放方式播放時需主要獲取 playAuth 的業務邏輯,由於playAuth 僅有 100 秒的有效時間,超過該有效時間後將導致新發起的播放請求無法播放(但是不影響正在播放的視頻),因此業務端需要在少於 100 秒更新一次 playAuth 。
最後更新:2017-09-08 21:32:29