This topic provides an example on how to use the API operations that are encapsulated in ApsaraVideo Media Processing (MPS) SDK for Python to merge and edit media files.
Sample code
import os
import json
from urllib.parse import quote
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcore.auth.credentials import AccessKeyCredential
from aliyunsdkmts.request.v20140618.SubmitJobsRequest import SubmitJobsRequest
# Obtain the AccessKey ID and AccessKey secret from environment variables.
credentials = AccessKeyCredential(os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])
# Set the region_id parameter to the ID of the region in which the service is called. For more information about the supported regions, see "Regions and endpoints" at https://www.alibabacloud.com/help/zh/apsaravideo-for-media-processing/latest/service-regions.
client = AcsClient(region_id = 'cn-shanghai', credential = credentials)
mps_region_id = 'cn-shanghai'
pipeline_id = '9ba1a2b3c561c22c4df9c6****'
template_id = 'S00000001-200030'
oss_location = 'oss-cn-shanghai'
oss_bucket = '<your bucket name>'
oss_input_object = 'input.mp4'
oss_output_object = 'output.mp4'
head_object = 'head.mp4'
tail_object = 'tail.mp4'
request = SubmitJobsRequest()
request.set_accept_format('json')
# The structure of the input.
job_input = {'Location': oss_location,
'Bucket': oss_bucket,
'Object': quote(head_object) }
request.set_Input(json.dumps(job_input))
# The structure of the output.
output = {'OutputObject': quote(oss_output_object)}
output['TemplateId'] = template_id
output['Video'] = {'Width': 1280,
'Height': 720}
# Concatenate the MergeList parameter in the output.
# Encode the Object Storage Service (OSS) URLs of the media files.
merge_video = {'MergeURL': 'http://%s.%s.aliyuncs.com/%s'%(oss_bucket, oss_location, quote(oss_input_object))}
merge_tail = {'MergeURL': 'http://%s.%s.aliyuncs.com/%s'%(oss_bucket, oss_location, quote(tail_object))}
output['MergeList'] = [merge_video, merge_tail]
# The structure of the output parameters.
outputs = [output]
request.set_Outputs(json.dumps(outputs))
request.set_OutputBucket(oss_bucket)
request.set_OutputLocation(oss_location)
request.set_PipelineId(pipeline_id)
response_str = client.do_action_with_exception(request)
response = json.loads(response_str)
# Display the output.
print(str(response, encoding='utf-8'))