Todos os produtos
Search
Central de documentação

ApsaraVideo VOD:Processamento de mídia

Última atualização: Jun 27, 2026

Este tópico apresenta exemplos de uso das operações da API do módulo de processamento de mídia. Essas operações estão encapsuladas no ApsaraVideo VOD SDK for Python. Chame-as para enviar tarefas de transcodificação e snapshot, consultar dados de snapshot e pré-processar vídeos no estúdio de produção.

Observações de uso

  • Todos os exemplos deste tópico usam um par de AccessKey para inicializar uma instância de cliente.

  • Para obter detalhes sobre os parâmetros de solicitação e resposta, acesse o Alibaba Cloud OpenAPI Explorer e abra a aba API Documentations.

  • Para visualizar exemplos de SDK de outras operações da API, visite o Alibaba Cloud OpenAPI Explorer. Na aba Parameters, especifique os parâmetros e inicie a chamada. Em seguida, selecione a versão do SDK e a linguagem na aba SDK Sample Code para visualizar e baixe o código.

  • Os exemplos deste tópico usam o SDK V1.0. Para exemplos da V2.0, selecione a versão correta do SDK no OpenAPI Explorer.image.png

Inicializar um cliente

Antes de usar o SDK, inicialize um cliente. Para mais informações, consulte Inicialização.

Envie uma tarefa de transcodificação sem criptografia

Chame a operação SubmitTranscodeJobs para enviar uma tarefa de transcodificação sem criptografia.

Código de exemplo:

Nota

O código abaixo exemplifica a transcodificação sem criptografia. Para mais detalhes sobre a criptografia de vídeo compatível com a Alibaba Cloud, consulte Criptografia proprietária da Alibaba Cloud.

"""
* Construct watermark parameters to be overridden. You can override only the URL of an image watermark and the content of a text watermark.
* Make sure that the ID of the watermark that you want to overwrite is associated with the ID of the transcoding template that you use. The ID of the transcoding template is specified by TranscodeTemplateId.
* You can call this operation to add only a watermark whose ID is associated with the ID of the transcoding template that you use.
"""
def build_override_params():
    # Override watermarks.
    watermarks = []

    // Override an image watermark. Example of the URL of an image file: https://192.168.0.0/16/watermarks/sample****.png.
    watermark1 = {'WatermarkId': '<watermarkId>', 'FileUrl': '<your File URL>'}
    watermarks.append(watermark1)

    # Override a text watermark.
    watermark2 = {'WatermarkId': '<watermarkId>', 'Content': 'new Text'}
    watermarks.append(watermark2)

    return {'Watermarks': watermarks}

