CLI集成示例

阿里云CLI(Alibaba Cloud Command Line Interface)是基于OpenAPI构建的通用命令行工具,您可以通过阿里云CLI实现自动化管理和维护媒体处理。本文将为您介绍使用阿里云CLI调用媒体处理的操作步骤和示例。

前置概念

阅读本文前,若您还不了解阿里云CLI,请参见什么是阿里云CLI

安装阿里云CLI

使用阿里云CLI前,您需要先安装阿里云CLI。阿里云CLI为用户提供了Windows、Linux和macOS三种操作系统下的安装服务,请根据您使用设备的操作系统选择对应的安装服务。

您也可使用阿里云提供的云命令行调试阿里云CLI命令。关于云命令行的更多信息,请参阅什么是云命令行

配置阿里云CLI

重要

阿里云账号(主账号)拥有所有产品API的管理和访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。

使用阿里云CLI之前,您需要在阿里云CLI中配置身份凭证、地域ID等信息。阿里云CLI支持多种身份凭证,详情请参见身份凭证类型。本文操作以AK类型凭证为例,具体操作步骤如下:

  1. 您需要创建一个RAM用户并授予相应操作权限。具体操作,请参见创建RAM用户为RAM用户授权

    重要

    本示例需要您为RAM用户授予AliyunMTSFullAccess权限策略。您也可以使用自定义策略,更多信息请参见媒体处理自定义权限策略参考

  2. 创建RAM用户并授权后,您需要创建RAM用户对应的AccessKey,并记录AccessKey IDAccessKey Secret,以便后续配置身份凭证使用。具体操作,请参见创建AccessKey

  3. 您需要获取并记录可用的地域ID,以便后续配置身份凭证使用。阿里云CLI将使用您指定的地域发起API调用,可用地域请参见服务接入点

    说明

    使用阿里云CLI过程中您可使用--region选项指定地域发起命令调用,该选项在使用时将忽略默认身份凭证配置及环境变量设置中的地域信息。详情请参见API命令可用选项

  4. 使用RAM用户的AccessKey配置AK类型凭证,配置文件命名为AkProfile。具体操作,请参见配置示例

生成CLI命令示例

  1. 登录媒体处理API调试列表

  2. 在API调试界面左侧搜索框中可搜索您需要使用的API。在参数配置中根据API文档信息填写参数,单击参数配置右侧的CLI示例页签即可生成携带参数的命令示例。

    image

    • 单击image按钮,可唤出云命令行并在其中快速完成命令调试。

    • 单击image按钮,将CLI示例复制到剪贴板中,可粘贴至本地Shell工具中运行。

      • 复制CLI示例到本地Shell工具中进行调试时请注意参数格式。关于阿里云CLI命令参数使用格式的详细信息,请参见参数格式说明

      • OpenAPI门户生成示例中会默认添加--region选项,复制命令到本地调用时阿里云CLI将忽略默认身份凭证配置及环境变量设置中的地域信息,优先使用指定的地域调用命令,您可根据需要对该选项进行删除或保留。

调用API

命令结构

阿里云CLI的通用命令行结构如下。更多详情,请参见命令结构

aliyun <command> <subcommand> [options and parameters]

常用命令选项

在阿里云CLI中,您可根据需要使用命令行选项,用来修改命令的默认行为或为命令提供额外功能。常用命令行选项如下:

  • --profile <profileName>:使用--profile选项并指定有效配置名称profileName后,阿里云CLI将忽略默认身份凭证配置及环境变量设置,优先使用指定的配置进行命令调用。

  • --help:在需要获取帮助的命令层级处键入--help选项,即可获取该命令的帮助信息。更多详情,请参见获取帮助信息

更多详细信息,请参见API命令可用选项

调用示例

示例一:以下代码示例将为您展示如何使用--help选项获取媒体处理支持阿里云CLI调用API列表。您也可在API概览中查看支持调用的API。

  1. 执行命令。

    aliyun mts --help
  2. 输出结果。

    image

