日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用Python SDK上傳文件

本文通過示例詳細(xì)介紹如何使用服務(wù)端上傳SDK(Python語言)將各類媒體文件上傳至點(diǎn)播存儲。

整體說明

從內(nèi)部邏輯角度看,Python上傳SDK遵循點(diǎn)播服務(wù)端SDK的通用流程。詳情請參見上傳流程。從操作角度看,使用Python上傳SDK的基礎(chǔ)流程如下:

  1. 完成前提條件。具體操作請參見前提條件

  2. 集成Python上傳SDK。具體操作請參見集成Python上傳SDK

  3. 實現(xiàn)上傳邏輯(主要是上傳信息配置)。

  4. Python上傳SDK默認(rèn)服務(wù)接入點(diǎn)為cn-shanghai(上海), 若需要上傳媒體文件到其他區(qū)域,可以通過AliyunVodUploader.py中的ApiRegion來指定區(qū)域,點(diǎn)播支持的服務(wù)接入點(diǎn),請參見服務(wù)接入點(diǎn)

    以指定上傳區(qū)域為cn-beijing(北京)為例,配置示例如下:

    self.setApiRegion('cn-beijing')

前提條件

  • 您已經(jīng)開通了視頻點(diǎn)播服務(wù)。開通步驟請參見開通視頻點(diǎn)播服務(wù)

  • 您已經(jīng)完成上傳相關(guān)的系統(tǒng)配置,包括啟用目標(biāo)存儲地域的存儲地址和配置回調(diào)。操作指引請參見管理存儲Bucket回調(diào)設(shè)置

  • 您已準(zhǔn)備好用于調(diào)用點(diǎn)播服務(wù)的賬號。為避免阿里云賬號AccessKey泄露帶來的安全風(fēng)險,推薦您創(chuàng)建RAM用戶并授予其VOD相關(guān)權(quán)限。然后使用RAM用戶的AK對(AccessKey ID和AccessKey Secret)訪問點(diǎn)播服務(wù)。操作指引請參見創(chuàng)建RAM用戶并授權(quán)

  • 已配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統(tǒng)配置環(huán)境變量

    重要
    • 阿里云賬號的AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶的AccessKey進(jìn)行API訪問或日常運(yùn)維。

    • 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。

  • (可選)如需使用STS臨時授權(quán)方式(阿里云Security Token Service)訪問點(diǎn)播服務(wù),請為RAM用戶創(chuàng)建角色并授予角色VOD相關(guān)權(quán)限。操作指引請參見使用STS臨時授權(quán)方案上傳視頻

    說明

    STS臨時授權(quán)方式的適用場景請參見憑證方式與STS方式對比

集成Python上傳SDK

說明
  • 上傳SDK目錄詳細(xì)介紹請參見下文目錄說明

  • 本文以普通用戶執(zhí)行操作為例進(jìn)行說明。

  1. 執(zhí)行以下命令安裝依賴包。

    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命令。如果集成遇到問題,請參見常見問題排查。

  2. 下載Python上傳SDK及示例代碼VodUploadSDK-Python_1.3.*.zip,更多信息,請參見上傳SDK

    說明

    此處以SDK1.3.1版本舉例說明。其他版本請根據(jù)實際情況操作。

  3. 解壓VodUploadSDK-Python_1.3.*.zip,將VodUploadSDK-Python_1.3.*目錄下的voduploadsdk復(fù)制到本地項目工程目錄下(推薦),或復(fù)制到site-packages目錄下。

更新Python上傳SDK

若發(fā)現(xiàn)新的接口或已有接口新的功能在當(dāng)前SDK沒有,可將SDK更新到最新版。

  1. 執(zhí)行以下命令更新依賴包。

    sudo pip install --upgrade aliyun-python-sdk-vod

    sudo pip install --upgrade oss2

  2. 下載最新的Python上傳SDK覆蓋到本地SDK文件。更多信息,請參見SDK下載

    說明

    您可以打開voduploadsdk目錄下的ChangeLog.txt文件查看當(dāng)前SDK的版本號和發(fā)布日期。