"""  Start transcoding.   """
from aliyunsdkvod.request.v20170321 import SubmitTranscodeJobsRequest
def normal_submit_transcode_jobs(clt):
    request = SubmitTranscodeJobsRequest.SubmitTranscodeJobsRequest()

    # Specify the ID of the video that you want to transcode.
    request.set_VideoId('<videoId>')

    # Specify the transcoding template group.
    request.set_TemplateGroupId('<templateGroupId>')

    """
    # Configure optional parameters to overwrite watermarks.
    overrideParams = build_override_params()
    request.set_OverrideParams(json.dumps(overrideParams))
    """

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    jobs = normal_submit_transcode_jobs(clt)
    print(jobs['TranscodeJobs']['TranscodeJob'])
    print(json.dumps(jobs, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

Envie uma tarefa de transcodificação com criptografia HLS ativada

Chame a operação SubmitTranscodeJobs para enviar uma tarefa de transcodificação com criptografia HLS ativada.

Código de exemplo:

Nota

O código a seguir demonstra a transcodificação com criptografia HLS ativada. Para mais informações, consulte Criptografia HLS.

"""
* Optional configurations of HLS encryption. If you do not use HLS encryption, these configurations are not required.
"""
from aliyunsdkvod.request.v20170321 import GenerateKMSDataKeyRequest
from aliyunsdkcore.http import protocol_type
def build_encrypt_config(clt):
    try:
        # Generate a random data key for encryption. The response contains the plaintext and ciphertext of the data key.
        # Specify only the ciphertext for HLS encryption.
        request = GenerateKMSDataKeyRequest.GenerateKMSDataKeyRequest()

        request.set_protocol_type(protocol_type.HTTPS)
        request.set_accept_format('JSON')
        response = json.loads(clt.do_action_with_exception(request))

        // The URI of the operation that is used to decrypt the data key. To obtain the URI, concatenate the URL of the decryption service and the ciphertext of the data key. The ciphertext to decrypt varies among videos. Take note that you must deploy the decryption service.
        # You can customize the name of the Ciphertext parameter. The name in this example is only for reference.
        # Example of decryptKeyUri: http://example.aliyundoc.com/decrypt?' + 'Ciphertext=' + response['CiphertextBlob.
        decryptKeyUri = ['<your decryptKeyUri>']

        return {'DecryptKeyUri': decryptKeyUri, 'KeyServiceType': 'KMS', 'CipherText': response['CiphertextBlob']}

    except Exception as e:
        print(e)
        #print(traceback.format_exc())
        return None

"""  Start transcoding.   """
from aliyunsdkvod.request.v20170321 import SubmitTranscodeJobsRequest
def hlsencrypt_submit_transcode_jobs(clt):
    request = SubmitTranscodeJobsRequest.SubmitTranscodeJobsRequest()

    # Specify the ID of the video that you want to transcode.
    request.set_VideoId('<videoId>')

    # Specify the transcoding template group.
    request.set_TemplateGroupId('<templateGroupId>')

    # Use Key Management Service (KMS) to generate a random encryption key.
    encryptConfig = build_encrypt_config(clt)
    if encryptConfig is not None:
        request.set_EncryptConfig(json.dumps(encryptConfig))

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    jobs = hlsencrypt_submit_transcode_jobs(clt)
    print(jobs['TranscodeJobs']['TranscodeJob'])
    print(json.dumps(jobs, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

Envie uma tarefa de snapshot

Chame a operação SubmitSnapshotJob para enviar uma tarefa de snapshot.

Código de exemplo:

Nota

Para saber como crie um modelo de snapshot, consulte Criar um modelo de snapshot.

from aliyunsdkvod.request.v20170321 import SubmitSnapshotJobRequest
def submit_snapshot_job(clt):
    request = SubmitSnapshotJobRequest.SubmitSnapshotJobRequest()

    # Specify the ID of the video from which you want to capture snapshots.
    request.set_VideoId('<videoId>')

    # Specify the ID of the snapshot template.
    #request.set_SnapshotTemplateId('<snapshotTemplateId>')

    # If you specify the ID of the snapshot template, the following parameters are ignored:
    request.set_Count(50)
    request.set_SpecifiedOffsetTime(0)
    request.set_Interval(1)
    request.set_Width(200)
    request.set_Height(200)

    # Configure image sprite-related parameters. This step is optional.
    spriteSnapshotConfig = {'CellWidth': 120, 'CellHeight': 68, 'Columns': 3,
                            'Lines': 10, 'Padding': 20, 'Margin': 50}
    # Specify whether to retain the source image after an image sprite is generated.
    spriteSnapshotConfig['KeepCellPic'] = 'keep'
    spriteSnapshotConfig['Color'] = 'tomato'
    request.set_SpriteSnapshotConfig(json.dumps(spriteSnapshotConfig))

    request.set_accept_format('JSON')
    response = json.loads(clt.do_action_with_exception(request))
    return response

try:
    clt = init_vod_client()
    job = submit_snapshot_job(clt)
    print(json.dumps(job, ensure_ascii=False, indent=4))

except Exception as e:
    print(e)
    print(traceback.format_exc())

Consultar dados de snapshot

Chame a operação ListSnapshots para consultar dados de snapshot.

Pré-processar vídeos no estúdio de produção

Chame a operação SubmitPreprocessJobs para pré-processar vídeos no estúdio de produção.