

# 使用 AWS CLI 的 MediaLive 示例
<a name="cli_medialive_code_examples"></a>

以下代码示例演示如何通过将 AWS Command Line Interface与 MediaLive 结合使用，来执行操作和实现常见场景。

*操作是大型程序的代码摘录*，必须在上下文中运行。您可以通过操作了解如何调用单个服务函数，还可以通过函数相关场景的上下文查看操作。

每个示例都包含一个指向完整源代码的链接，您可以从中找到有关如何在上下文中设置和运行代码的说明。

**Topics**
+ [操作](#actions)

## 操作
<a name="actions"></a>

### `create-channel`
<a name="medialive_CreateChannel_cli_topic"></a>

以下代码示例演示了如何使用 `create-channel`。

**AWS CLI**  
**创建通道**  
以下 `create-channel` 示例通过传入一个 JSON 文件来创建通道，该 JSON 文件中包含要指定的参数。  
此示例中的通道采集一个 HLS PULL 输入，该输入连接到包含视频、音频和嵌入式字幕的源。该通道创建一个以 Akamai 服务器为目标的 HLS 输出组。输出组包含两个输出：一个用于 H.265 视频和 AAC 音频，另一个用于 Web-VTT 字幕，仅提供英语版本。  
此通道示例的 JSON 包含一个使用 HLS PULL 输入并生成以 Akamai 为目标的 HLS 输出组的通道的最低要求参数。JSON 包含以下主要部分：  
`InputAttachments`，用于为音频指定一个来源，以及为字幕指定一个来源。它不指定视频选择器，这意味着 MediaLive 会提取在来源中找到的第一个视频。`Destinations`，其中包含此通道中单个输出组的两个 IP 地址（URL）。这些地址需要密码。`EncoderSettings`，其中包含分部。`AudioDescriptions`，用于指定通道包含一个音频输出资产，该资产使用来自 InputAttachments 的来源，并产生 AAC 格式的音频。`CaptionDescriptions`，用于指定通道包含一个字幕输出资产，该资产使用来自 InputAttachments 的来源，并以 Web-VTT 格式生成字幕。`VideoDescriptions`，用于指定通道包含一个视频输出资产，该资产具有指定分辨率。`OutputGroups`，用于指定输出组。在此示例中，有一个名为 `Akamai` 的组。使用 HLS PUT 进行连接。输出组包含两个输出。一个输出用于视频资产（名为 `Video_high`），一个用于音频资产（名为 `Audio_EN`）。一个输出用于字幕资产（名为 `WebVTT_EN`）。  
在此示例中，某些参数不包含任何值或包含嵌套的空参数。例如，`Video_and_audio` 输出的 OutputSettings 包含几个以空参数 M3u8Settings 结尾的嵌套参数。虽然必须包含此参数，但您可以省略其一个、多个或所有子项，这意味着子项将采用其默认值或为空。  
适用于此通道示例但未在此文件中指定的所有参数要么采用默认值，要么设置为 null，要么采用由 MediaLive 生成的唯一值。  

```
aws medialive create-channel \
    --cli-input-json file://channel-in-hls-out-hls-akamai.json
```
 的内容`channel-in-hls-out-hls-akamai.json`：  

```
{
    "Name": "News_West",
    "RoleArn": "arn:aws:iam::111122223333:role/MediaLiveAccessRole",
    "InputAttachments": [
        {
            "InputAttachmentName": "local_news",
            "InputId": "1234567",
            "InputSettings": {
                "AudioSelectors": [
                    {
                        "Name": "English-Audio",
                        "SelectorSettings": {
                            "AudioLanguageSelection": {
                                "LanguageCode": "EN"
                            }
                        }
                    }
                ],
                "CaptionSelectors": [
                    {
                        "LanguageCode": "ENE",
                        "Name": "English_embedded"
                    }
                ]
            }
        }
    ],
    "Destinations": [
        {
            "Id": "akamai-server-west",
            "Settings": [
                {
                    "PasswordParam": "/medialive/examplecorp1",
                    "Url": "http://203.0.113.55/news/news_west",
                    "Username": "examplecorp"
                },
                {
                    "PasswordParam": "/medialive/examplecorp2",
                    "Url": "http://203.0.113.82/news/news_west",
                    "Username": "examplecorp"
                }
            ]
        }
    ],
    "EncoderSettings": {
        "AudioDescriptions": [
            {
                "AudioSelectorName": "English-Audio",
                "CodecSettings": {
                    "AacSettings": {}
                },
                "Name": "Audio_EN"
            }
        ],
        "CaptionDescriptions": [
            {
                "CaptionSelectorName": "English_embedded",
                "DestinationSettings": {
                    "WebvttDestinationSettings": {}
                },
                "Name": "WebVTT_EN"
            }
        ],
        "VideoDescriptions": [
            {
                "Height": 720,
                "Name": "Video_high",
                "Width": 1280
            }
        ],
        "OutputGroups": [
            {
                "Name": "Akamai",
                "OutputGroupSettings": {
                    "HlsGroupSettings": {
                        "Destination": {
                            "DestinationRefId": "akamai-server-west"
                        },
                        "HlsCdnSettings": {
                            "HlsBasicPutSettings": {}
                        }
                    }
                },
                "Outputs": [
                    {
                        "AudioDescriptionNames": [
                            "Audio_EN"
                        ],
                        "OutputName": "Video_and_audio",
                        "OutputSettings": {
                            "HlsOutputSettings": {
                                "HlsSettings": {
                                    "StandardHlsSettings": {
                                        "M3u8Settings": {}
                                    }
                                },
                                "NameModifier": "_1"
                            }
                        },
                        "VideoDescriptionName": "Video_high"
                    },
                    {
                        "CaptionDescriptionNames": [
                            "WebVTT_EN"
                        ],
                        "OutputName": "Captions-WebVTT",
                        "OutputSettings": {
                            "HlsOutputSettings": {
                                "HlsSettings": {
                                    "StandardHlsSettings": {
                                        "M3u8Settings": {}
                                    }
                                },
                                "NameModifier": "_2"
                            }
                        }
                    }
                ]
            }
        ],
        "TimecodeConfig": {
            "Source": "EMBEDDED"
        }
    }
}
```
**输出：**  
输出重复 JSON 文件的内容，再加上以下值。所有参数均按字母顺序排序。  
通道的 `ARN`。ARN 的最后一部分是唯一的通道 ID。`EgressEndpoints` 在此通道示例中为空，因为它仅用于 PUSH 输入。在应用时，它会显示内容被推送到的 MediaLive 上的地址。`OutputGroups`、`Outputs`。它们显示输出组和输出的所有参数，包括您未包含但与此通道相关的参数。参数可能为空（可能表示此通道配置中禁用该参数或功能），也可能显示适用的默认值。`LogLevel` 设置为默认值（DISABLED）。`Tags` 设置为默认值（null）。`PipelinesRunningCount` 和 `State` 显示通道的当前状态。  
有关更多信息，请参阅《AWS Elemental MediaLive 用户指南》**中的[从头开始创建通道](https://docs.aws.amazon.com/medialive/latest/ug/creating-channel-scratch.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》**中的 [CreateChannel](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/medialive/create-channel.html)。

### `create-input`
<a name="medialive_CreateInput_cli_topic"></a>

以下代码示例演示了如何使用 `create-input`。

**AWS CLI**  
**创建输入**  
以下 `create-input` 示例通过传入一个 JSON 文件来创建 `HLS PULL` 输入，该文件中包含适用于此类输入的参数。此输入示例的 JSON 为输入指定了两个来源（地址），以支持采集中的冗余。这些地址需要密码。  

```
aws medialive create-input \
    --cli-input-json file://input-hls-pull-news.json
```
 的内容`input-hls-pull-news.json`：  

```
{
    "Name": "local_news",
    "RequestId": "cli000059",
    "Sources": [
            {
                    "Url": "https://203.0.113.13/newschannel/anytownusa.m3u8",
                    "Username": "examplecorp",
                    "PasswordParam": "/medialive/examplecorp1"
            },
       {
                    "Url": "https://198.51.100.54/fillervideos/oceanwaves.mp4",
                    "Username": "examplecorp",
                    "PasswordParam": "examplecorp2"
            }
    ],
    "Type": "URL_PULL"
}
```
**输出：**  
输出重复 JSON 文件的内容，再加上以下值。所有参数均按字母顺序排序。  
输入的 `Arn`。ARN 的最后一部分是唯一的输入 ID。`Attached Channels`，对于新创建的输入始终为空。`Destinations`，在本示例中为空，因为它仅用于 PUSH 输入。输入的 `Id`，与 ARN 中的 ID 一样。`MediaConnectFlows`，在本示例中为空，因为它仅用于 MediaConnect 类型的输入。`SecurityGroups`，在本示例中为空，因为它仅用于 PUSH 输入。此输入的 `State`。`Tags`，为空（此参数的默认值）。  
有关更多信息，请参阅《AWS Elemental MediaLive 用户指南》**中的[创建输入](https://docs.aws.amazon.com/medialive/latest/ug/create-input.html)。  
+  有关 API 详细信息，请参阅《AWS CLI 命令参考》中的 [CreateInput](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/medialive/create-input.html)**。