Python上傳SDK目錄說明

voduploadsdk目錄

  • AliyunVodUtils.py

    目錄

    說明

    AliyunVodLog

    上傳SDK的日志類,基于logging實現(xiàn)。

    AliyunVodUtils

    上傳SDK的工具類。

    AliyunVodException

    上傳SDK的異常類,做統(tǒng)一的異常處理,外部捕獲此異常即可。

  • UploadVideoRequest.py

    目錄

    說明

    UploadVideoRequest

    上傳視頻的請求類,字段請參見獲取音視頻上傳地址和憑證

  • UploadImageRequest.py

    目錄

    說明

    UploadImageRequest

    上傳圖片的請求類,字段請參見獲取圖片上傳地址和憑證

  • UploadAttachedMediaRequest.py

    目錄

    說明

    UploadAttachedMediaRequest

    上傳輔助媒資的請求類,字段請參見獲取輔助媒資上傳地址和憑證

  • AliyunVodUploader.py

    目錄

    說明

    uploadLocalVideo

    上傳本地視頻的接口。

    uploadWebVideo

    上傳網(wǎng)絡(luò)視頻的接口。

    uploadLocalM3u8

    上傳本地m3u8視頻。

    uploadWebM3u8

    上傳網(wǎng)絡(luò)m3u8視頻。

    uploadImage

    上傳本地或網(wǎng)絡(luò)圖片文件。

    uploadAttachedMedia

    上傳本地或網(wǎng)絡(luò)輔助媒資文件。

    parseWebM3u8

    解析網(wǎng)絡(luò)m3u8文件的分片信息。

    parseLocalM3u8

    解析本地m3u8文件的分片信息。

    setApiRegion

    設(shè)置VoD的接入地址。默認(rèn)為cn-shanghai(上海),海外支持ap-southeast-1(新加坡)等區(qū)域。詳情請參見點(diǎn)播地域標(biāo)識

    setMultipartUpload

    設(shè)置分片上傳的閾值、分片大小。

    uploadProgressCallback

    上傳進(jìn)度回調(diào)函數(shù),可重寫。

    setEnableCrc

    上傳時是否啟用CRC校驗,默認(rèn)開啟。

  • ChangeLog.txt:版本發(fā)布記錄,首行即為當(dāng)前SDK的版本號和發(fā)布日期。

samples目錄

  • uploadVideo.py:上傳視頻的示例代碼。

  • uploadImage.py:上傳圖片的示例代碼。

  • uploadAttachedMedia.py:上傳輔助媒資文件的示例代碼。

場景一:上傳音視頻

普通文件上傳

音視頻上傳目前支持以下類型文件上傳:

  • 上傳本地文件,使用分片上傳,最大支持48.8 TB的單個文件,不支持?jǐn)帱c(diǎn)續(xù)傳。請參見示例代碼中的testUploadLocalVideo函數(shù)。

  • 上傳網(wǎng)絡(luò)文件,可指定文件URL進(jìn)行上傳,最大支持48.8 TB的單個文件。該上傳方式需要先將網(wǎng)絡(luò)文件下載到本地磁盤,再進(jìn)行上傳,所以要保證本地磁盤有充足的空間。請參見testUploadWebVideo函數(shù)。

展開查看示例代碼

# -*- coding: UTF-8 -*-
from voduploadsdk.AliyunVodUtils import *
from voduploadsdk.AliyunVodUploader import AliyunVodUploader
from voduploadsdk.UploadVideoRequest import UploadVideoRequest 