示例二:以下示例将为您展示如何使用阿里云CLI调用媒体处理中的QueryMediaInfoJobList命令,查询媒体信息作业。QueryMediaInfoJobList命令的详细介绍,请参见QueryMediaInfoJoList

  1. 执行命令。

    aliyun mts QueryMediaInfoJobList --region cn-hangzhou --MediaInfoJobIds '23ca1d184c0e4341e5b665e2a12****'
  2. 输出结果。

    {
      "NonExistMediaInfoJobIds": {
        "String": [
          "11ce1d184c0e4341e5b665e2a12****"
        ]
      },
      "RequestId": "46A04AA5-B119-41BB-B750-7C5327AC3E7A",
      "MediaInfoJobList": {
        "MediaInfoJob": [
          {
            "CreationTime": "2014-01-10T12:00:00Z",
            "State": "Success",
            "JobId": "23ca1d184c0e4341e5b665e2a12****",
            "UserData": "testid-001",
            "Code": "InvalidParameter.JsonObjectFormatInvalid",
            "Message": "The parameter ”*” does not conform to the JSON Object specification",
            "PipelineId": "88c6ca184c0e432bbf5b665e2a15****",
            "Async": true,
            "Input": {
              "Object": "example.mp4",
              "Location": "oss-cn-hangzhou",
              "Bucket": "example-bucket"
            },
            "MNSMessageResult": {
              "MessageId": "123",
              "ErrorMessage": "The parameter \\\"Input\\\" does not conform to the JSON Object specification",
              "ErrorCode": "InvalidParameter.JsonObjectFormatInvalid"
            },
            "Properties": {
              "Width": "1280",
              "Height": "720",
              "Duration": "17.226000",
              "Fps": "25",
              "Bitrate": "1630.045",
              "FileFormat": "QuickTime/MOV",
              "Streams": {
                "VideoStreamList": {
                  "VideoStream": [
                    {
                      "Sar": "1:1",
                      "Height": "1080",
                      "CodecTagString": "[0][0][0][0]",
                      "NetworkCost": {
                        "PreloadTime": "8",
                        "AvgBitrate": "300.34",
                        "CostBandwidth": "10"
                      },
                      "Width": "1920",
                      "Index": "1",
                      "Timebase": "1/1000",
                      "AvgFPS": "23.976025",
                      "PixFmt": "yuv420p",
                      "Lang": "eng",
                      "CodecLongName": "H.264/AVC/MPEG-4 AVC/MPEG-4 part 10",
                      "NumFrames": "100",
                      "Rotate": "180",
                      "Bitrate": "30541090",
                      "HasBFrames": "0",
                      "Profile": "High",
                      "StartTime": "0.042000",
                      "Dar": "16:9",
                      "CodecName": "h264",
                      "Duration": "100",
                      "Fps": "25",
                      "CodecTag": "0x0000",
                      "CodecTimeBase": "1001/48000",
                      "Level": "41",
                      "ColorRange": "700",
                      "ColorTransfer": "R255 G83 B170",
                      "ColorPrimaries": "700"
                    }
                  ]
                },
                "AudioStreamList": {
                  "AudioStream": [
                    {
                      "Timebase": "1/1000",
                      "Index": "1",
                      "SampleFmt": "fltp",
                      "ChannelLayout": "5.1(side)",
                      "Lang": "eng",
                      "Samplerate": "48000",
                      "CodecLongName": "DCA (DTS Coherent Acoustics)",
                      "Channels": "2",
                      "NumFrames": "123",
                      "Bitrate": "1536000",
                      "CodecTagString": "[0][0][0][0]",
                      "StartTime": "0.042000",
                      "CodecName": "acc",
                      "Duration": "123",
                      "CodecTag": "0x0000",
                      "CodecTimeBase": "1/48000"
                    }
                  ]
                },
                "SubtitleStreamList": {
                  "SubtitleStream": [
                    {
                      "Timebase": "1/1000",
                      "Index": "3",
                      "StartTime": "0.000000",
                      "CodecName": "ass",
                      "Lang": "eng",
                      "CodecLongName": "ASS (Advanced SSA) subtitle",
                      "Duration": "1370.116000",
                      "CodecTag": "0x0000",
                      "CodecTimeBase": "0/1",
                      "CodecTagString": "[0][0][0][0]"
                    }
                  ]
                }
              },
              "Format": {
                "StartTime": "0.042000",
                "NumPrograms": "2",
                "Size": "3509895",
                "NumStreams": "1",
                "FormatLongName": "QuickTime/MOV",
                "Duration": "17.226000",
                "Bitrate": "1630.045",
                "FormatName": "mov"
              },
              "FileSize": "3509895"
            }
          }
        ]
      }
    }
    说明

    如果调用媒体处理API后返回错误,您需要根据返回的错误码提示检查传入的请求参数及其取值是否正确。

    您也可以记录下调用返回的RequestID或SDK报错信息,通过阿里云OpenAPI诊断平台进行自助诊断。