通过阅读本文,您可以了解通过服务端SDK调用OpenAPI发起并查询智能媒体服务转码任务的示例代码。
使用说明
发起转码任务时,需要先根据用户所提供的region(提供服务的区域)、name(转码任务名称)、input_path(转码任务的输入OSS路径)、output_path(转码任务的输出OSS路径)和template_id(转码模板ID)参数提交转码任务。转码任务处理成功后,可以根据返回的job_id(任务ID)查询该转码任务信息。
转码任务参数需注意以下几点:
- region目前仅支持服务地域中的区域。
- name可以为空。
- input_path、output_path必须和region在同一区域。
- template_id可通过转码模板管理页面获取。
示例代码
您可以通过阿里云OpenAPI开发者门户在线调试。
import json
import os
import sys
from typing import List
from alibabacloud_ice20201109 import models
from alibabacloud_ice20201109.client import Client
from alibabacloud_tea_openapi.models import Config
class Sample:
""" 初始化客户端
* @param accessKeyId 阿里云 AK
* @param accessKeySecret 阿里云 SK
* @param regionId 提供服务的区域
* @return 发送请求的客户端
"""
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
region_id: str,
) -> Client:
config = Config()
config.access_key_id = access_key_id
config.access_key_secret = access_key_secret
config.region_id = region_id
config.endpoint = f'ice.{region_id}.aliyuncs.com'
return Client(config)
# 读取命令行参数
@staticmethod
def main(
args: List[str],
) -> None:
region = args[0]
name = args[1]
input_path = args[2]
output_path = args[3]
template_id = args[4]
# 初始化客户端
client = Sample.create_client(os.getenv('ACCESS_KEY_ID'), os.getenv('ACCESS_KEY_SECRET'), region)
# 构造提交任务请求
request = models.SubmitTranscodeJobRequest(
name=name,
# 输入信息
input_group=[
models.SubmitTranscodeJobRequestInputGroup(
type='OSS',
media=input_path
)
],
# 输出信息
output_group=[
models.SubmitTranscodeJobRequestOutputGroup(
output=models.SubmitTranscodeJobRequestOutputGroupOutput(
type='OSS',
media=output_path
),
process_config=models.SubmitTranscodeJobRequestOutputGroupProcessConfig(
transcode=models.SubmitTranscodeJobRequestOutputGroupProcessConfigTranscode(
template_id=template_id
)
)
)
]
)
# 发送提交任务请求
response = client.submit_transcode_job(request)
# 打印结果信息
print('[LOG]', json.dumps(response.to_map()))
# 提取任务ID,并构造查询任务请求
job_id = response.body.transcode_parent_job.parent_job_id
query_request = models.GetTranscodeJobRequest(
job_id=job_id
)
# 发送查询任务情况请求
query_response = client.get_transcode_job(query_request)
# 打印结果信息
print('[LOG]', json.dumps(query_response.to_map()))
if __name__ == '__main__':
Sample.main(sys.argv[1:])