本文提供了Python SDK转码的操作步骤及完整的代码示例。
转码相关API调用及参数详细信息请参见提交转码作业。
- 创建AcsClient实例。
client = AcsClient(access_key_id, access_key_secret, mps_region_id);
- 创建request,并设置参数。
request = SubmitJobsRequest.SubmitJobsRequest() request.set_accept_format('json')
- 设置转码参数。
说明
- 通过SDK提交转码作业时Object需经URLEncode,否则会导致转码失败。更多信息,请参见URL Encoding说明。
- 请按照规范填写文件名称,否则会找不到文件导致转码失败。详细名称规范,请参见参数详情。
- Input
job_input = {'Location': oss_location, 'Bucket': oss_bucket, 'Object': quote(oss_input_object) } request.set_Input(json.dumps(job_input))
- Output
output = {'OutputObject': quote(oss_output_object)}
- Container
output['Container'] = {'Format': 'mp4'}
- Video
说明 如果使用转码模板进行转码则无需配置此参数。如果配置此参数,则覆盖指定转码模板中的对应参数。
output['Video'] = {'Codec': 'H.264', 'Bitrate': 1500, 'Width': 1280, 'Fps': 25}
- Audio
说明 如果使用转码模板进行转码则无需配置此参数。如果配置此参数,则覆盖指定转码模板中的对应参数。
output['Audio'] = {'Codec': 'AAC', 'Bitrate': 128, 'Channels': 2, 'Samplerate': 44100}
- TemplateId
output['TemplateId'] = template_id
- Container
- PipelineId
request.set_PipelineId(pipeline_id)
- 发起API请求并显示返回值。
response_str = client.do_action_with_exception(request) response = json.loads(response_str) print 'RequestId is:', response['RequestId'] if response['JobResultList']['JobResult'][0]['Success']: print 'JobId is:', response['JobResultList']['JobResult'][0]['Job']['JobId'] else: print ('SubmitJobs Failed code:', response['JobResultList']['JobResult'][0]['Code'], ' message:', response['JobResultList']['JobResult'][0]['Message'])
完整代码
# -*- coding: utf8 -*-
import json
from urllib import quote
from aliyunsdkcore.client import AcsClient
from aliyunsdkmts.request.v20140618 import SubmitJobsRequest
access_key_id = 'xxx'
access_key_secret = 'xxx'
# 服务地域ID
mps_region_id = 'cn-hangzhou'
# 管道ID
pipeline_id = 'xxx'
# 模板ID
template_id = 'S00000001-200010'
# OSS的Location
oss_location = 'oss-cn-hangzhou'
# OSS的Bucket
oss_bucket = 'xxx'
# 输入Object
oss_input_object = 'input.mp4'
# 输出Object
oss_output_object = 'output.mp4'
# 创建AcsClient实例
client = AcsClient(access_key_id, access_key_secret, mps_region_id);
# 创建request,并设置参数
request = SubmitJobsRequest.SubmitJobsRequest()
request.set_accept_format('json')
# Input
job_input = {'Location': oss_location,
'Bucket': oss_bucket,
'Object': quote(oss_input_object) }
request.set_Input(json.dumps(job_input))
# Output
output = {'OutputObject': quote(oss_output_object)}
# Ouput->Container
output['Container'] = {'Format': 'mp4'}
# Ouput->Video
output['Video'] = {'Codec': 'H.264',
'Bitrate': 1500,
'Width': 1280,
'Fps': 25}
# Ouput->Audio
output['Audio'] = {'Codec': 'AAC',
'Bitrate': 128,
'Channels': 2,
'Samplerate': 44100}
# Ouput->TemplateId
output['TemplateId'] = template_id
outputs = [output]
request.set_Outputs(json.dumps(outputs))
request.set_OutputBucket(oss_bucket)
request.set_OutputLocation(oss_location)
# PipelineId
request.set_PipelineId(pipeline_id)
# 发起API请求并显示返回值
response_str = client.do_action_with_exception(request)
response = json.loads(response_str)
print 'RequestId is:', response['RequestId']
if response['JobResultList']['JobResult'][0]['Success']:
print 'JobId is:', response['JobResultList']['JobResult'][0]['Job']['JobId']
else:
print ('SubmitJobs Failed code:',
response['JobResultList']['JobResult'][0]['Code'],
' message:',
response['JobResultList']['JobResult'][0]['Message'])