すべてのプロダクト
Search
ドキュメントセンター

:Media processing

最終更新日:Jun 27, 2022

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」をご参照ください。 例:

aliyunsdkvod.request.v20170321から
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())