

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

下列程式碼範例示範如何使用 AWS Command Line Interface 搭配 MediaLive 來執行動作和實作常見案例。

*Actions* 是大型程式的程式碼摘錄，必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數，但您可以在其相關情境中查看內容中的動作。

每個範例均包含完整原始碼的連結，您可在連結中找到如何設定和執行內容中程式碼的相關指示。

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

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

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

以下程式碼範例顯示如何使用 `create-channel`。

**AWS CLI**  
**建立頻道**  
下列 `create-channel` 範例會透過傳入包含您要指定之參數的 JSON 檔案來建立頻道。  
此範例中的頻道會擷取 HLS PULL 輸入，連接到包含視訊、音訊和內嵌字幕的來源。頻道會建立一個 HLS 輸出群組，並將 Akamai 伺服器作為目的地。輸出群組包含兩個輸出：一個用於 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。  
套用至此範例頻道但未在此檔案中指定的所有參數都會採用預設值、設定為 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)。