# 測試上傳本地音視頻
def testUploadLocalVideo(accessKeyId, accessKeySecret, filePath, storageLocation=None):
    try:
        # 可以指定上傳腳本部署的ECS區(qū)域。如果ECS區(qū)域和視頻點(diǎn)播存儲區(qū)域相同,則自動使用內(nèi)網(wǎng)上傳,上傳更快且更省公網(wǎng)流量。
        # ecsRegionId ="cn-shanghai"
        # uploader = AliyunVodUploader(accessKeyId, accessKeySecret, ecsRegionId)
        # 不指定上傳腳本部署的ECS區(qū)域。
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadVideoRequest = UploadVideoRequest(filePath, 'exampleTitle')
        # 可以設(shè)置視頻封面,如果是本地或網(wǎng)絡(luò)圖片可使用UploadImageRequest上傳圖片到視頻點(diǎn)播,獲取到ImageURL
        #ImageURL示例:https://example.com/sample-****.jpg
        #uploadVideoRequest.setCoverURL('<your Image URL>')  
        # 標(biāo)簽
        #uploadVideoRequest.setTags('tag1,tag2')
        if storageLocation:
            uploadVideoRequest.setStorageLocation(storageLocation)
        videoId = uploader.uploadLocalVideo(uploadVideoRequest)
        print("file: %s, videoId: %s" % (uploadVideoRequest.filePath, videoId))
        
    except AliyunVodException as e:
        print(e)
 
# 測試上傳網(wǎng)絡(luò)音視頻
def testUploadWebVideo(accessKeyId, accessKeySecret, fileUrl, storageLocation=None):
    try:
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadVideoRequest = UploadVideoRequest(fileUrl, 'exampleTitle')
        uploadVideoRequest.setTags('tag1,tag2')
        if storageLocation:
            uploadVideoRequest.setStorageLocation(storageLocation)
        videoId = uploader.uploadWebVideo(uploadVideoRequest)
        print("file: %s, videoId: %s" % (uploadVideoRequest.filePath, videoId))
        
    except AliyunVodException as e:
        print(e)

####  執(zhí)行測試代碼   ####   
# 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
# 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
# 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
accessKeyId = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
accessKeySecret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']

localFilePath = '/opt/video/sample-****.mp4'
testUploadLocalVideo(accessKeyId, accessKeySecret, localFilePath)

# fileURL示例:http://video.developer.aliyundoc.com/video/sample-****.mp4
fileUrl = '<your file URL>'
#testUploadWebVideo(accessKeyId, accessKeySecret, fileUrl)

M3U8文件上傳

展開查看示例代碼

# -*- coding: UTF-8 -*-
from voduploadsdk.AliyunVodUtils import *
from voduploadsdk.AliyunVodUploader import AliyunVodUploader
from voduploadsdk.UploadVideoRequest import UploadVideoRequest

# 測試上傳m3u8本地視頻
def testUploadLocalM3u8(accessKeyId, accessKeySecret, m3u8LocalFile):
    try:
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadVideoRequest = UploadVideoRequest(m3u8LocalFile, 'exampleTitle')
        # uploadVideoRequest.setTemplateGroupId('<TemplateGroupId>')
        # 分片文件和m3u8文件位于同一目錄,SDK會自動解析上傳
        videoId = uploader.uploadLocalM3u8(uploadVideoRequest)
        print("file: %s, videoId: %s" % (uploadVideoRequest.filePath, videoId))

    except AliyunVodException as e:
        print(e)

# 測試上傳m3u8網(wǎng)絡(luò)視頻
def testUploadWebM3u8(accessKeyId, accessKeySecret, m3u8FileUrl):
    try:
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadVideoRequest = UploadVideoRequest(m3u8FileUrl, 'exampleTitle')
        # 解析分片文件地址(適用于分片地址和m3u8文件簽名相同或無簽名的情況,其他情況需要您自行解析)
        sliceFileUrls = uploader.parseWebM3u8(m3u8FileUrl)
        videoId = uploader.uploadWebM3u8(uploadVideoRequest, sliceFileUrls)
        print("file: %s, videoId: %s" % (uploadVideoRequest.filePath, videoId))

    except AliyunVodException as e:
        print(e)

####  執(zhí)行測試代碼   ####
# 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
# 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
# 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
accessKeyId = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
accessKeySecret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']

m3u8LocalFile = '/opt/video/m3u8/example_01.m3u8'
#testUploadLocalM3u8(accessKeyId, accessKeySecret, m3u8LocalFile)

