Transcoding templates

Updated at:
Copy as MD

ApsaraVideo VOD uses transcoding templates for video transcoding. If the built-in transcoding template groups do not meet your requirements, you can create a transcoding template group and customize parameters such as the encoding format, frame rate, and resolution. You can use the Python SDK to create and manage transcoding template groups by calling API operations.

Usage notes

  • All examples in this topic use an AccessKey pair to initialize a client instance.

  • For request and response parameter details, visit Alibaba Cloud OpenAPI Explorer and open the API Documentations tab.

  • For SDK examples of other API operations, visit Alibaba Cloud OpenAPI Explorer. On the Parameters tab, specify the parameters and initiate the call. Then select the SDK version and language on the SDK Sample Code tab to view and download the code.

  • The examples in this topic use SDK V1.0. For V2.0 examples, select the correct SDK version in OpenAPI Explorer.image.png

Initialize a client

Before you use the SDK, initialize a client. For more information, see Initialization.

Create a transcoding template group

Call the AddTranscodeTemplateGroup operation to create a transcoding template group.

Alibaba Cloud OpenAPI Explorer: AddTranscodeTemplateGroup.

Sample code:

from aliyunsdkvod.request.v20170321 import AddTranscodeTemplateGroupRequest

""" Build the configuration data for the transcoding template to add. """
def build_transcode_template_list():
    transcodeTemplateList = []
    transcodeTemplate = {}

    # Set the template name.
    transcodeTemplate["TemplateName"] = "MP4-for-Low-Definition"

    # Definition.
    transcodeTemplate["Definition"] = "LD"

    # Video stream transcoding configuration.
    videoConfig = {"Width": 640, "Bitrate": 400, "Fps": 25, "Remove": False, "Codec": "H.264", "Gop": "250"}
    transcodeTemplate["Video"] = videoConfig

    # Audio stream transcoding configuration.
    audioConfig = {"Codec": "AAC", "Bitrate": "64", "Channels": "2", "Samplerate": "32000"}
    transcodeTemplate["Audio"] = audioConfig

    # Encapsulation container.
    container = {"Format": "mp4"}
    transcodeTemplate["Container"] = container

    # Conditional transcoding configuration.
    condition = {"IsCheckReso": False, "IsCheckResoFail": False, "IsCheckVideoBitrate": False,
                 "IsCheckVideoBitrateFail": False, "IsCheckAudioBitrate": False, "IsCheckAudioBitrateFail": False}
    transcodeTemplate["TransConfig"] = condition

    """
    # Encryption configuration (HLS only).
    encryptSetting = {"EncryptType": "Private"}
    transcodeTemplate["EncryptSetting"] = encryptSetting
    """

    # Watermark ID (for associating multiple watermarks).
    watermarkIdList = []
    #watermarkIdList.append("<WatermarkId>")
    watermarkIdList.append("USER_DEFAULT_WATERMARK")
    transcodeTemplate["WatermarkIds"] = watermarkIdList

    transcodeTemplateList.append(transcodeTemplate)

    return transcodeTemplateList


""" Add the transcoding template configuration. """
def add_transcode_template_group(clt):
    request = AddTranscodeTemplateGroupRequest.AddTranscodeTemplateGroupRequest()

    request.set_Name("SampleTranscodeTemplateGroup")

    transcodeTemplateList = build_transcode_template_list()
    request.set_TranscodeTemplateList(json.dumps(transcodeTemplateList))

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

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

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

Modify a transcoding template group

Call the UpdateTranscodeTemplateGroup operation to modify a transcoding template group.

Alibaba Cloud OpenAPI Portal: / UpdateTranscodeTemplateGroup.

Sample code:

from aliyunsdkvod.request.v20170321 import UpdateTranscodeTemplateGroupRequest

""" Build the configuration data for the transcoding template to modify. """
def build_transcode_template_list():
    transcodeTemplateList = []
    transcodeTemplate = {}

    # Set the transcoding template ID. This is required.
    transcodeTemplate["TranscodeTemplateId"] = "<TranscodeTemplateId>"

    # The following are optional.

    # Set the new template name (to change it).
    transcodeTemplate["TemplateName"] = "new-MP4-for-Low-Definition"

    # Video stream transcoding configuration.
    videoConfig = {"Width": 640, "Bitrate": 500, "Fps": 60, "Remove": False, "Codec": "H.264", "Gop": "250"}
    transcodeTemplate["Video"] = videoConfig

    # Audio stream transcoding configuration.
    audioConfig = {"Codec": "AAC", "Bitrate": "128", "Channels": "2", "Samplerate": "32000"}
    transcodeTemplate["Audio"] = audioConfig

    # Encapsulation container.
    container = {"Format": "mp4"}
    transcodeTemplate["Container"] = container

    # Conditional transcoding configuration.
    condition = {"IsCheckReso": False, "IsCheckResoFail": False, "IsCheckVideoBitrate": False,
                 "IsCheckVideoBitrateFail": False, "IsCheckAudioBitrate": False, "IsCheckAudioBitrateFail": False}
    transcodeTemplate["TransConfig"] = condition

    """
    # Encryption configuration (HLS only).
    encryptSetting = {"EncryptType": "Private"}
    transcodeTemplate["EncryptSetting"] = encryptSetting
    """

    # Watermark ID (for associating multiple watermarks).
    watermarkIdList = []
    #watermarkIdList.append("<WatermarkId>")
    watermarkIdList.append("USER_DEFAULT_WATERMARK")
    transcodeTemplate["WatermarkIds"] = watermarkIdList

    transcodeTemplateList.append(transcodeTemplate)

    return transcodeTemplateList


""" Modify the transcoding template configuration. """
def update_transcode_template_group(clt):
    request = UpdateTranscodeTemplateGroupRequest.UpdateTranscodeTemplateGroupRequest()

    # Set the transcoding template group ID.
    request.set_TranscodeTemplateGroupId("<TranscodeTemplateGroupId>")

    # Set the transcoding template configuration.
    transcodeTemplateList = build_transcode_template_list()
    request.set_TranscodeTemplateList(json.dumps(transcodeTemplateList))

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

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

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

Query a transcoding template group

  • You can call the GetTranscodeTemplateGroup operation to query a transcoding template group.

    Alibaba Cloud OpenAPI Portal: or GetTranscodeTemplateGroup.

  • You can call the ListTranscodeTemplateGroup operation to query a list of transcoding template groups.

    Alibaba Cloud OpenAPI Portal: ListTranscodeTemplateGroup.

Specify a transcoding template group as the default one

Call the SetDefaultTranscodeTemplateGroup operation to specify a transcoding template group as the default one.

You can call the SetDefaultTranscodeTemplateGroup operation in the Alibaba Cloud OpenAPI Portal.

Delete a transcoding template group

Call the DeleteTranscodeTemplateGroup operation to delete a transcoding template group.

Alibaba Cloud OpenAPI Portal: DeleteTranscodeTemplateGroup.