本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文為您介紹使用視頻點播服務過程中常見的報錯及相應的處理建議。
使用視頻點播服務過程中報“No 'Access-Control-Allow-Origin'”的錯誤
報錯No 'Access-Control-Allow-Origin'
為跨域錯誤,您需要進行跨域配置。您可以參考下述方法進行配置:
登錄視頻點播控制臺。
在左側導航欄選擇配置管理 > 分發加速配置 > 域名管理。
選擇您要配置的域名,單擊配置。
在指定域名的左側導航欄,單擊緩存配置。
選擇自定義HTTP響應頭頁簽,單擊添加,配置自定義HTTP響應頭。
配置自定義響應頭參數為Access-Control-Allow-Origin,響應頭值配置為
*
或需要訪問的完整域名,例如www.aliyundoc.com。 更多詳細信息,請參見自定義HTTP響應頭。單擊確定,完成配置。
有關阿里云Web播放器SDK相關的跨域配置,請參見配置跨域訪問。
使用視頻點播服務過程中報AliyunVODDefaultRole不存在的錯誤
使用視頻點播的HLS標準加密、MNS回調及STS臨時授權訪問等部分功能時,會涉及訪問其他云產品的資源,則需要視頻點播擁有相應的權限,例如使用HLS標準加密功能需要KMS的權限、使用MNS回調功能需要MNS的權限等等。
AliyunVODDefaultRole是由點播系統創建的角色,該角色擁有對您OSS、MNS、CDN、以及KMS云資源的部分權限。當提示您AliyunVODDefaultRole不存在時,例如報錯The role not exists: acs:ram::1748098****:role/AliyunVODDefaultRole.
,您可以通過訪問云資源訪問授權頁面進行授權解決。
播放私有加密視頻時,報”ERROR_SERVER_VOD_FORBIDDEN_ALIYUNVODENCRYPTION“的錯誤
為了保障您的視頻安全,當直接調用GetPlayInfo - 獲取音視頻播放地址接口獲取播放地址進行播放時,默認不返回私有加密流。因此,通過該方式播放私有加密視頻時,會出現視頻播放失敗并報錯ERROR_SERVER_VOD_FORBIDDEN_ALIYUNVODENCRYPTION
。您可以通過下述方式解決:
方式一:調用GetPlayInfo - 獲取音視頻播放地址接口時,設置
ResultType
參數值為Multiple
來獲取所有轉碼完成的播放地址。方式二:經阿里云視頻加密(私有加密)方式加密的視頻,支持使用阿里云播放器SDK對視頻進行解密播放。建議您使用阿里云播放器SDK播放視頻,詳情請參見使用阿里云播放器。
視頻點播的視頻播放地址過期
問題現象
當您使用阿里云視頻點播產品,通過瀏覽器訪問某視頻點播地址時,訪問失敗,出現類似如下錯誤提示。
<Error>
<Code>AccessDenied</Code>
<Message>Request has expired.</Message>
<RequestId>5DF332644EAA4931361D1E43</RequestId>
<HostId>
outin-2cc63XXXXXXe1c955c.oss-cn-shanghai.aliyuncs.com
</HostId>
<Expires>2019-12-13T06:37:22.000Z</Expires>
<ServerTime>2019-12-13T06:40:36.000Z</ServerTime>
</Error>
問題原因
視頻點播產品底層的存儲依賴于OSS產品,如果沒有添加視頻點播域名,那么視頻點播中的原始文件和轉碼文件地址,即流暢、標清、高清等視頻都是使用類似于outin-6a6fd4XXXXXXe1a65b6.oss-cn-shanghai.aliyuncs.com
樣式的OSS域名。
由于視頻點播底層使用的OSS存儲空間默認是私有權限,所以需要使用帶簽名參數的URL訪問,即URL中需要攜帶Expires、Signature和AccessKey ID三個簽名參數。但是該簽名URL是存在過期時間,簽名URL中的Expires字段是UNIX時間戳,標識的就是過期時間。綜上所述,當以下條件成立時,你可能遇到上述報錯:
沒有為視頻點播產品添加視頻點播域名。
底層OSS存儲權限并未設置為公共讀,默認情況下底層OSS存儲空間為私有權限。
解決方案
您可以通過以下兩種方案解決此問題:
當使用視頻點播底層的OSS域名進行訪問時,不會使用視頻點播的視頻分發加速功能。這種情況下,播放視頻時沒有加速效果,而且所產生的訪問流量也無法使用視頻點播的流量包抵扣,而是會產生存儲流出流量的費用,因為點播流量包只能抵扣使用視頻點播域名播放視頻產生的流量。如果使用視頻點播域名播放視頻,是可以基于點播底層的CDN加速分發視頻,并且產生的流出流量可以使用流量資源包進行抵扣,因此推薦使用方案一。
方案一:為視頻點播配置加速域名(推薦)
注意事項
由于視頻點播域名需要配置CNAME記錄,而CNAME記錄和A記錄是沖突的,具體沖突規則請參見解析記錄沖突規則,因此配置CNAME記錄前需要先刪除A記錄。
建議視頻點播域名不要使用網站站點的域名,因為站點域名通常是使用A記錄進行解析。如果刪除A記錄后,將無法訪問站點,因此建議使用新的域名進行配置。
視頻點播加速域名默認不開啟鑒權,因此在未開啟鑒權的情況下,使用視頻點播加速域名的視頻URL是沒有過期時間的。如果開啟了視頻點播域名的URL鑒權功能,那么視頻URL也是存在過期時間的,鑒權相關信息請參見配置URL鑒權。
配置方法
登錄視頻點播控制臺。
在左側導航欄選擇配置管理 > 分發加速配置 > 域名管理,進入到域名管理頁面。
確認是否已添加域名。
如果已存在域名,但域名未啟用,則請啟用該域名并確認CNAME記錄添加成功即可。
如果不存在域名,則參考下一步進行域名添加。
在域名管理頁面,單擊添加域名,配置域名信息后,單擊提交。
詳細參數解釋請參見添加加速域名。域名添加完成后,請參見配置CNAME進行CNAME配置。添加視頻點播域名以后,為了有更好的加速效果,建議您添加緩存配置,詳情請參見緩存配置。
方案二:將默認的OSS存儲權限設置為公共讀
將OSS權限修改成公共讀,然后使用不帶簽名參數的URL進行訪問,排除URL過期時間的影響。
配置為公共讀權限后,互聯網上任何用戶都可以對該Bucket內的文件進行訪問,這可能造成您數據的外泄以及費用激增,請謹慎配置公共讀權限。
登錄視頻點播控制臺。
在左側導航欄選擇配置管理 > 媒資管理配置 > 存儲管理,進入到存儲管理頁面。
單擊目標存儲地址操作列的管理。
在權限區域,單擊修改配置。
設置權限為公共讀后,單擊確定。
修改成公共讀權限后,視頻點播控制臺默認提供的視頻地址還是攜帶簽名參數的URL。因此,使用時需要去除URL中
?
以及之后的簽名參數,使用類似如下沒有過期時間參數的URL訪問即可。https://outin-ebdeeXXXXXX3e008181.oss-cn-shanghai.aliyuncs.com/1db42d58e9694bf681d838f0ed9****/d0a5a57cb830412ca133607e****-ld.mp4