实时视频是企业与客户和利益相关者保持联系的一种流行而有效的机制。随着业务限制的不断发展以及内容制作人在工作室之外(包括在自己家中)制作现场内容的挑战,AWS的现场视频制作解决方案可以帮助各行各业的企业快速适应。
该博客演示了如何在Amazon Elastic Compute Cloud(Amazon EC2)和AWS Elemental Media Services上使用vMix配置自己的基于云的实时生产和流媒体平台。
要求
要继续进行,您将需要以下组件:
- 一个AWS账户
- 安装了Microsoft Windows Server 2019 Base AMI的g4dn.2xlarge EC2实例
- NVIDIA GRID驱动程序
- Microsoft Windows RDP客户端
- Teradici GPU 图形代理(需要许可证)
- 您的本地计算机上安装了Teradici PCoIP客户端。
- Microsoft .NET Framework 3.5版
- vMix Live Production和Streaming软件(需要许可证,60天免费试用)
- Newtek NDI工具(如果您希望使用NDI作为视频传输协议)
- VLC媒体播放器
费用免责声明
免费套餐未涵盖构建此解决方案所需的AWS资源,并且在运行时会产生额外费用。您负责运行此解决方案时使用的AWS服务的成本。记住,一旦完成,请清理您的资源,以避免长期收费。
设置和配置GPU优化的EC2实例
提供和配置用于实时视频制作的实例有不同的选项:
- 无需手动构建,您可以访问AWS Marketplace并订阅Teradici提供的预构建AMI,该AMI已安装,配置并许可了NVIDIA GRID驱动程序和Teradici CAS软件,作为整体使用成本的一部分。 。
- 您可以使用Windows Graphics或GraphicsPro 工作站在Amazon WorkSpaces中设置虚拟图形工作站,该工作站已安装NVIDIA驱动程序,但需要手动配置Teradici。
- 您可以在安装了Microsoft Windows Server 2019 Base AMI的情况下配置GPU优化的EC2实例,这也需要手动配置。
如果您从AWS Marketplace购买了Windows AMI的Teradici Cloud Access软件,则可以跳过此初始配置部分。否则, 此博客文章将重点介绍如何使用g4 GPU优化的EC2实例从基础AMI手动构建现场制作工作室。
g4实例是用于实时视频应用程序的多功能图形工作站。它可以支持并发硬件视频编码和解码(使用高级压缩编解码器,例如最高12位深度的H.265),适合将实时视频流传入和传出实例。它具有2,560个CUDA内核,使其能够以高达及高于超高清(UHD)的分辨率实时实时合成多个实时,图形视频和动画元素。g4实例还支持NVIDIA GRID功能,以支持低延迟,高质量的PCoIP协议进行命令和控制,同时释放CPU来处理现场制作的音频和操作功能。
首先,我们将提供一个g4实例作为该解决方案的核心基础架构。
1.在AWS管理控制台中,选择EC2并使用Microsoft Windows Server 2019 Base AMI 设置一个g4dn.2xlarge(或更好)的EC2实例。
2.在为此实例配置安全组时,请确保允许从您的IP地址到实例的通信,以便您可以使用Teradici和RDP客户端进行访问。对于本教程,您可以允许“ 所有流量”,并将源锁定在您的IP地址上。
3.完成实例的2/2状态检查后,使用您选择的RDP客户端连接到实例。这样一来,您可以以更轻松的方式安装本教程所需的正确驱动程序和软件。您可以通过选择EC2实例并选择“ 连接”以找到DNS名称,用户名和密码来找到连接信息。
4.连接到实例后,安装NVIDIA GRID驱动程序。
5.为此,请安装AWS命令行界面(AWS CLI)。
6.在PowerShell AWS configure中配置AWS CLI凭证。
aws configure
7.从Amazon S3下载NVIDIA GRID驱动程序。选择PowerShel l,然后以Administrator身份运行,然后将以下内容粘贴到PowerShell中以运行:
$Bucket = "ec2-windows-nvidia-drivers"$KeyPrefix = "latest"$LocalPath = "C:\Users\Administrator\Desktop\NVIDIA"$Objects = Get-S3Object -BucketName $Bucket -KeyPrefix $KeyPrefix -Region us-east-1 foreach ($Object in $Objects) {$LocalFileName = $Object.Key if ($LocalFileName -ne '' -and $Object.Size -ne 0) {$LocalFilePath = Join-Path $LocalPath $LocalFileName Copy-S3Object -BucketName $Bucket -Key $Object.Key -LocalFile $LocalFilePath -Region us-east-1}
8.这将下载NVIDIA GRID安装程序。运行安装程序的命令,您可以在以下路径中找到该命令:
C:\Users\Administrator\Desktop\NVIDIA\391.57_grid_win10_server2016_64bit_international.exe
9.通过命令提示符重新启动计算机:
cmd shutdown /r
10.要下载vMix,必须在实例上启用.NET Framework 3.5。通过选择“ 管理”,然后选择“ 添加角色和功能”,在服务器管理器中启用此功能。选择选择安装类型,然后选择基于角色的安装或基于功能的安装。在“ 选择功能”页上,选择“ .Net Framework 3.5功能”进行安装。
11.安装vMix。
12.安装NDI工具。
使用Teradici访问EC2实例
接下来,我们将配置实例以使用Teradici Graphics Agent而不是RDP客户端访问我们的现场制作工作室。Teradici图形代理是基于行业领先的PCoIP技术构建的云访问软件。与RDP相比,它提供了更流畅,低延迟的桌面虚拟化体验。
1.使用RDP访问EC2实例,下载并安装Teradici Graphics Agent Host ,该主机用于将主机实例的像素输出安全地传递到PCoIP客户端。
2. 在您的本地计算机上下载Teradici PCoIP客户端。该客户端启用到远程EC2实例的安全连接。
3.停止使用RDP客户端访问EC2,而是使用Teradici客户端。通过提供IP地址或域名,连接名称以及用户名和密码(如果出现提示)来连接到实例。
故障排除技巧:如果您无法连接,请检查您是否正在使用VPN,因为它可能会阻止您访问实例。如果未使用VPN,但仍无法连接,请检查实例的安全组,并确保已允许从IP地址访问必要的端口。
设置本地相机源,图形和音乐
现在,让我们探索vMix以了解可行的方法。您可以向vMix添加许多不同类型的输入,例如图像,图形叠加,远程和本地摄像机源,音乐等。在此示例中,让我们添加一个示例图形叠加层。选择添加输入并添加标题/ XAML以选择要添加的标题覆盖。您也可以编辑标题和说明。以下是Big Buck Bunny [AH1]和图形叠加层播放的示例视频:
您可以通过选择“ 添加输入”并选择“ 音频”以选择一个音频文件来插入MP3或WAV文件以添加背景音乐或音频剪辑。
您还可以通过选择“ 摄像机”并选择本地摄像机源来添加本地摄像机源。
如果您正在协调现场广播,则可以允许主持人或制作人使用“ 视频通话”输入来呼叫vMix 。如果您需要访问参与广播的人员的远程桌面屏幕,例如在电子竞技比赛中需要访问实时游戏玩法和玩家的观察者供稿,则可以使用vMix Desktop Capture实时直播他们桌面上发生的事情。
提示:为了在将vMix与Teradici结合使用时获得最佳性能,请在“性能”选项卡下,将显示方法更改为在vMix设置中平滑。
设置远程摄像机源
因此,您知道如何添加本地资源和输入。现在,您可以设置远程摄像机源,以将NDI视频流发送到vMix。使用先前在vMix EC2实例上安装的NewTek NDI工具可以完成此操作。
网络设备接口(NDI)是用于传输实时视频的网络协议堆栈。NDI的创建者VizRT授予软件实施的免版税许可。VizRT发布了适用于Windows,Linux和MacOS的SDK,并且NDI已集成到vMix中。
NDI采用低延迟的仅i帧视频压缩,其比特率通常在100 Mbps(1080i50)和250 Mbps(UHDp60)之间。视频帧与多通道,未压缩的音频和元数据消息(例如摄像机计数和PTZF遥测)一起复用。NDI的4.0版及更高版本合并了多TCP,以促进在整个AWS网络中的可靠传输。
NDI支持使用mDNS在视频应用程序之间进行自动流发现。如果您希望自动发现VPC中启用NDI的g4实例之间的流,请考虑将传输网关附加到启用了多播的VPC。mDNS使用UDP端口5353上的IPv4地址224.0.0.251。
另外,您可以使用NTek Access Manager(在NewTek NDI Tools软件套件中包含)手动发现实例之间的视频流。手动流发现直接通过TCP端口5960在发送和接收设备之间发生。
设备之间的音频/视频有效载荷数据包流在TCP端口5961和5962上开始。如果建立了其他流,则后续端口将递增分配。
本教程使用NDI来帮助以高质量,低延迟的方式交付广播质量的视频。这篇博客文章将展示如何使用NewTek NDI工具手动发现NDI视频流:
1.要设置远程摄像机源,请设置另一个EC2实例。由于您仅播放示例视频,因此可以选择AWS Free Tier涵盖的t2.micro实例,以避免产生额外费用。
2.再次选择Windows 2019 Server Base AMI。
3.在与vMix实例相同的VPC中配置此远程源EC2实例。
4.允许两个EC2实例相互通信。您可以通过将它们放在相同的安全组中并自引用该安全组来做到这一点。
一个。为ALL Traffic添加一个自引用入站规则。这允许来自安全组内资源的任何流量相互通信。
5.访问远程实例。您可以使用RDP客户端。
6.安装NDI工具和VLC Media Viewer以模拟来自远程源的视频。
7.配置VLC以将视频和音频发送到NewTek NDI VLC插件。打开VLC Media Player,转到工具 → 首选项。对于音频,将输出更改为NDI音频输出。对于视频,将输出更改为NDI video output。
8. 保存更改,然后重新启动VLC Media Viewer。
9.下载视频,然后在VLC Media Viewer中打开它。播放时,仅应显示播放进度条和黑屏。这是因为视频以NDI流的形式在网络上播放。如果打开NDI Video Monitor,则会发现网络上运行的NDI源的播放。
10.在两个EC2实例上,请确保禁用Windows Defender防火墙,因为这可能会阻止两个实例之间的通信。
11.现在是时候将其添加到vMix中的源了。
12.切换回Teradici以访问vMix实例。在Windows程序中,搜索NDI Access Manager。在“ 远程源”选项卡上,添加具有远程视频的实例的IP地址。
此过程使您可以手动发现实例之间的NDI流。在vMix上,选择“ 添加输入”,然后选择“ NDI /桌面捕获”,它将自动检测同一网络上的NDI源。
添加远程NDI源作为输入。现在,您的远程NDI源正在vMix中播放。
故障排除:如果您无法获取NDI源,并且实例之间似乎存在通信问题(例如,您无法成功ping通实例),请检查是否已禁用Windows Defender防火墙。如果这不起作用,请仔细检查安全组,以确保实例位于同一安全组中。另外,请检查安全组是否自我引用以允许两个实例之间的通信。
使用AWS Elemental Media Services设置Web分发组件
要将此实时流分发到您自己的网站,您可以结合使用AWS Elemental Media Services,包括AWS Elemental MediaLive和AWS Elemental MediaPackage。与Amazon CloudFront一起用于内容交付时,您可以构建高可用性,弹性和可扩展性的架构,以向全球观众交付实时流。
AWS Elemental MediaLive是广播级的实时视频处理服务。MediaLive摄取冗余的实时输入提要,并将它们实时转码为两个自适应比特率(ABR)HTTP实时流(HLS)输出流。AWS Elemental MediaPackage从MediaLive提取输入提要,并将实时流打包为各种格式:HLS,HTTP上的动态自适应流(DASH),Microsoft平滑流(MSS)和通用媒体应用程序格式(CMAF)。
Amazon CloudFront是内容交付网络(CDN)服务,用于以低延迟和高传输速度将数据流交付给单词周围的查看者。
要建立此Web分发,请使用AWS解决方案“ AWS上的实时流传输”。解决方案是一个CloudFormation模板,它将旋转上面显示的架构。
1.通过在新选项卡中打开“ AWS解决方案上的实时流”并在AWS控制台中选择“ 启动解决方案”来部署CloudFormation模板。
2. 为MediaLive安全组指定输入CIDR阻止范围。放置将实时流发送到MediaLive的vMix EC2实例的IP地址。
一个。在部署此解决方案时,请遵循部署指南以更详细地了解此体系结构和CloudFormation参数。
3.部署CloudFormation模板大约需要15分钟。等待,直到CloudFormation模板显示CREATE_COMPLETE为止。
需要对该架构进行一些小的更改:默认情况下,AWS解决方案播放一个示例VOD资产。您需要为MediaLive配置自己的RTMP输入,以便可以从vMix输出流。
1.在AWS管理控制台中,转到AWS Elemental MediaLive。
2.在左侧导航窗格中,选择输入,然后选择创建输入。
3.给您的输入起一个名字。对于输入类型,选择RTMP(推动)。
4.将“ 网络”模式保留为“公共”,并使用启动CloudFormation模板时创建的现有安全组。
5.在输入目标下,您可以指定两个输入流以实现高可用性和冗余。vmix1 / a用于表示第一个RTMP输入,而vmix2 / b用于表示第二个RTMP输入。
6. 创建新输入。
7.在MediaLive的左侧导航窗格中,选择“ 频道”。您需要将刚刚创建的输入添加到AWS Solution为您创建的MediaLive通道中。
8.选择现有的MediaLive频道以查看详细信息,然后选择“修改前该频道必须处于停止状态”。
9.停止后,从下拉菜单中选择Channel Actions > Edit channel。
10.在左侧,“输入附件”旁边,选择“ 添加”以将新创建的输入添加到MediaLive频道
11.选择您的输入,然后选择确认。记下输入目标,因为您将需要它们来配置vMix输出流。
一个。输入目标应类似于:
rtmp:// <您的IP地址> / vmix1 / a
rtmp:// <您的IP地址> / vmix2 / b
b。MediaLive有两种不同的模式:标准频道和单管道频道。单管道通道为您创建一个管道,而标准管道根据您的要求创建两个独立的管道以实现高可用性。AWS上的实时流解决方案创建一个标准通道,并需要具有两个冗余输入目标的标准输入。单管道通道可与标准或单管道输入一起使用。
C。选择更新频道,然后再次启动MediaLive频道。
分发组件是使用Amazon CloudFront部署的。您可以通过导航到先前启动的实时流堆栈的AWS CloudFormation输出部分找到CloudFront URL。您应该看到8个输出,包括一个名为DemoConsole的输出,这是一个CloudFront URL。这是Web分发,您可以在其中查看实时流。
将vMix实时流输出到您的Web发行版
现在,将vMix配置为实时流式传输到您的Web发行版。
1.使用Teradici客户端,在运行vMix的情况下访问EC2实例。
疑难解答提示:如果您在访问EC2实例时遇到问题,请确保未使用VPN。另外,请确认本地计算机上的IP地址没有更改。如果已更改,请更新安全组以允许从您的新IP地址进行访问。
2.在vMix的底部,流旁边有一个齿轮图标,代表“ 流设置”。打开流设置以指定RTMP输出目的地。
3.选择“ 自定义RTMP服务器”作为目标。为URL添加RTMP输入目标,并指定流密钥,第一个管道为“ a”,第二个管道为“ b”。这是在为AWS Elemental MediaLive添加新输入时指定的输入目标之一。它看起来应该像这样:
rtmp:// <您的IP地址> / vmix1 / a
4.保存并关闭。单击流以开始流。单击HSL旁边的预览按钮,您应该在CloudFront Web发行版上看到来自vMix的实时流输出!您还可以设置vMix以流式传输到Twitch.tv,Facebook Live和YouTube TV 等平台,以同时广播到多个地方。
AWS Elemental MediaLive从vMix提取您的输入提要,并将实时流内容转码为自适应比特率HTTP实时流(HLS)流作为输出。然后将其发送到CloudFront发行版,以低延迟交付给全球数百万的观看者。
在此博客文章中,我们仅设置了一个输入提要,但AWS Elemental MediaLive最多支持两个输入提要,以实现冗余和高可用性。最佳实践是在生产环境中实现两个冗余输入提要。
结论
恭喜你!您已在AWS上配置了自己的完全远程虚拟化实时视频制作环境,并已成功广播到您自己的Web分发中。
文章来源:亚马逊AWS
评论前必须登录!
注册