使用 AWS CLI 的 MediaLive 示例 - AWS Command Line Interface

本文档仅适用于 AWS CLI 版本 1。有关 AWS CLI 版本 2 的相关文档,请参阅版本 2 用户指南

使用 AWS CLI 的 MediaLive 示例

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

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

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

主题

操作

以下代码示例演示了如何使用 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 上的地址。OutputGroupsOutputs。它们显示输出组和输出的所有参数,包括您未包含但与此通道相关的参数。参数可能为空(可能表示此通道配置中禁用该参数或功能),也可能显示适用的默认值。LogLevel 设置为默认值(DISABLED)。Tags 设置为默认值(null)。PipelinesRunningCountState 显示通道的当前状态。

有关更多信息,请参阅《AWS Elemental MediaLive 用户指南》中的从头开始创建通道

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CreateChannel

以下代码示例演示了如何使用 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 输入。此输入的 StateTags,为空(此参数的默认值)。

有关更多信息,请参阅《AWS Elemental MediaLive 用户指南》中的创建输入

  • 有关 API 详细信息,请参阅《AWS CLI 命令参考》中的 CreateInput