本文通過樣本詳細介紹如何使用服務端上傳SDK(Python語言)將各類媒體檔案上傳至點播儲存。
整體說明
從內部邏輯角度看,Python上傳SDK遵循點播服務端SDK的通用流程。詳情請參見上傳流程。從操作角度看,使用Python上傳SDK的基礎流程如下:
完成前提條件。具體操作請參見前提條件。
整合Python上傳SDK。具體操作請參見整合Python上傳SDK。
實現上傳邏輯(主要是上傳資訊配置)。
音視頻上傳請參見情境一:上傳音視頻。
圖片上傳請參見情境二:上傳圖片。
輔助媒資上傳請參見情境三:上傳輔助媒資。
Python上傳SDK預設服務存取點為
cn-shanghai
(上海), 若需要上傳媒體檔案到其他地區,可以通過AliyunVodUploader.py
中的ApiRegion
來指定地區,點播支援的服務存取點,請參見服務存取點。以指定上傳地區為
cn-beijing
(北京)為例,配置樣本如下:self.setApiRegion('cn-beijing')
前提條件
您已經開通了ApsaraVideo for VOD服務。開通步驟請參見開通ApsaraVideo for VOD服務。
您已經完成上傳相關的系統配置,包括啟用目標儲存地區的儲存地址和配置回調。操作指引請參見管理儲存Bucket及回調設定。
您已準備好用於調用點播服務的帳號。為避免阿里雲帳號AccessKey泄露帶來的安全風險,推薦您建立RAM使用者並授予其VOD相關許可權。然後使用RAM使用者的AK對(AccessKey ID和AccessKey Secret)訪問點播服務。操作指引請參見建立RAM使用者並授權。
已配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變數。
重要阿里雲帳號的AccessKey擁有所有API的存取權限,建議您使用RAM使用者的AccessKey進行API訪問或日常營運。
強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
(可選)如需使用STS臨時授權方式(阿里雲Security Token Service)訪問點播服務,請為RAM使用者建立角色並授予角色VOD相關許可權。操作指引請參見使用STS臨時授權方案上傳視頻。
說明STS臨時授權方式的適用情境請參見憑證方式與STS方式對比。
整合Python上傳SDK
上傳SDK目錄詳細介紹請參見下文目錄說明。
本文以普通使用者執行操作為例進行說明。
執行以下命令安裝依賴包。
sudo pip install aliyun-python-sdk-core
sudo pip install aliyun-python-sdk-vod
sudo pip install oss2
說明如果使用的是 Python 3.x,請將sudo pip install aliyun-python-sdk-core修改為sudo pip install aliyun-python-sdk-core-v3。如果同時安裝了不同版本,可使用pip3命令。如果整合遇到問題,請參見常見問題排查。
下載Python上傳SDK及範例程式碼VodUploadSDK-Python_1.3.*.zip,更多資訊,請參見上傳SDK。
說明此處以SDK1.3.1版本舉例說明。其他版本請根據實際情況操作。
解壓VodUploadSDK-Python_1.3.*.zip,將VodUploadSDK-Python_1.3.*目錄下的voduploadsdk複製到本地專案工程目錄下(推薦),或複製到site-packages目錄下。
更新Python上傳SDK
若發現新的介面或已有介面新的功能在當前SDK沒有,可將SDK更新到最新版。
執行以下命令更新依賴包。
sudo pip install --upgrade aliyun-python-sdk-vod
sudo pip install --upgrade oss2
下載最新的Python上傳SDK覆蓋到本地SDK檔案。更多資訊,請參見SDK下載。
說明您可以開啟voduploadsdk目錄下的ChangeLog.txt檔案查看當前SDK的版本號碼和發布日期。
Python上傳SDK目錄說明
voduploadsdk目錄
AliyunVodUtils.py
目錄
說明
AliyunVodLog
上傳SDK的日誌類,基於logging實現。
AliyunVodUtils
上傳SDK的工具類。
AliyunVodException
上傳SDK的異常類,做統一的異常處理,外部捕獲此異常即可。
UploadVideoRequest.py
目錄
說明
UploadVideoRequest
上傳視頻的請求類,欄位請參見擷取音視頻上傳地址和憑證。
UploadImageRequest.py
目錄
說明
UploadImageRequest
上傳圖片的請求類,欄位請參見擷取圖片上傳地址和憑證。
UploadAttachedMediaRequest.py
目錄
說明
UploadAttachedMediaRequest
上傳輔助媒資的請求類,欄位請參見擷取輔助媒資上傳地址和憑證。
AliyunVodUploader.py
目錄
說明
uploadLocalVideo
上傳本地視頻的介面。
uploadWebVideo
上傳網路視頻的介面。
uploadLocalM3u8
上傳本地m3u8視頻。
uploadWebM3u8
上傳網路m3u8視頻。
uploadImage
上傳本地或網狀圖片檔案。
uploadAttachedMedia
上傳本地或網路輔助媒資檔案。
parseWebM3u8
解析網路m3u8檔案的分區資訊。
parseLocalM3u8
解析本地m3u8檔案的分區資訊。
setApiRegion
設定VoD的接入地址。預設為cn-shanghai(上海),海外支援ap-southeast-1(新加坡)等地區。詳情請參見點播地區標識。
setMultipartUpload
設定分區上傳的閾值、分區大小。
uploadProgressCallback
上傳進度回呼函數,可重寫。
setEnableCrc
上傳時是否啟用CRC校正,預設開啟。
ChangeLog.txt:版本發布記錄,首行即為當前SDK的版本號碼和發布日期。
samples目錄
uploadVideo.py:上傳視頻的範例程式碼。
uploadImage.py:上傳圖片的範例程式碼。
uploadAttachedMedia.py:上傳輔助媒資檔案的範例程式碼。
情境一:上傳音視頻
普通檔案上傳
音視頻上傳目前支援以下類型檔案上傳:
上傳本地檔案,使用分區上傳,最大支援48.8 TB的單個檔案,不支援斷點續傳。請參見範例程式碼中的testUploadLocalVideo函數。
上傳網路檔案,可指定檔案URL進行上傳,最大支援48.8 TB的單個檔案。該上傳方式需要先將網路檔案下載到本地磁碟,再進行上傳,所以要保證本地磁碟有充足的空間。請參見testUploadWebVideo函數。
M3U8檔案上傳
情境二:上傳圖片
情境三:上傳輔助媒資
常見問題
使用範例程式碼上傳網路視頻流時,如果報ERROR:root:Download fail: [Errno 2] No such file or directory
錯誤,解決辦法為:在voduploadsdk同級目錄下手動建立dlfiles檔案夾。