This topic provides examples on how to use the API operations of the media processing module. API操作はApsaraVideo VOD SDK for Pythonにカプセル化されています。 API操作を呼び出して、プロダクションスタジオでトランスコードおよびスナップショットジョブの送信、スナップショットデータの照会、およびビデオの前処理を行うことができます。
クライアントを初期化
SDKを使用する前に、クライアントを初期化してください。 詳細については、「初期化」をご参照ください。
暗号化なしでコード変換ジョブを送信する
SubmitTranscodeJobs操作を呼び出して、暗号化せずにトランスコードジョブを送信できます。
この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「SubmitTranscodeJobs」をご参照ください。 例:
The following code provides an example on transcoding without encryption. Alibaba Cloudでサポートされているビデオ暗号化の詳細については、「Alibaba Cloudビデオ暗号化」をご参照ください。
"""
* 画像透かしのファイルURLまたはテキスト透かしのコンテンツのみをオーバーライドするオーバーライドパラメーターを構築します。 これらのパラメーターが必要ない場合は、overrideParamsを空のままにします。
* 透かしのIDが、使用するトランスコードテンプレートのIDに関連付けられていることを確認します。 トランスコードテンプレートのIDは、TranscodeTemplateIdで指定します。
* この操作では、使用するトランスコードテンプレートのIDに関連付けられているIDの透かしのみを追加できます。
"""
def build_override_params():
# Take watermark overriding as an example.
watermarks = []
# 画像の透かしのファイルをオーバーライドします。
watermark1 = {'WatermarkId': '<watermarkId>', 'FileUrl': 'https:// 192.168.0.0/16/watermarks/sample.png '}
watermarks.append(watermark1)
# テキストの透かしをオーバーライドします。
watermark2 = {'WatermarkId': '<watermarkId>', 'Content': 'new Text'}
watermarks.append(watermark2)
{'Watermarks': 透かし} を返す
"" "トランスコード処理の開始" ""
aliyunsdkvod.request.v20170321からSubmitTranscodeJobsRequestをインポート
def normal_submit_transcode_jobs(clt):
request = SubmitTranscodeJobsRequest。SubmitTranscodeJobsRequest()
# トランスコードするビデオのIDを指定します。
request.set_VideoId('<videoId>')
# Specify the transcoding template group.
request.set_TemplateGroupId('<templateGroupId>')
"""
# 透かし情報のオーバーライドに関連するパラメーターなど、オプションのオーバーライドパラメーターを設定します。
overrideParams = build_override_params()
request.set_OverrideParams(json.dumps(overrideParams))
"""
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception (リクエスト))
リターンレスポンス
トライ:
clt = init_vod_client('<AccessKeyId>', '<AccessKeySecret>')
jobs = normal_submit_transcode_jobs(clt)
print(jobs['TranscodeJobs']['TranscodeJob'])
print(json.dumps(jobs, ensure_ascii=False, indent=4))
eとして例外を除いて:
プリント (e)
print(traceback.format_exc())
HLS暗号化を有効にしたコード変換ジョブの送信
SubmitTranscodeJobs操作を呼び出して、HTTPライブストリーミング (HLS) 暗号化を有効にしたトランスコードジョブを送信できます。
この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「SubmitTranscodeJobs」をご参照ください。 例:
次のコードは、HLS暗号化を有効にしたトランスコードの例です。 詳細については、「Standard HLS encryption」をご参照ください。
"""
* HLS暗号化のオプション設定。 HLS暗号化を使用しない場合は、パラメーターを空のままにします。
* HLS暗号化設定はKMSに依存します。 KMS依存関係aliyun-php-sdk-kmsをインストールする必要があります。 API操作を呼び出す場合は、関連クラスをインポートする必要があります。
* キー生成のAPIリファレンス: https:// 192.168.0.0/16/document_detail/28948.html
"""
aliyunsdkkms.request.v20160120からGenerateDataKeyRequestをインポート
aliyunsdkcore.http import protocol_typeから
def build_encrypt_config(clt):
try:
# Generate a random data key for encryption. レスポンスには、データキーの平文と暗号文が含まれます。
# 暗号文キーのみが標準のビデオ暗号化に使用されます。
request = GenerateDataKeyRequest.GenerateDataKeyRequest()
request.set_KeyId('<serviceKey>')
request.set_KeySpec('AES_128 ')
# Set the value to HTTPS for KMS API operations.
request.set_protocol_type(protocol_type.HTTPS)
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception (リクエスト))
# データキーの復号化に使用される操作のURI。 URIを取得するには、復号化サービスのURLとデータキーの暗号文を連結します。 The ciphertext to decrypt varies among videos. 復号化サービスをデプロイする必要があります。
# Ciphertextパラメーターの名前をカスタマイズできます。 この例の名前は参照用です。
decryptKeyUri = 'http:// example.aliyundoc.com/decrypt?' + 'Ciphertext='+ response['CiphertextBlob']
return {'DecryptKeyUri': decryptKeyUri, 'KeyServiceType': 'KMS', 'CipherText': response['CiphertextBlob']}
Eなどの例外を除いて:
プリント (e)
# print(traceback.format_exc())
リターンなし
"" "トランスコード処理の開始" ""
aliyunsdkvod.request.v20170321からSubmitTranscodeJobsRequestをインポート
def hlsencrypt_submit_transcode_jobs(clt):
request = SubmitTranscodeJobsRequest.SubmitTranscodeJobsRequest()
# トランスコードするビデオのIDを指定します。
request.set_VideoId('<videoId>')
# コード変換テンプレートグループを指定します。
request.set_TemplateGroupId('<templateGroupId>')
# KMSを使用してランダムな暗号化キーを生成します。
encryptConfig = build_encrypt_config(clt)
encryptConfigがNoneではない場合:
request.set_EncryptConfig(json.dumps(encryptConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception (リクエスト))
リターンレスポンス
トライ:
clt = init_vod_client('<AccessKeyId>', '<AccessKeySecret>')
jobs = hlsencrypt_submit_transcode_jobs(clt)
print(jobs['TranscodeJobs']['TranscodeJob'])
print(json.dumps(jobs, ensure_ascii=False, indent=4))
except Exception as e:
プリント (e)
print(traceback.format_exc())
スナップショットジョブを送信する
SubmitSnapshotJob操作を呼び出して、スナップショットジョブを送信できます。
この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「SubmitSnapshotJob」をご参照ください。 例:
スナップショットテンプレートの作成方法の詳細については、「スナップショットテンプレートの作成」をご参照ください。
からaliyunsdkvod.request.v20170321インポートSubmitSnapshotJobRequest
def submit_snapshot_job(clt):
request = SubmitSnapshotJobRequest.SubmitSnapshotJobRequest()
# スナップショットを作成するビデオのID。
request.set_VideoId('<videoId>')
# スナップショットテンプレートのID。
# request.set_SnapshotTemplateId('<snapshotTemplateId>')
# snapshotSnapshotテンプレートパラメーターのIDを指定した場合、次のパラメーターは無視されます。
request.set_Count(50L)
request.set_SpecifiedOffsetTime(0L)
request.set_Interval(1L)
request.set_Width(200)
request.set_Height(200)
# 画像スプライト関連のパラメーター (オプション) 。
spriteSnapshotConfig = {'CellWidth': 120、'CellHeight': 68、'Columns': 3、
「ライン」: 10、「パッディング」: 20、「マージン」: 50}
# イメージスプライトの生成後にソースイメージを保持するかどうか。
spriteSnapshotConfig ['KeepCellPy'] = 'keep'
spriteSnapshotConfig['Color'] = 'tomato'
request.set_SpriteSnapshotConfig(json.dumps(spriteSnapshotConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception (リクエスト))
リターンレスポンス
トライ:
clt = init_vod_client('<AccessKeyId>', '<AccessKeySecret>')
job = submit_snapshot_job(clt)
print(json.dumps(job, ensure_ascii=False, indent=4))
eとして例外を除いて:
プリント (e)
print(traceback.format_exc())
スナップショットデータの照会
ListSnapshots操作を呼び出して、スナップショットデータを照会できます。
この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「ListSnapshots」をご参照ください。 例:
ListSnapshotsRequestをインポート
def list_snapshots(clt):
request = ListSnapshotsRequest.ListSnapshotsRequest()
request.set_VideoId('<videoId>')
request.set_SnapshotType('CoverSnapshot')
request.set_PageNo (1)
request.set_PageSize (20)
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception (リクエスト))
リターンレスポンス
トライ:
clt = init_vod_client('<AccessKeyId>', '<AccessKeySecret>')
snapshots = list_snapshots(clt)
print(snapshots['MediaSnapshot'])
print(json.dumps(snapshots, ensure_ascii=False, indent=4))
eとして例外を除いて:
プリント (e)
print(traceback.format_exc())
制作スタジオでビデオを前処理する
You can call the SubmitPreprocessJobs operation to preprocess the video in production studios.
この操作のリクエストパラメーターとレスポンスパラメーターの詳細については、「SubmitPreprocessJobs」をご参照ください。 例:
からaliyunsdkvod.req uest.v20170321 import SubmitPreprocessJobsRequest
def submit_preprocess_jobs(clt):
request = SubmitPreprocessJobsRequest。SubmitPreprocessJobsRequest()
request.set_VideoId('<videoId>')
request.set_PreprocessType('PreprocessType')
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception (リクエスト))
リターンレスポンス
トライ:
clt = init_vod_client('<AccessKeyId>', '<AccessKeySecret>')
jobs = submit_preprocess_jobs(clt)
print(json.dumps(jobs, ensure_ascii=False, indent=4))
eとして例外を除いて:
プリント (e)
print(traceback.format_exc())