m3u8FileUrl = 'http://sample.oss.aliyuncs.com/video/m3u8/example****.m3u8'
#testUploadWebM3u8(accessKeyId, accessKeySecret, m3u8FileUrl)
            

場景二:上傳圖片

展開查看示例代碼

# -*- coding: UTF-8 -*-
from voduploadsdk.AliyunVodUtils import *
from voduploadsdk.AliyunVodUploader import AliyunVodUploader
from voduploadsdk.UploadImageRequest import UploadImageRequest

# 測試上傳本地圖片
def testUploadLocalImage(accessKeyId, accessKeySecret, filePath):
    try:
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadImageRequest = UploadImageRequest(filePath)
        uploadImageRequest.setTitle('exampleTitle')  # 設(shè)置圖片標(biāo)題,默認(rèn)為空
        imageId, imageUrl = uploader.uploadImage(uploadImageRequest, True)
        print("file: %s, imageId: %s, imageUrl: %s" % (uploadImageRequest.filePath, imageId, imageUrl))

    except AliyunVodException as e:
        print(e)

# 測試上傳網(wǎng)絡(luò)圖片
def testUploadWebImage(accessKeyId, accessKeySecret, fileUrl):
    try:
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadImageRequest = UploadImageRequest(fileUrl)
        uploadImageRequest.setTitle('exampleTitle')  # 設(shè)置圖片標(biāo)題,默認(rèn)為空
        imageId, imageUrl = uploader.uploadImage(uploadImageRequest, False)
        print("file: %s, imageId: %s, imageUrl: %s" % (uploadImageRequest.filePath, imageId, imageUrl))

    except AliyunVodException as e:
        print(e)


####  執(zhí)行測試代碼   ####
# 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
# 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
# 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
accessKeyId = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
accessKeySecret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']

localFilePath = '/opt/image/image01.png'
#testUploadLocalImage(accessKeyId, accessKeySecret, localFilePath)

fileUrl = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif'
testUploadWebImage(accessKeyId, accessKeySecret, fileUrl)
            

場景三:上傳輔助媒資

展開查看示例代碼

# -*- coding: UTF-8 -*-
from voduploadsdk.AliyunVodUtils import *
from voduploadsdk.AliyunVodUploader import AliyunVodUploader
from voduploadsdk.UploadAttachedMediaRequest import UploadAttachedMediaRequest


# 測試上傳本地輔助媒資(水印、字幕等文件)
def testUploadLocalAttachedMedia(accessKeyId, accessKeySecret, filePath):
    try:
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadAttachedRequest = UploadAttachedMediaRequest(filePath, 'watermark')
        uploadAttachedRequest.setTitle('exampleTitle')
        media = uploader.uploadAttachedMedia(uploadAttachedRequest, True)
        print(media)

    except AliyunVodException as e:
        print(e)


# 測試上傳網(wǎng)絡(luò)輔助媒資(水印、字幕等文件)
def testUploadWebAttachedMedia(accessKeyId, accessKeySecret, fileUrl):
    try:
        uploader = AliyunVodUploader(accessKeyId, accessKeySecret)
        uploadAttachedRequest = UploadAttachedMediaRequest(fileUrl, 'watermark')
        uploadAttachedRequest.setTitle('exampletitle')
        media = uploader.uploadAttachedMedia(uploadAttachedRequest, False)
        print(media)

    except AliyunVodException as e:
        print(e)


####  執(zhí)行測試代碼   ####
# 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
# 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
# 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
accessKeyId = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
accessKeySecret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']

localFilePath = '/opt/image/sample.png'
#testUploadLocalAttachedMedia(accessKeyId, accessKeySecret, localFilePath)

fileUrl = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif'
testUploadWebAttachedMedia(accessKeyId, accessKeySecret, fileUrl)
            

常見問題

使用示例代碼上傳網(wǎng)絡(luò)視頻流時,如果報ERROR:root:Download fail: [Errno 2] No such file or directory錯誤,解決辦法為:在voduploadsdk同級目錄下手動創(chuàng)建dlfiles文件夾。錯誤

相關(guān)文檔

媒體上傳概述

STS SDK概覽