亚马逊AWS官方博客

Amazon Interactive Video Service – 将视频直播添加到您的应用程序和网站

今天,我很高兴地为大家介绍新推出的 Amazon Interactive Video Service,您可以使用该服务将视频直播直接添加到自己的应用程序和网站中。如果您和我一样,一定会被该服务的精巧构思所折服,它的设计团队将交互功能、低延迟和视频直播集成到一个应用程序中,使一切都变得如此简单。

使用该服务时,您可以通过 Amazon Interactive Video Service (IVS) 控制台或 API 创建一个频道。然后,您可以使用任何标准流式处理软件将视频流传输到此频道,接下来,该服务会执行将视频直播提供给世界各地所有观众所需的一切工作。该服务包括一个播放器 SDK,可直接将视频直播集成到您的 Web、iOS 或 Android 项目中。

即使它只提供上述功能,我想,我也会对该服务非常满意。但是它的设计团队付出了更多努力,添加了另外两项关键功能,造就了该服务的与众不同之处。

首先,视频的延迟时间很短,这意味着从广播到视频显示在观众屏幕上的时间可以低至 2-3 秒。低延迟非常重要,因为此服务的目的是帮助您构建交互式实时应用程序,这只有在延迟非常小的情况下才有可能实现。

其次,设计团队在服务中增加了与视频一起发送时控元数据的功能,以便您可以在直播流中的关键点触发应用程序中的事件。举例来说,您可以发送一个事件,提醒观看者实时调查已开放,您的应用程序可以随即做出响应,并允许观众一边观看视频直播一边投票。

这两个功能结合在一起,意味着您可以在自己的网站和应用程序中,与观众建立更有价值的联系,从而打造非凡体验。例如,如果您正在现场直播产品发布会,则可以同步额外的产品信息,以便在视频中展示新产品。您甚至可以显示“立即购买”按钮,让观众可以在直播中购买他们正在观看的同款产品。

在过去几个月中,我一直在 Twitch.tv 上运行实时问答测验,这项新服务使我想到,我可以直接在自己的网站上构建更具个性化且更加协调的版本。下面,我来展示一下如何通过打开 Amazon IVS 控制台并创建频道来构建类似的内容。

在 Amazon IVS 控制台的第一个屏幕上,我们会看到一个名为创建频道的按钮,单击此按钮即可开始创建频道。

我给我的频道起个名字,然后选择默认配置,这意味着我想以“全高清”格式传送视频,并且希望低延迟。然后,单击底部的创建频道按钮。

几秒钟后,我收到一条消息,提示已成功创建频道。屏幕上有一个开始使用部分,其中介绍了如何配置用于流式传输视频的计算机或设备。

在同一屏幕上,我们可以看到一些视频流配置信息。在开始向该服务发送视频之前,我们需要设置提取服务器视频流键这两项信息。

我使用名为 XSplit Broadcaster 的软件包进行在线直播,但无论您使用何种广播软件,接下来的步骤都大同小异。下面,我设置一个新输出,然后选择自定义 RTMPS

在新 RTMPS 输出的属性屏幕中,添加名称和描述。然后添加从控制台的视频流配置部分复制的 RTMPS URL。我们还需要将视频流键添加到视频流名称文本框中(此项在不同软件中使用不同的名称,您可以查看广播软件的文档,以确定应该将视频流键添加到何处)

我们已经完成了输出的配置,现在可以向这个新的自定义 RTMPS 输出发送广播了。在幕后,软件开始将视频和音频流式传输到 Amazon Interactive Video Service。

回到控制台,在“直播流”部分,现在应该能看到视频直播显示在控制台中。根据我的经验,开始流式传输视频需要几秒钟时间。

如果想将该视频直播添加到网站,我们需要使用播放器 SDK。在控制台的“播放器配置”部分,可以看到播放 URL,我们需要使用该 URL 来配置播放器播放自己的视频。

构建此服务的团队在 Codepen 上创建了一个出色的示例项目,下面我们将对其进行修改,用于测试我的视频并创建我的测验问题。本示例使用 JavaScript 播放器 SDK,我们只需要设置 playbackUrl 参数,使其指向我们新创建的播放 URL就可以播放视频了。完成此操作后,视频流就会显示在网页上。

这个示例项目中有一些用于处理我前面提到过的时控元数据功能的代码。基本上,当我们将元数据发送到服务时,它会将其转发给播放器 SDK 以触发事件。然后,我们就可以处理此事件,用它做一些有趣的事情。在此示例中,我们添加了一个事件侦听器,用于侦听 PlayerEventType.TEXT_METADATA_CUE 事件,然后使用传递给函数的 cue 对象显示一些屏幕 HTML 按钮,用户可以使用这些按钮在调查中投票。

player.addEventListener(PlayerEventType.TEXT_METADATA_CUE, function (cue) {
    const metadataText = cue.text;
    triggerQuiz(metadataText);
});

在广播期间的任何时间,我们都可以使用 PutMetadata API 将元数据发送到频道。例如,如果我们使用 AWS CLI 发送以下命令,则数据将发送至服务,然后在几秒钟后,我的 JavaScript 代码中将开始运行 PlayerEventType.TEXT_METADATA_CUE 事件。

payload='{"question": "In which year did Jeff Barr Start a blog at Amazon?","answers": [ "1992", "2004", "2008", "2015"],"correctIndex": 1}'

aws ivs put-metadata --channel-arn arn:aws:ivs:us-west-2:365489315573:channel/XBoZcusef81m --metadata "$payload" --region us-west-2

如下图所见,调查 HTML 元素作为叠加层显示在视频直播之上,用户可以与之互动,并在调查中投票。

Amazon Interactive Video Service (Amazon IVS) 采用按使用量付费的定价模式,根据输入到 Amazon IVS 的视频总时长和交付给观众的视频输出总时长来收取费用。您可以在产品页面的定价部分中更深入地了解通常情况下产生的费用。

Amazon IVS 控制台和 API 现已在欧洲(爱尔兰)美国东部(弗吉尼亚北部)美国西部(俄勒冈)区域推出。您只能在这些区域中创建和修改频道,但可以通过一个专为视频直播优化过的托管网络基础设施,在全球范围内进行视频提取和交付。如需获取有关服务全球覆盖情况的更多详细信息,请查看“常见问题”解答。

希望大家能够像我一样喜欢这项服务。非常期待看到诸位的构建成果。

祝直播愉快!

— Martin