このトピックでは、アップロードSDK for Pythonを使用して、アプリケーションサーバーからApsaraVideo VODにメディアファイルをアップロードする方法について説明します。
アップロードのプロセス
Python用サーバーアップロードSDKで使用される内部アップロードロジックは、サーバーアップロードSDKの一般的なアップロードプロセスと同じです。 詳細については、t1959334.html#section_xp5_uw7_di1トピックの「アップロードプロセス」セクションを参照してください。 次のコンテンツでは、Python用サーバーアップロードSDKを使用する基本的なプロセスについて説明します。
- 前提条件を完了します。 詳細については、「前提条件」セクションをご参照ください。
- Python用のアップロードSDKを統合します。 詳細については、Python用のアップロードSDKの統合のセクションをご参照ください。
- アップロードロジックを実装します。 これにはアップロード情報の設定が含まれます。
- オーディオおよびビデオファイルをアップロードするためのサンプルコードの詳細については、オーディオおよびビデオファイルのアップロードのセクションを参照してください。
- 画像をアップロードするためのサンプルコードの詳細については、画像のアップロードのセクションを参照してください。
- 補助メディアアセットをアップロードするためのサンプルコードの詳細については、補助メディア資産のアップロードのセクションを参照してください。
Python用のアップロードSDKの統合
注 Python用アップロードSDKのディレクトリの詳細については、「Python用アップロードSDKのディレクトリ」をご参照ください。
Python用のアップロードSDKの更新
現在のSDKで新しいメソッドまたは既存のメソッドの新機能が使用できない場合は、SDKを最新バージョンに更新します。
オーディオおよびビデオファイルのアップロード
通常のオーディオおよびビデオファイルPython用のアップロードSDKは、次の種類のオーディオおよびビデオファイルをサポートしています。
- ローカルファイル。 マルチパートアップロードが使用されます。 アップロードする1つのファイルのサイズは最大48.8テラバイトです。 再開可能なアップロードはサポートされていません。 詳細については、次のサンプルコードのtestUploadLocalVideo関数を参照してください。
- オンラインファイル。 アップロードURLを指定してオンラインファイルをアップロードできます。 アップロードする1つのファイルのサイズは最大48.8テラバイトです。 オンラインファイルをアップロードする前に、ファイルをローカルディスクにダウンロードする必要があります。 ローカルディスクに十分な容量があることを確認してください。 詳細については、次のサンプルコードのtestUploadWebVideo関数を参照してください。
サンプルコード
M3U8ファイル# -*-コーディング: UTF-8 -*-
voduploadsdk.AliyunVodUtilsのインポートから *
voduploadsdk.AliyunVodUploaderからAliyunVodUploaderをインポート
からvoduploadsdk.UploadVideoRequestインポートUploadVideoRequest
# ローカルのオーディオまたはビデオファイルのアップロードをテストします。
def testUploadLocalVideo(accessKeyId、accessKeySecret、filePath、storageLocation=なし):
try:
# アップロードスクリプトをデプロイするECS (Elastic Compute Service) インスタンスのリージョンを指定します。 ECSインスタンスのリージョンがApsaraVideo VODのストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。 これにより、アップロードが高速化され、インターネットトラフィックが削減されます。
# ecsRegionId ="cn-shanghai"
# uploader = AliyunVodUploader(accessKeyId、accessKeySecret、ecsRegionId)
# アップロードスクリプトがデプロイされているECSリージョンを指定しません。
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadVideoRequest = UploadVideoRequest(filePath, 'exampleTitle')
# サムネイルを指定します。 サムネイルがローカル画像またはオンライン画像の場合、UploadImageRequest操作を呼び出して画像をApsaraVideo VODにアップロードし、ImageURLパラメーターの値を取得できます。
# ImageURLパラメーターのサンプル値: https://example.com/sample- ****.jpg。
# uploadVideoRequest.setCoverURL('<あなたのイメージのURL>')
# タグを設定します。
# uploadVideoRequest.setTags('tag1,tag2')
storageLocationの場合:
uploadVideoRequest.setStorageLocation(storageLocation)
videoId = uploader.uploadLocalVideo(uploadVideoRequest)
print("file: % s, videoId: % s" % (uploadVideoRequest.filePath, videoId))
AliyunVodExceptionをeとして除く:
プリント (e)
# オンラインのオーディオまたはビデオファイルのアップロードをテストします。
def testUploadWebVideo(accessKeyId、accessKeySecret、fileUrl、storageLocation=なし):
try:
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadVideoRequest = UploadVideoRequest(fileUrl, 'exampleTitle')
uploadVideoRequest.setTags('tag1,tag2')
storageLocationの場合:
uploadVideoRequest.setStorageLocation(storageLocation)
videoId = uploader.uploadWebVideo(uploadVideoRequest)
print("file: % s, videoId: % s" % (uploadVideoRequest.filePath, videoId))
AliyunVodExceptionをeとして除く:
プリント (e)
#### テストコードを実行します。 ####
accessKeyId = '<AccessKeyId>'
accessKeySecret = '<AccessKeySecret>'
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)
サンプルコード
# -*-コーディング: UTF-8 -*-
voduploadsdk.AliyunVodUtilsのインポートから *
voduploadsdk.AliyunVodUploaderからAliyunVodUploaderをインポート
からvoduploadsdk.UploadVideoRequestインポートUploadVideoRequest
# ローカルM3U8ビデオファイルのアップロードをテストします。
def testUploadLocalM3u8(accessKeyId、accessKeySecret、m3u8LocalFile):
try:
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadVideoRequest = UploadVideoRequest(m3u8LocalFile、'exampleTitle')
# uploadVideoRequest.setTemplateGroupId('<TemplateGroupId>')
# M3U8ファイルとファイルパーツは同じディレクトリに格納されます。 アップロードSDKは自動的にM3U8ファイルを解析してアップロードします。
videoId = uploader.uploadLocalM3u8(uploadVideoRequest)
print("file: % s, videoId: % s" % (uploadVideoRequest.filePath, videoId))
AliyunVodExceptionをeとして除く:
プリント (e)
# オンラインM3U8ビデオのアップロードをテストします。
def testUploadWebM3u8(accessKeyId、accessKeySecret、m3u8FileUrl):
try:
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadVideoRequest = UploadVideoRequest(m3u8FileUrl、'exampleTitle')
# ApsaraVideo VODは、URLがM3U8ファイルと同じ署名を使用している場合、または署名がない場合、ファイルパーツのURLを自動的に解析します。 他のシナリオでは、部品ファイルのURLを手動で解析する必要があります。
sliceFileUrls = uploader.parseWebM3u8(m3u8FileUrl)
videoId = uploader.uploadWebM3u8(uploadVideoRequest, sliceFileUrls)
print("file: % s, videoId: % s" % (uploadVideoRequest.filePath, videoId))
AliyunVodExceptionをeとして除く:
プリント (e)
#### テストコードを実行します。 ####
accessKeyId = '<AccessKeyId>'
accessKeySecret = '<AccessKeySecret>'
m3u8LocalFile = '/opt/video/m3u8/example_01.m3u8'
# testUploadLocalM3u8(accessKeyId、accessKeySecret、m3u8LocalFile)
m3u8FileUrl = 'http:// sample.oss.aliyuncs.com/video/m3u8/example_01.m3u8'
# testUploadWebM3u8(accessKeyId、accessKeySecret、m3u8FileUrl)
画像のアップロード
サンプルコード
# -*-コーディング: UTF-8 -*-
voduploadsdk.AliyunVodUtilsのインポートから *
voduploadsdk.AliyunVodUploaderからAliyunVodUploaderをインポート
からvoduploadsdk.UploadImageRequestのインポートUploadImageRequest
# ローカル画像のアップロードをテストします。
def testUploadLocalImage(accessKeyId、accessKeySecret、filePath):
try:
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadImageRequest = UploadImageRequest(filePath)
uploadImageRequest.setTitle('exampleTitle') # 画像のタイトルを指定します。デフォルトでは空のままです。
imageId, imageUrl = uploader.uploadImage(uploadImageRequest, True)
print("file: % s, imageId: % s, imageUrl: % s" % (uploadImageRequest.filePath, imageId, imageUrl))
AliyunVodExceptionをeとして除く:
プリント (e)
# オンライン画像のアップロードをテストします。
def testUploadWebImage(accessKeyId、accessKeySecret、fileUrl):
try:
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadImageRequest = UploadImageRequest(fileUrl)
uploadImageRequest.setTitle('exampleTitle') # 画像のタイトルを指定します。デフォルトでは空のままです。
imageId, imageUrl = uploader.uploadImage(uploadImageRequest, False)
print("file: % s, imageId: % s, imageUrl: % s" % (uploadImageRequest.filePath, imageId, imageUrl))
AliyunVodExceptionをeとして除く:
プリント (e)
#### テストコードを実行します。 ####
accessKeyId = '<AccessKeyId>'
accessKeySecret = '<AccessKeySecret>'
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)
補助メディア資産のアップロード
サンプルコード
# -*-コーディング: UTF-8 -*-
voduploadsdk.AliyunVodUtilsのインポートから *
voduploadsdk.AliyunVodUploaderからAliyunVodUploaderをインポート
からvoduploadsdk.UploadAttachedMediaRequestのインポートUploadAttachedMediaRequest
# 透かしや字幕などのローカル補助メディア資産のアップロードをテストします。
def testUploadLocalAttachedMedia(accessKeyId、accessKeySecret、filePath):
try:
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadAttachedRequest = UploadAttachedMediaRequest(filePath, 'watermark')
uploadAttachedRequest.setTitle('exampleTitle')
media = uploader.uploadAttachedMedia(uploadAttachedRequest, True)
print (メディア)
AliyunVodExceptionをeとして除く:
プリント (e)
# 透かしや字幕などのオンライン補助メディアアセットのアップロードをテストします。
def testUploadWebAttachedMedia(accessKeyId、accessKeySecret、fileUrl):
try:
uploader = AliyunVodUploader(accessKeyId、accessKeySecret)
uploadAttachedRequest = UploadAttachedMediaRequest(fileUrl, 'watermark')
uploadAttachedRequest.setTitle('exampletitle')
media = uploader.uploadAttachedMedia(uploadAttachedRequest, False)
print (メディア)
AliyunVodExceptionをeとして除く:
プリント (e)
#### テストコードを実行します。 ####
accessKeyId = '<AccessKeyId>'
accessKeySecret = '<AccessKeySecret>'
localFilePath = '/opt/image/sample.png'
# testUploadLocalAttachedMedia(accessKeyId、accessKeySecret、localFilePath)
fileUrl = 'http:// vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F386E0B.gif'
testUploadWebAttachedMedia(accessKeyId、accessKeySecret、fileUrl)
よくある質問
サンプルコードを使用してオンラインビデオストリームをアップロードしたときに、
ERROR:root:Download fail: [Errno 2] No such file or directory
というエラーメッセージが返された場合は、voduploadsdkディレクトリが存在するディレクトリにdlfilesフォルダを作成できます。 Python用アップロードSDKのディレクトリ
voduploadsdkディレクトリ- AliyunVodUtils.py
ディレクトリ 説明 AliyunVodLog ログに基づいて実装されるアップロードSDKのログクラス。 AliyunVodUtils アップロードSDKのユーティリティクラス。 AliyunVodException アップロードSDKの例外クラス。 統一された例外処理がサポートされます。 外部呼び出しのAliyunVodException例外のみを検出する必要があります。 - UploadVideoRequest.py
ディレクトリ 説明 UploadVideoRequest ビデオをアップロードするためのリクエストクラス。 パラメーターの詳細については、「CreateUploadVideo」をご参照ください。 - UploadImageRequest.py
ディレクトリ 説明 UploadImageRequest 画像をアップロードするためのリクエストクラス。 パラメーターの詳細については、「t1235495.html#doc_api_vod_CreateUploadImage」をご参照ください。 - UploadAttachedMediaRequest.py
ディレクトリ 説明 UploadAttachedMediaRequest 補助メディアアセットをアップロードするためのリクエストクラス。 パラメーターの詳細については、「CreateUploadAttachedMedia」をご参照ください。 - AliyunVodUploader.py
ディレクトリ 説明 uploadLocalVideo ローカルビデオのアップロードに使用される方法。 uploadWebVideo オンラインビデオのアップロードに使用される方法。 uploadLocalM3u8 ローカルM3U8ビデオのアップロードに使用される方法。 uploadWebM3u8 オンラインM3U8ビデオをアップロードするために使用される方法。 uploadImage ローカルまたはオンライン画像のアップロードに使用される方法。 uploadAttachedMedia ローカルまたはオンラインの補助メディア資産をアップロードするために使用される方法。 parseWebM3u8 オンラインM3U8ビデオのファイル部分に関する情報を解析するために使用される方法。 parseLocalM3u8 ローカルM3U8ビデオのファイル部分に関する情報を解析するために使用されるメソッド。 setApiRegion ApsaraVideo VODのアクセス領域を指定するために使用される方法。 デフォルトのリージョンは中国 (上海) リージョンです。 シンガポール (シンガポール) リージョンなど、中国本土以外のリージョンを指定することもできます。 詳細については、「ApsaraVideo VODのリージョンID」をご参照ください。 setMultipartUpload マルチパートアップロードの開始に基づくファイルサイズのしきい値と、マルチパートアップロードの各パーツのサイズを設定する方法。 uploadProgressCallback アップロードの進行状況のコールバックを設定するために使用されるメソッド。 このメソッドはオーバーライドできます。 setEnableCrc アップロード中に巡回冗長検査 (CRC) を有効にするかどうかを指定するために使用される方法。 デフォルトでは、CRCは有効です。 - ChangeLog.txt: バージョン履歴を提供します。 最初の行で、現在のSDKのバージョン番号とリリース日を取得できます。
- uploadVideo.py: ビデオをアップロードするためのサンプルコードを提供します。
- uploadImage.py: 画像をアップロードするためのサンプルコードを提供します。
- uploadAttachedMedia.py: 補助メディアアセットをアップロードするためのサンプルコードを提供します。